From 2e25fa74180525804d9dd73b6a7388d520b8ea33 Mon Sep 17 00:00:00 2001 From: Patrick Bennett Date: Thu, 7 Nov 2024 00:56:27 -0500 Subject: [PATCH] chore: update tealscript, algokit-utils, algokit-client-generator to latest versions (including betas) regenerated clients and updated test fixture for change in return structures (now correct) --- contracts/bootstrap/package.json | 2 +- .../artifacts/StakingPool.approval.teal | 1009 +- .../artifacts/StakingPool.arc32.json | 2 +- .../artifacts/StakingPool.arc56_draft.json | 37814 ++++++----- .../artifacts/StakingPool.src_map.json | 16454 +++-- .../artifacts/ValidatorRegistry.approval.teal | 1593 +- .../artifacts/ValidatorRegistry.arc32.json | 2 +- .../ValidatorRegistry.arc56_draft.json | 56202 ++++++++-------- .../artifacts/ValidatorRegistry.src_map.json | 23230 ++++--- .../contracts/clients/StakingPoolClient.ts | 44 +- .../clients/ValidatorRegistryClient.ts | 365 +- contracts/package.json | 8 +- .../contracts/StakingPool.arc32.json | 2 +- .../contracts/ValidatorRegistry.arc32.json | 2 +- pnpm-lock.yaml | 176 +- ui/package.json | 2 +- ui/src/contracts/StakingPoolClient.ts | 44 +- ui/src/contracts/ValidatorRegistryClient.ts | 365 +- ui/src/utils/tests/fixtures/validators.ts | 22 +- 19 files changed, 68112 insertions(+), 69226 deletions(-) diff --git a/contracts/bootstrap/package.json b/contracts/bootstrap/package.json index 74c284e9..278bc523 100644 --- a/contracts/bootstrap/package.json +++ b/contracts/bootstrap/package.json @@ -11,7 +11,7 @@ }, "license": "MIT", "dependencies": { - "@algorandfoundation/algokit-utils": "7.0.0-beta.16", + "@algorandfoundation/algokit-utils": "7.0.0-beta.21", "algosdk": "2.9.0", "prompts": "^2.4.2", "yargs": "^17.7.2" diff --git a/contracts/contracts/artifacts/StakingPool.approval.teal b/contracts/contracts/artifacts/StakingPool.approval.teal index 5e90c833..c1661c25 100644 --- a/contracts/contracts/artifacts/StakingPool.approval.teal +++ b/contracts/contracts/artifacts/StakingPool.approval.teal @@ -1,15 +1,12 @@ #pragma version 11 +intcblock 0 1 6 64 32 16 128 200 5 1_000_000 300 1000 4 2_100_000 8 100000 400 30857 2 40 48 TMPL_nfdRegistryAppId +bytecblock 0x 0x63726561746f72417070 0x7374616b657273 0x76616c696461746f724964 0x706f6f6c4964 0x0a8101 0x7374616b6564 0x726f756e6473506572446179 0x7374616b65416363756d756c61746f72 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0x0000000000000000 0x62696e526f756e645374617274 0x726577617264416363756d756c61746f72 0x6e756d5374616b657273 0x6c6173745061796f7574 0x75aff61d 0x00000000000000000000000000000000 0x00000000000000000000000000000064 0x6d696e456e7472795374616b65 0x65706f63684e756d626572 0x65776d61 0x151f7c75 0xa2dc51b5 0x572767d1 0x4df8d86e 0x0c2245e1 0x00 -// This TEAL was generated by TEALScript v0.103.2 +// This TEAL was generated by TEALScript v0.105.5 // https://github.com/algorandfoundation/TEALScript // This contract is compliant with and/or implements the following ARCs: [ ARC4 ] -// The following lines of TEAL are used to initialize template variables in scratch slots -pushbytes TMPL_nfdRegistryAppId -btoi -store 200 - // The following ten lines of TEAL handle initial program flow // This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed // Here, action refers to the OnComplete in combination with whether the app is being created or called @@ -17,7 +14,7 @@ store 200 // If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" txn ApplicationID ! -int 6 +intc 2 // 6 * txn OnCompletion + @@ -47,7 +44,7 @@ switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEM // execute createApplication(uint64,uint64,uint64,uint64)void callsub createApplication - int 1 + intc 1 // 1 return // createApplication(creatingContractId: AppID, validatorId: uint64, poolId: uint64, minEntryStake: uint64): void @@ -64,7 +61,7 @@ createApplication: // contracts/stakingPool.algo.ts:102 // creatingContractId === AppID.fromUint64(0) frame_dig -1 // creatingContractId: AppID - int 0 + intc 0 // 0 == bz *if0_else @@ -72,14 +69,14 @@ createApplication: // contracts/stakingPool.algo.ts:104 // assert(validatorId === 0) frame_dig -2 // validatorId: uint64 - int 0 + intc 0 // 0 == assert // contracts/stakingPool.algo.ts:105 // assert(poolId === 0) frame_dig -3 // poolId: uint64 - int 0 + intc 0 // 0 == assert b *if0_end @@ -88,14 +85,14 @@ createApplication: // contracts/stakingPool.algo.ts:107 // assert(validatorId !== 0) frame_dig -2 // validatorId: uint64 - int 0 + intc 0 // 0 != assert // contracts/stakingPool.algo.ts:108 // assert(poolId !== 0) frame_dig -3 // poolId: uint64 - int 0 + intc 0 // 0 != assert @@ -103,7 +100,7 @@ createApplication: // contracts/stakingPool.algo.ts:110 // assert(minEntryStake >= MIN_ALGO_STAKE_PER_POOL, 'staking pool must have minimum entry of 1 algo') frame_dig -4 // minEntryStake: uint64 - int 1000000 + pushint 1000000 >= // staking pool must have minimum entry of 1 algo @@ -111,50 +108,50 @@ createApplication: // contracts/stakingPool.algo.ts:111 // this.creatingValidatorContractAppId.value = creatingContractId - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" frame_dig -1 // creatingContractId: AppID app_global_put // contracts/stakingPool.algo.ts:112 // this.validatorId.value = validatorId - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" frame_dig -2 // validatorId: uint64 app_global_put // contracts/stakingPool.algo.ts:113 // this.poolId.value = poolId - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" frame_dig -3 // poolId: uint64 app_global_put // contracts/stakingPool.algo.ts:114 // this.numStakers.value = 0 - byte 0x6e756d5374616b657273 // "numStakers" - int 0 + bytec 13 // "numStakers" + intc 0 // 0 app_global_put // contracts/stakingPool.algo.ts:115 // this.totalAlgoStaked.value = 0 - byte 0x7374616b6564 // "staked" - int 0 + bytec 6 // "staked" + intc 0 // 0 app_global_put // contracts/stakingPool.algo.ts:116 // this.minEntryStake.value = minEntryStake - byte 0x6d696e456e7472795374616b65 // "minEntryStake" + bytec 18 // "minEntryStake" frame_dig -4 // minEntryStake: uint64 app_global_put // contracts/stakingPool.algo.ts:117 // this.lastPayout.value = globals.round - byte 0x6c6173745061796f7574 // "lastPayout" + bytec 14 // "lastPayout" global Round app_global_put // contracts/stakingPool.algo.ts:118 // this.epochNumber.value = 0 - byte 0x65706f63684e756d626572 // "epochNumber" - int 0 + bytec 19 // "epochNumber" + intc 0 // 0 app_global_put // contracts/stakingPool.algo.ts:120 @@ -163,10 +160,10 @@ createApplication: // contracts/stakingPool.algo.ts:121 // this.binRoundStart.value = globals.round - (globals.round % this.roundsPerDay.value) - byte 0x62696e526f756e645374617274 // "binRoundStart" + bytec 11 // "binRoundStart" global Round global Round - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get % - @@ -174,20 +171,20 @@ createApplication: // contracts/stakingPool.algo.ts:122 // this.stakeAccumulator.value = 0 as uint128 - byte 0x7374616b65416363756d756c61746f72 // "stakeAccumulator" - byte 0x00000000000000000000000000000000 + bytec 8 // "stakeAccumulator" + bytec 16 // 0x00000000000000000000000000000000 app_global_put // contracts/stakingPool.algo.ts:123 // this.rewardAccumulator.value = 0 - byte 0x726577617264416363756d756c61746f72 // "rewardAccumulator" - int 0 + bytec 12 // "rewardAccumulator" + intc 0 // 0 app_global_put // contracts/stakingPool.algo.ts:124 // this.weightedMovingAverage.value = 0 as uint128 - byte 0x65776d61 // "ewma" - byte 0x00000000000000000000000000000000 + bytec 20 // "ewma" + bytec 16 // 0x00000000000000000000000000000000 app_global_put retsub @@ -195,7 +192,7 @@ createApplication: *abi_route_gas: // execute gas()void callsub gas - int 1 + intc 1 // 1 return // gas(): void @@ -211,9 +208,9 @@ costForBoxStorage: // contracts/stakingPool.algo.ts:136 // return SCBOX_PERBOX + totalNumBytes * SCBOX_PERBYTE - int 2500 + pushint 2500 frame_dig -1 // totalNumBytes: uint64 - int 400 + intc 16 // 400 * + retsub @@ -222,11 +219,11 @@ costForBoxStorage: *abi_route_initStorage: // mbrPayment: pay txn GroupIndex - int 1 + intc 1 // 1 - dup gtxns TypeEnum - int pay + intc 1 // pay == // argument 0 (mbrPayment) for initStorage must be a pay transaction @@ -234,7 +231,7 @@ costForBoxStorage: // execute initStorage(pay)void callsub initStorage - int 1 + intc 1 // 1 return // initStorage(mbrPayment: PayTxn): void @@ -248,12 +245,12 @@ initStorage: proto 1 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x dupn 3 // contracts/stakingPool.algo.ts:147 // assert(!this.stakers.exists, 'staking pool already initialized') - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" box_len swap pop @@ -268,32 +265,32 @@ initStorage: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" + bytec 15 // method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:151 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:152 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -304,7 +301,7 @@ initStorage: frame_dig 0 // validatorConfig: (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64) extract 153 8 btoi - int 0 + intc 0 // 0 != frame_bury 1 // isTokenEligible: bool @@ -313,19 +310,19 @@ initStorage: frame_dig 1 // isTokenEligible: bool dup bz *skip_and0 - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == && *skip_and0: bz *ternary0_false - int 100000 + intc 15 // 100000 b *ternary0_end *ternary0_false: - int 0 + intc 0 // 0 *ternary0_end: frame_bury 2 // extraMBR: uint64 @@ -335,10 +332,10 @@ initStorage: // ALGORAND_ACCOUNT_MIN_BALANCE + // extraMBR + // this.costForBoxStorage(7 /* 'stakers' name */ + len() * MAX_STAKERS_PER_POOL) - int 100000 + intc 15 // 100000 frame_dig 2 // extraMBR: uint64 + - int 12807 + pushint 12807 callsub costForBoxStorage + frame_bury 3 // PoolInitMbr: uint64 @@ -365,8 +362,8 @@ initStorage: // contracts/stakingPool.algo.ts:163 // this.stakers.create() - byte 0x7374616b657273 // "stakers" - int 12800 + bytec 2 // "stakers" + pushint 12800 box_create pop @@ -376,9 +373,9 @@ initStorage: frame_dig 1 // isTokenEligible: bool dup bz *skip_and1 - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == && @@ -393,7 +390,7 @@ initStorage: // assetAmount: 0, // }) itxn_begin - int axfer + intc 12 // axfer itxn_field TypeEnum // contracts/stakingPool.algo.ts:168 @@ -410,11 +407,11 @@ initStorage: // contracts/stakingPool.algo.ts:170 // assetAmount: 0 - int 0 + intc 0 // 0 itxn_field AssetAmount // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -426,13 +423,13 @@ initStorage: // addStake(pay,address)uint64 *abi_route_addStake: // The ABI return prefix - byte 0x151f7c75 + bytec 21 // 0x151f7c75 // staker: address txna ApplicationArgs 1 dup len - int 32 + intc 4 // 32 == // argument 0 (staker) for addStake must be a address @@ -440,11 +437,11 @@ initStorage: // stakedAmountPayment: pay txn GroupIndex - int 1 + intc 1 // 1 - dup gtxns TypeEnum - int pay + intc 1 // pay == // argument 1 (stakedAmountPayment) for addStake must be a pay transaction @@ -455,7 +452,7 @@ initStorage: itob concat log - int 1 + intc 1 // 1 return // addStake(stakedAmountPayment: PayTxn, staker: Address): uint64 @@ -472,12 +469,12 @@ addStake: proto 2 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x dupn 4 // contracts/stakingPool.algo.ts:186 // assert(this.stakers.exists, 'staking pool must be initialized first') - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" box_len swap pop @@ -491,7 +488,7 @@ addStake: // 'stake can only be added via the validator contract', // ) txn Sender - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get app_params_get AppAddress pop @@ -520,7 +517,7 @@ addStake: // verify sender frame_dig -1 // stakedAmountPayment: PayTxn gtxns Sender - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get app_params_get AppAddress pop @@ -551,31 +548,31 @@ addStake: // contracts/stakingPool.algo.ts:209 // entryRound = globals.round + ALGORAND_STAKING_BLOCK_DELAY global Round - int 320 + pushint 320 + frame_bury 0 // entryRound: uint64 // contracts/stakingPool.algo.ts:210 // firstEmpty = 0 - int 0 + intc 0 // 0 frame_bury 1 // firstEmpty: uint64 // contracts/stakingPool.algo.ts:212 // this.totalAlgoStaked.value += stakedAmountPayment.amount - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get frame_dig -1 // stakedAmountPayment: PayTxn gtxns Amount + - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" swap app_global_put // contracts/stakingPool.algo.ts:214 // roundsLeftInBin = this.binRoundStart.value + this.roundsPerDay.value - globals.round - byte 0x62696e526f756e645374617274 // "binRoundStart" + bytec 11 // "binRoundStart" app_global_get - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get + global Round @@ -585,7 +582,7 @@ addStake: // contracts/stakingPool.algo.ts:215 // this.stakeAccumulator.value = // this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) - byte 0x7374616b65416363756d756c61746f72 // "stakeAccumulator" + bytec 8 // "stakeAccumulator" dup app_global_get frame_dig -1 // stakedAmountPayment: PayTxn @@ -597,17 +594,17 @@ addStake: b+ dup bitlen - int 128 + intc 6 // 128 <= // this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -615,14 +612,14 @@ addStake: // contracts/stakingPool.algo.ts:219 // for (let i = 0; i < this.stakers.value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 3 // i: uint64 *for_0: // contracts/stakingPool.algo.ts:219 // i < this.stakers.value.length frame_dig 3 // i: uint64 - int 200 + intc 7 // 200 < bz *for_0_end @@ -630,7 +627,7 @@ addStake: // contracts/stakingPool.algo.ts:220 // globals.opcodeBudget < 300 global OpcodeBudget - int 300 + intc 10 // 300 < bz *if2_end @@ -638,15 +635,15 @@ addStake: // contracts/stakingPool.algo.ts:221 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -654,10 +651,10 @@ addStake: // contracts/stakingPool.algo.ts:223 // cmpStaker = clone(this.stakers.value[i]) frame_dig 3 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 64 - byte 0x7374616b657273 // "stakers" + intc 3 // 64 + bytec 2 // "stakers" cover 2 box_extract frame_bury 4 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -675,7 +672,7 @@ addStake: // contracts/stakingPool.algo.ts:226 // cmpStaker.balance += stakedAmountPayment.amount frame_dig 4 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 32 // headOffset + intc 4 // headOffset frame_dig 4 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi @@ -689,7 +686,7 @@ addStake: // contracts/stakingPool.algo.ts:227 // cmpStaker.entryRound = entryRound frame_dig 4 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 56 // headOffset + pushint 56 // headOffset frame_dig 0 // entryRound: uint64 itob replace3 @@ -698,10 +695,10 @@ addStake: // contracts/stakingPool.algo.ts:230 // this.stakers.value[i] = cmpStaker frame_dig 3 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength frame_dig 4 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" cover 2 box_replace @@ -715,7 +712,7 @@ addStake: // contracts/stakingPool.algo.ts:234 // firstEmpty === 0 && cmpStaker.account === globals.zeroAddress frame_dig 1 // firstEmpty: uint64 - int 0 + intc 0 // 0 == dup bz *skip_and2 @@ -732,7 +729,7 @@ addStake: // contracts/stakingPool.algo.ts:235 // firstEmpty = i + 1 frame_dig 3 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 1 // firstEmpty: uint64 @@ -742,7 +739,7 @@ addStake: // contracts/stakingPool.algo.ts:219 // i += 1 frame_dig 3 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 3 // i: uint64 b *for_0 @@ -752,7 +749,7 @@ addStake: // contracts/stakingPool.algo.ts:239 // firstEmpty === 0 frame_dig 1 // firstEmpty: uint64 - int 0 + intc 0 // 0 == bz *if5_end @@ -765,7 +762,7 @@ addStake: // assert(stakedAmountPayment.amount >= this.minEntryStake.value, 'must stake at least the minimum for this pool') frame_dig -1 // stakedAmountPayment: PayTxn gtxns Amount - byte 0x6d696e456e7472795374616b65 // "minEntryStake" + bytec 18 // "minEntryStake" app_global_get >= @@ -775,14 +772,14 @@ addStake: // contracts/stakingPool.algo.ts:248 // assert(this.stakers.value[firstEmpty - 1].account === globals.zeroAddress) frame_dig 1 // firstEmpty: uint64 - int 1 + intc 1 // 1 - - int 64 + intc 3 // 64 * // acc * typeLength - int 0 + intc 0 // 0 + - int 32 - byte 0x7374616b657273 // "stakers" + intc 4 // 32 + bytec 2 // "stakers" cover 2 box_extract global ZeroAddress @@ -798,33 +795,33 @@ addStake: // entryRound: entryRound, // } frame_dig 1 // firstEmpty: uint64 - int 1 + intc 1 // 1 - - int 64 + intc 3 // 64 * // acc * typeLength frame_dig -2 // staker: Address frame_dig -1 // stakedAmountPayment: PayTxn gtxns Amount itob concat - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 concat - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 concat frame_dig 0 // entryRound: uint64 itob concat - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" cover 2 box_replace // contracts/stakingPool.algo.ts:256 // this.numStakers.value += 1 - byte 0x6e756d5374616b657273 // "numStakers" + bytec 13 // "numStakers" app_global_get - int 1 + intc 1 // 1 + - byte 0x6e756d5374616b657273 // "numStakers" + bytec 13 // "numStakers" swap app_global_put @@ -850,7 +847,7 @@ addStake: txna ApplicationArgs 1 dup len - int 32 + intc 4 // 32 == // argument 1 (staker) for removeStake must be a address @@ -858,7 +855,7 @@ addStake: // execute removeStake(address,uint64)void callsub removeStake - int 1 + intc 1 // 1 return // removeStake(staker: Address, amountToUnstake: uint64): void @@ -876,7 +873,7 @@ removeStake: proto 2 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x dupn 6 // *if6_condition @@ -905,14 +902,14 @@ removeStake: // contracts/stakingPool.algo.ts:283 // for (let i = 0; i < this.stakers.value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 0 // i: uint64 *for_1: // contracts/stakingPool.algo.ts:283 // i < this.stakers.value.length frame_dig 0 // i: uint64 - int 200 + intc 7 // 200 < bz *for_1_end @@ -920,7 +917,7 @@ removeStake: // contracts/stakingPool.algo.ts:284 // globals.opcodeBudget < 300 global OpcodeBudget - int 300 + intc 10 // 300 < bz *if7_end @@ -928,15 +925,15 @@ removeStake: // contracts/stakingPool.algo.ts:285 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -944,10 +941,10 @@ removeStake: // contracts/stakingPool.algo.ts:287 // cmpStaker = clone(this.stakers.value[i]) frame_dig 0 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 64 - byte 0x7374616b657273 // "stakers" + intc 3 // 64 + bytec 2 // "stakers" cover 2 box_extract frame_bury 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -966,7 +963,7 @@ removeStake: // contracts/stakingPool.algo.ts:289 // amountToUnstake === 0 frame_dig -2 // amountToUnstake: uint64 - int 0 + intc 0 // 0 == bz *if9_end @@ -997,7 +994,7 @@ removeStake: // contracts/stakingPool.algo.ts:296 // cmpStaker.balance -= amountToUnstake frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 32 // headOffset + intc 4 // headOffset frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi @@ -1009,17 +1006,17 @@ removeStake: // contracts/stakingPool.algo.ts:297 // this.totalAlgoStaked.value -= amountToUnstake - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get frame_dig -2 // amountToUnstake: uint64 - - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" swap app_global_put // contracts/stakingPool.algo.ts:299 // amountRewardTokenRemoved = 0 - int 0 + intc 0 // 0 frame_bury 2 // amountRewardTokenRemoved: uint64 // *if11_condition @@ -1028,7 +1025,7 @@ removeStake: frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 48 8 btoi - int 0 + intc 0 // 0 > bz *if11_end @@ -1036,9 +1033,9 @@ removeStake: // *if12_condition // contracts/stakingPool.algo.ts:302 // this.poolId.value === 1 - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == bz *if12_else @@ -1049,32 +1046,32 @@ removeStake: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" + bytec 15 // method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:304 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:305 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -1087,7 +1084,7 @@ removeStake: // assetAmount: cmpStaker.rewardTokenBalance, // }) itxn_begin - int axfer + intc 12 // axfer itxn_field TypeEnum // contracts/stakingPool.algo.ts:312 @@ -1110,7 +1107,7 @@ removeStake: itxn_field AssetAmount // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1126,7 +1123,7 @@ removeStake: // contracts/stakingPool.algo.ts:317 // cmpStaker.rewardTokenBalance = 0 frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 replace2 48 frame_bury 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) b *if12_end @@ -1142,7 +1139,7 @@ removeStake: // contracts/stakingPool.algo.ts:323 // cmpStaker.rewardTokenBalance = 0 frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 replace2 48 frame_bury 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -1157,14 +1154,14 @@ removeStake: frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi - int 0 + intc 0 // 0 == dup bnz *skip_or0 frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi - byte 0x6d696e456e7472795374616b65 // "minEntryStake" + bytec 18 // "minEntryStake" app_global_get >= || @@ -1180,7 +1177,7 @@ removeStake: // note: 'unstaked', // }) itxn_begin - int pay + intc 1 // pay itxn_field TypeEnum // contracts/stakingPool.algo.ts:337 @@ -1195,11 +1192,11 @@ removeStake: // contracts/stakingPool.algo.ts:339 // note: 'unstaked' - byte 0x756e7374616b6564 // "unstaked" + pushbytes 0x756e7374616b6564 // "unstaked" itxn_field Note // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1207,7 +1204,7 @@ removeStake: // contracts/stakingPool.algo.ts:341 // stakerRemoved = false - int 0 + intc 0 // 0 frame_bury 4 // stakerRemoved: bool // *if13_condition @@ -1216,25 +1213,25 @@ removeStake: frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi - int 0 + intc 0 // 0 == bz *if13_end // *if13_consequent // contracts/stakingPool.algo.ts:344 // this.numStakers.value -= 1 - byte 0x6e756d5374616b657273 // "numStakers" + bytec 13 // "numStakers" app_global_get - int 1 + intc 1 // 1 - - byte 0x6e756d5374616b657273 // "numStakers" + bytec 13 // "numStakers" swap app_global_put // contracts/stakingPool.algo.ts:345 // cmpStaker.account = globals.zeroAddress frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 0 + intc 0 // 0 global ZeroAddress replace3 frame_bury 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -1242,38 +1239,38 @@ removeStake: // contracts/stakingPool.algo.ts:346 // cmpStaker.totalRewarded = 0 frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 replace2 40 frame_bury 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) // contracts/stakingPool.algo.ts:347 // cmpStaker.rewardTokenBalance = 0 frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 replace2 48 frame_bury 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) // contracts/stakingPool.algo.ts:348 // stakerRemoved = true - int 1 + intc 1 // 1 frame_bury 4 // stakerRemoved: bool *if13_end: // contracts/stakingPool.algo.ts:351 // this.stakers.value[i] = cmpStaker frame_dig 0 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength frame_dig 1 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" cover 2 box_replace // contracts/stakingPool.algo.ts:353 // roundsLeftInBin = this.binRoundStart.value + this.roundsPerDay.value - globals.round - byte 0x62696e526f756e645374617274 // "binRoundStart" + bytec 11 // "binRoundStart" app_global_get - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get + global Round @@ -1289,17 +1286,17 @@ removeStake: b* dup bitlen - int 128 + intc 6 // 128 <= // (amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -1307,24 +1304,24 @@ removeStake: // contracts/stakingPool.algo.ts:355 // this.stakeAccumulator.value = this.stakeAccumulator.value - subtractAmount - byte 0x7374616b65416363756d756c61746f72 // "stakeAccumulator" + bytec 8 // "stakeAccumulator" dup app_global_get frame_dig 6 // subtractAmount: uint128 b- dup bitlen - int 128 + intc 6 // 128 <= // this.stakeAccumulator.value - subtractAmount overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -1342,14 +1339,14 @@ removeStake: // ], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void" + bytec 22 // method "stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:361 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID @@ -1361,10 +1358,10 @@ removeStake: // amountRewardTokenRemoved, // stakerRemoved, // ] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get itob concat @@ -1381,14 +1378,14 @@ removeStake: itob itxn_field ApplicationArgs frame_dig 4 // stakerRemoved: bool - byte 0x00 - int 0 + bytec 26 // 0x00 + intc 0 // 0 uncover 2 setbit itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1404,7 +1401,7 @@ removeStake: // contracts/stakingPool.algo.ts:283 // i += 1 frame_dig 0 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 0 // i: uint64 b *for_1 @@ -1418,7 +1415,7 @@ removeStake: *abi_route_claimTokens: // execute claimTokens()void callsub claimTokens - int 1 + intc 1 // 1 return // claimTokens(): void @@ -1430,7 +1427,7 @@ claimTokens: proto 0 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x dupn 4 // contracts/stakingPool.algo.ts:385 @@ -1440,14 +1437,14 @@ claimTokens: // contracts/stakingPool.algo.ts:387 // for (let i = 0; i < this.stakers.value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 1 // i: uint64 *for_2: // contracts/stakingPool.algo.ts:387 // i < this.stakers.value.length frame_dig 1 // i: uint64 - int 200 + intc 7 // 200 < bz *for_2_end @@ -1455,7 +1452,7 @@ claimTokens: // contracts/stakingPool.algo.ts:388 // globals.opcodeBudget < 300 global OpcodeBudget - int 300 + intc 10 // 300 < bz *if14_end @@ -1463,15 +1460,15 @@ claimTokens: // contracts/stakingPool.algo.ts:389 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -1479,10 +1476,10 @@ claimTokens: // contracts/stakingPool.algo.ts:391 // cmpStaker = clone(this.stakers.value[i]) frame_dig 1 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 64 - byte 0x7374616b657273 // "stakers" + intc 3 // 64 + bytec 2 // "stakers" cover 2 box_extract frame_bury 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -1503,7 +1500,7 @@ claimTokens: frame_dig 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 48 8 btoi - int 0 + intc 0 // 0 == bz *if16_end @@ -1515,15 +1512,15 @@ claimTokens: *if16_end: // contracts/stakingPool.algo.ts:396 // amountRewardTokenRemoved = 0 - int 0 + intc 0 // 0 frame_bury 3 // amountRewardTokenRemoved: uint64 // *if17_condition // contracts/stakingPool.algo.ts:398 // this.poolId.value === 1 - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == bz *if17_else @@ -1534,32 +1531,32 @@ claimTokens: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" + bytec 15 // method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:400 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:401 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -1572,7 +1569,7 @@ claimTokens: // assetAmount: cmpStaker.rewardTokenBalance, // }) itxn_begin - int axfer + intc 12 // axfer itxn_field TypeEnum // contracts/stakingPool.algo.ts:407 @@ -1595,7 +1592,7 @@ claimTokens: itxn_field AssetAmount // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1611,7 +1608,7 @@ claimTokens: // contracts/stakingPool.algo.ts:412 // cmpStaker.rewardTokenBalance = 0 frame_dig 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 replace2 48 frame_bury 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) b *if17_end @@ -1627,7 +1624,7 @@ claimTokens: // contracts/stakingPool.algo.ts:418 // cmpStaker.rewardTokenBalance = 0 frame_dig 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 replace2 48 frame_bury 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -1635,10 +1632,10 @@ claimTokens: // contracts/stakingPool.algo.ts:422 // this.stakers.value[i] = cmpStaker frame_dig 1 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength frame_dig 2 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" cover 2 box_replace @@ -1654,14 +1651,14 @@ claimTokens: // ], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void" + bytec 22 // method "stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:428 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID @@ -1673,10 +1670,10 @@ claimTokens: // amountRewardTokenRemoved, // false, // staker isn't being removed. // ] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get itob concat @@ -1686,20 +1683,20 @@ claimTokens: itxn_field ApplicationArgs frame_dig 0 // staker: address itxn_field ApplicationArgs - byte 0x0000000000000000 + bytec 10 // 0x0000000000000000 itxn_field ApplicationArgs frame_dig 3 // amountRewardTokenRemoved: uint64 itob itxn_field ApplicationArgs - int 0 - byte 0x00 - int 0 + intc 0 // 0 + bytec 26 // 0x00 + intc 0 // 0 uncover 2 setbit itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1715,7 +1712,7 @@ claimTokens: // contracts/stakingPool.algo.ts:387 // i += 1 frame_dig 1 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 1 // i: uint64 b *for_2 @@ -1728,13 +1725,13 @@ claimTokens: // getStakerInfo(address)(address,uint64,uint64,uint64,uint64) *abi_route_getStakerInfo: // The ABI return prefix - byte 0x151f7c75 + bytec 21 // 0x151f7c75 // staker: address txna ApplicationArgs 1 dup len - int 32 + intc 4 // 32 == // argument 0 (staker) for getStakerInfo must be a address @@ -1744,7 +1741,7 @@ claimTokens: callsub getStakerInfo concat log - int 1 + intc 1 // 1 return // getStakerInfo(staker: Address): StakedInfo @@ -1758,18 +1755,18 @@ getStakerInfo: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x // contracts/stakingPool.algo.ts:452 // for (let i = 0; i < this.stakers.value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 0 // i: uint64 *for_3: // contracts/stakingPool.algo.ts:452 // i < this.stakers.value.length frame_dig 0 // i: uint64 - int 200 + intc 7 // 200 < bz *for_3_end @@ -1777,7 +1774,7 @@ getStakerInfo: // contracts/stakingPool.algo.ts:453 // globals.opcodeBudget < 200 global OpcodeBudget - int 200 + intc 7 // 200 < bz *if18_end @@ -1785,15 +1782,15 @@ getStakerInfo: // contracts/stakingPool.algo.ts:454 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -1802,12 +1799,12 @@ getStakerInfo: // contracts/stakingPool.algo.ts:456 // this.stakers.value[i].account === staker frame_dig 0 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 0 + intc 0 // 0 + - int 32 - byte 0x7374616b657273 // "stakers" + intc 4 // 32 + bytec 2 // "stakers" cover 2 box_extract frame_dig -1 // staker: Address @@ -1818,10 +1815,10 @@ getStakerInfo: // contracts/stakingPool.algo.ts:457 // return this.stakers.value[i] frame_dig 0 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 64 - byte 0x7374616b657273 // "stakers" + intc 3 // 64 + bytec 2 // "stakers" cover 2 box_extract b *getStakerInfo*return @@ -1832,7 +1829,7 @@ getStakerInfo: // contracts/stakingPool.algo.ts:452 // i += 1 frame_dig 0 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 0 // i: uint64 b *for_3 @@ -1860,7 +1857,7 @@ getStakerInfo: txna ApplicationArgs 1 dup len - int 32 + intc 4 // 32 == // argument 2 (staker) for payTokenReward must be a address @@ -1868,7 +1865,7 @@ getStakerInfo: // execute payTokenReward(address,uint64,uint64)void callsub payTokenReward - int 1 + intc 1 // 1 return // payTokenReward(staker: Address, rewardToken: uint64, amountToSend: uint64): void @@ -1890,7 +1887,7 @@ payTokenReward: // 'this can only be called via the validator contract', // ) txn Sender - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get app_params_get AppAddress pop @@ -1901,9 +1898,9 @@ payTokenReward: // contracts/stakingPool.algo.ts:479 // assert(this.poolId.value === 1, 'must be pool 1 in order to be called to pay out token rewards') - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == // must be pool 1 in order to be called to pay out token rewards @@ -1912,7 +1909,7 @@ payTokenReward: // contracts/stakingPool.algo.ts:480 // assert(rewardToken !== 0, 'can only claim token rewards from validator that has them') frame_dig -2 // rewardToken: uint64 - int 0 + intc 0 // 0 != // can only claim token rewards from validator that has them @@ -1925,7 +1922,7 @@ payTokenReward: // assetAmount: amountToSend, // }) itxn_begin - int axfer + intc 12 // axfer itxn_field TypeEnum // contracts/stakingPool.algo.ts:484 @@ -1944,7 +1941,7 @@ payTokenReward: itxn_field AssetAmount // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1959,7 +1956,7 @@ payTokenReward: // execute updateAlgodVer(string)void callsub updateAlgodVer - int 1 + intc 1 // 1 return // updateAlgodVer(algodVer: string): void @@ -1983,7 +1980,7 @@ updateAlgodVer: // contracts/stakingPool.algo.ts:501 // this.algodVer.value = algodVer - byte 0x616c676f64566572 // "algodVer" + pushbytes 0x616c676f64566572 // "algodVer" frame_dig -1 // algodVer: string app_global_put retsub @@ -1992,7 +1989,7 @@ updateAlgodVer: *abi_route_epochBalanceUpdate: // execute epochBalanceUpdate()void callsub epochBalanceUpdate - int 1 + intc 1 // 1 return // epochBalanceUpdate(): void @@ -2007,7 +2004,7 @@ epochBalanceUpdate: proto 0 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x dupn 39 // contracts/stakingPool.algo.ts:514 @@ -2016,32 +2013,32 @@ epochBalanceUpdate: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" + bytec 15 // method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:515 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:516 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -2070,9 +2067,9 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:528 // lastPayoutEpoch = this.lastPayout.value - (this.lastPayout.value % epochRoundLength) - byte 0x6c6173745061796f7574 // "lastPayout" + bytec 14 // "lastPayout" app_global_get - byte 0x6c6173745061796f7574 // "lastPayout" + bytec 14 // "lastPayout" app_global_get frame_dig 1 // epochRoundLength: uint64 % @@ -2094,17 +2091,17 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:535 // this.lastPayout.value = curRound - byte 0x6c6173745061796f7574 // "lastPayout" + bytec 14 // "lastPayout" frame_dig 2 // curRound: uint64 app_global_put // contracts/stakingPool.algo.ts:536 // this.epochNumber.value += 1 - byte 0x65706f63684e756d626572 // "epochNumber" + bytec 19 // "epochNumber" app_global_get - int 1 + intc 1 // 1 + - byte 0x65706f63684e756d626572 // "epochNumber" + bytec 19 // "epochNumber" swap app_global_put @@ -2113,7 +2110,7 @@ epochBalanceUpdate: frame_dig 0 // validatorConfig: (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64) extract 153 8 btoi - int 0 + intc 0 // 0 != frame_bury 5 // isTokenEligible: bool @@ -2137,9 +2134,9 @@ epochBalanceUpdate: // *if21_condition // contracts/stakingPool.algo.ts:549 // this.poolId.value !== 1 - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 != bz *if21_end @@ -2150,34 +2147,34 @@ epochBalanceUpdate: // methodArgs: [this.validatorId.value, 1], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getPoolAppId(uint64,uint64)uint64" + bytec 23 // method "getPoolAppId(uint64,uint64)uint64" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:552 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:553 // methodArgs: [this.validatorId.value, 1] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs - byte 0x0000000000000001 + pushbytes 0x0000000000000001 itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -2195,9 +2192,9 @@ epochBalanceUpdate: // *if22_condition // contracts/stakingPool.algo.ts:560 // this.poolId.value === 1 - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == bz *if22_else @@ -2208,32 +2205,32 @@ epochBalanceUpdate: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "setTokenPayoutRatio(uint64)(uint64[24],uint64)" + bytec 24 // method "setTokenPayoutRatio(uint64)(uint64[24],uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:562 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:563 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -2247,9 +2244,9 @@ epochBalanceUpdate: // methodArgs: [{ id: this.validatorId.value, poolId: this.poolId.value, poolAppId: this.app.id }], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "proxiedSetTokenPayoutRatio((uint64,uint64,uint64))(uint64[24],uint64)" + bytec 25 // method "proxiedSetTokenPayoutRatio((uint64,uint64,uint64))(uint64[24],uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:568 @@ -2259,10 +2256,10 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:569 // methodArgs: [{ id: this.validatorId.value, poolId: this.poolId.value, poolAppId: this.app.id }] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get itob concat @@ -2272,13 +2269,13 @@ epochBalanceUpdate: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -2293,32 +2290,32 @@ epochBalanceUpdate: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getValidatorState(uint64)(uint16,uint64,uint64,uint64)" + pushbytes 0x1f2f0109 // method "getValidatorState(uint64)(uint16,uint64,uint64,uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:577 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:578 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -2336,7 +2333,7 @@ epochBalanceUpdate: global CurrentApplicationAddress acct_params_get AcctBalance pop - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get - global CurrentApplicationAddress @@ -2347,7 +2344,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:587 // isPoolSaturated = false - int 0 + intc 0 // 0 frame_bury 12 // isPoolSaturated: bool // contracts/stakingPool.algo.ts:588 @@ -2368,28 +2365,28 @@ epochBalanceUpdate: // *if23_consequent // contracts/stakingPool.algo.ts:597 // isPoolSaturated = true - int 1 + intc 1 // 1 frame_bury 12 // isPoolSaturated: bool *if23_end: // contracts/stakingPool.algo.ts:603 // tokenRewardAvail = 0 - int 0 + intc 0 // 0 frame_bury 14 // tokenRewardAvail: uint64 // contracts/stakingPool.algo.ts:604 // tokenRewardPaidOut = 0 - int 0 + intc 0 // 0 frame_bury 15 // tokenRewardPaidOut: uint64 // contracts/stakingPool.algo.ts:605 // validatorCommissionPaidOut = 0 - int 0 + intc 0 // 0 frame_bury 16 // validatorCommissionPaidOut: uint64 // contracts/stakingPool.algo.ts:606 // excessToFeeSink = 0 - int 0 + intc 0 // 0 frame_bury 17 // excessToFeeSink: uint64 // *if24_condition @@ -2426,15 +2423,15 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:619 // ourPoolPctOfWhole = tokenPayoutRatio.poolPctOfWhole[this.poolId.value - 1] frame_dig 8 // tokenPayoutRatio: PoolTokenPayoutRatio - int 0 - byte 0x706f6f6c4964 // "poolId" + intc 0 // 0 + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 - - int 8 + intc 14 // 8 * // acc * typeLength + - int 8 + intc 14 // 8 extract3 btoi frame_bury 19 // ourPoolPctOfWhole: uint64 @@ -2446,8 +2443,8 @@ epochBalanceUpdate: btoi frame_dig 19 // ourPoolPctOfWhole: uint64 mulw - int 0 - int 1_000_000 + intc 0 // 0 + intc 9 // 1_000_000 divmodw pop pop @@ -2465,7 +2462,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:625 // tokenRewardAvail === 0 frame_dig 14 // tokenRewardAvail: uint64 - int 0 + intc 0 // 0 == bz *if26_end @@ -2474,14 +2471,14 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:630 // algoRewardAvail < 1_000_000 frame_dig 11 // algoRewardAvail: uint64 - int 1_000_000 + intc 9 // 1_000_000 < bz *if27_end // *if27_consequent // contracts/stakingPool.algo.ts:631 // log('!token&&!noalgo to pay') - byte 0x21746f6b656e2626216e6f616c676f20746f20706179 // "!token&&!noalgo to pay" + pushbytes 0x21746f6b656e2626216e6f616c676f20746f20706179 // "!token&&!noalgo to pay" log // contracts/stakingPool.algo.ts:632 @@ -2508,8 +2505,8 @@ epochBalanceUpdate: extract 173 4 btoi mulw - int 0 - int 1_000_000 + intc 0 // 0 + intc 9 // 1_000_000 divmodw pop pop @@ -2525,7 +2522,7 @@ epochBalanceUpdate: frame_dig 11 // algoRewardAvail: uint64 frame_dig 13 // algoSaturationAmt: uint64 mulw - int 0 + intc 0 // 0 frame_dig 9 // validatorState: (uint16,uint64,uint64,uint64) extract 10 8 btoi @@ -2572,7 +2569,7 @@ epochBalanceUpdate: // note: 'pool saturated, excess to fee sink', // }) itxn_begin - int pay + intc 1 // pay itxn_field TypeEnum // contracts/stakingPool.algo.ts:655 @@ -2583,18 +2580,18 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:656 // receiver: blocks[this.txn.firstValid - 1].feeSink txn FirstValid - int 1 + intc 1 // 1 - block BlkFeeSink itxn_field Receiver // contracts/stakingPool.algo.ts:657 // note: 'pool saturated, excess to fee sink' - byte 0x706f6f6c207361747572617465642c2065786365737320746f206665652073696e6b // "pool saturated, excess to fee sink" + pushbytes 0x706f6f6c207361747572617465642c2065786365737320746f206665652073696e6b // "pool saturated, excess to fee sink" itxn_field Note // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -2612,7 +2609,7 @@ epochBalanceUpdate: frame_dig 0 // validatorConfig: (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64) extract 173 4 btoi - int 0 + intc 0 // 0 != bz *if28_end @@ -2627,8 +2624,8 @@ epochBalanceUpdate: extract 173 4 btoi mulw - int 0 - int 1_000_000 + intc 0 // 0 + intc 9 // 1_000_000 divmodw pop pop @@ -2650,14 +2647,14 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:677 // validatorCommissionPaidOut > 0 frame_dig 16 // validatorCommissionPaidOut: uint64 - int 0 + intc 0 // 0 > bz *if30_end // *if30_consequent // contracts/stakingPool.algo.ts:680 // managerTopOff = 0 - int 0 + intc 0 // 0 frame_bury 22 // managerTopOff: uint64 // *if31_condition @@ -2680,7 +2677,7 @@ epochBalanceUpdate: acct_params_get AcctMinBalance pop - - int 2_100_000 + intc 13 // 2_100_000 < && @@ -2691,14 +2688,14 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:685 // managerTopOff = validatorCommissionPaidOut < 2_100_000 ? validatorCommissionPaidOut : 2_100_000 frame_dig 16 // validatorCommissionPaidOut: uint64 - int 2_100_000 + intc 13 // 2_100_000 < bz *ternary1_false frame_dig 16 // validatorCommissionPaidOut: uint64 b *ternary1_end *ternary1_false: - int 2_100_000 + intc 13 // 2_100_000 *ternary1_end: frame_bury 22 // managerTopOff: uint64 @@ -2710,7 +2707,7 @@ epochBalanceUpdate: // note: 'validator reward to manager for funding epoch updates', // }) itxn_begin - int pay + intc 1 // pay itxn_field TypeEnum // contracts/stakingPool.algo.ts:687 @@ -2726,11 +2723,11 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:689 // note: 'validator reward to manager for funding epoch updates' - byte 0x76616c696461746f722072657761726420746f206d616e6167657220666f722066756e64696e672065706f63682075706461746573 // "validator reward to manager for funding epoch updates" + pushbytes 0x76616c696461746f722072657761726420746f206d616e6167657220666f722066756e64696e672065706f63682075706461746573 // "validator reward to manager for funding epoch updates" itxn_field Note // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -2743,7 +2740,7 @@ epochBalanceUpdate: frame_dig 16 // validatorCommissionPaidOut: uint64 frame_dig 22 // managerTopOff: uint64 - - int 0 + intc 0 // 0 > bz *if32_end @@ -2755,7 +2752,7 @@ epochBalanceUpdate: // note: 'validator reward', // }) itxn_begin - int pay + intc 1 // pay itxn_field TypeEnum // contracts/stakingPool.algo.ts:694 @@ -2773,11 +2770,11 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:696 // note: 'validator reward' - byte 0x76616c696461746f7220726577617264 // "validator reward" + pushbytes 0x76616c696461746f7220726577617264 // "validator reward" itxn_field Note // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -2790,19 +2787,19 @@ epochBalanceUpdate: *if28_end: // contracts/stakingPool.algo.ts:708 // increasedStake = 0 - int 0 + intc 0 // 0 frame_bury 23 // increasedStake: uint64 // *if33_condition // contracts/stakingPool.algo.ts:732 // algoRewardAvail !== 0 || tokenRewardAvail !== 0 frame_dig 11 // algoRewardAvail: uint64 - int 0 + intc 0 // 0 != dup bnz *skip_or1 frame_dig 14 // tokenRewardAvail: uint64 - int 0 + intc 0 // 0 != || @@ -2812,7 +2809,7 @@ epochBalanceUpdate: // *if33_consequent // contracts/stakingPool.algo.ts:733 // partialStakersTotalStake: uint64 = 0 - int 0 + intc 0 // 0 frame_bury 24 // partialStakersTotalStake: uint64 // contracts/stakingPool.algo.ts:734 @@ -2827,14 +2824,14 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:737 // for (let i = 0; i < this.stakers.value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 27 // i: uint64 *for_4: // contracts/stakingPool.algo.ts:737 // i < this.stakers.value.length frame_dig 27 // i: uint64 - int 200 + intc 7 // 200 < bz *for_4_end @@ -2842,7 +2839,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:738 // globals.opcodeBudget < 400 global OpcodeBudget - int 400 + intc 16 // 400 < bz *if34_end @@ -2850,15 +2847,15 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:739 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -2866,10 +2863,10 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:741 // cmpStaker = clone(this.stakers.value[i]) frame_dig 27 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 64 - byte 0x7374616b657273 // "stakers" + intc 3 // 64 + bytec 2 // "stakers" cover 2 box_extract frame_bury 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -2936,7 +2933,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:756 // timePercentage = (timeInPool * 1000) / epochRoundLength frame_dig 29 // timeInPool: uint64 - int 1000 + intc 11 // 1000 * frame_dig 1 // epochRoundLength: uint64 / @@ -2946,7 +2943,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:758 // tokenRewardAvail > 0 frame_dig 14 // tokenRewardAvail: uint64 - int 0 + intc 0 // 0 > bz *if38_end @@ -2970,9 +2967,9 @@ epochBalanceUpdate: cover 2 + swap - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get - int 1000 + intc 11 // 1000 mulw divmodw pop @@ -2994,7 +2991,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:768 // cmpStaker.rewardTokenBalance += stakerTokenReward frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 48 // headOffset + intc 20 // headOffset frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 48 8 btoi @@ -3031,9 +3028,9 @@ epochBalanceUpdate: cover 2 + swap - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get - int 1000 + intc 11 // 1000 mulw divmodw pop @@ -3055,7 +3052,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:781 // cmpStaker.balance += stakerReward frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 32 // headOffset + intc 4 // headOffset frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi @@ -3068,7 +3065,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:782 // cmpStaker.totalRewarded += stakerReward frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 40 // headOffset + intc 19 // headOffset frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 40 8 btoi @@ -3088,10 +3085,10 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:785 // this.stakers.value[i] = cmpStaker frame_dig 27 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength frame_dig 28 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" cover 2 box_replace @@ -3105,7 +3102,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:737 // i += 1 frame_dig 27 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 27 // i: uint64 b *for_4 @@ -3113,7 +3110,7 @@ epochBalanceUpdate: *for_4_end: // contracts/stakingPool.algo.ts:793 // newPoolTotalStake = this.totalAlgoStaked.value - partialStakersTotalStake - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get frame_dig 24 // partialStakersTotalStake: uint64 - @@ -3123,21 +3120,21 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:797 // newPoolTotalStake > 0 frame_dig 33 // newPoolTotalStake: uint64 - int 0 + intc 0 // 0 > bz *if39_end // *if39_consequent // contracts/stakingPool.algo.ts:799 // for (let i = 0; i < this.stakers.value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 34 // i: uint64 *for_5: // contracts/stakingPool.algo.ts:799 // i < this.stakers.value.length frame_dig 34 // i: uint64 - int 200 + intc 7 // 200 < bz *for_5_end @@ -3145,7 +3142,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:800 // globals.opcodeBudget < 200 global OpcodeBudget - int 200 + intc 7 // 200 < bz *if40_end @@ -3153,15 +3150,15 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:801 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -3169,10 +3166,10 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:803 // cmpStaker = clone(this.stakers.value[i]) frame_dig 34 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength - int 64 - byte 0x7374616b657273 // "stakers" + intc 3 // 64 + bytec 2 // "stakers" cover 2 box_extract frame_bury 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) @@ -3219,7 +3216,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:812 // tokenRewardAvail > 0 frame_dig 14 // tokenRewardAvail: uint64 - int 0 + intc 0 // 0 > bz *if43_end @@ -3234,7 +3231,7 @@ epochBalanceUpdate: btoi frame_dig 14 // tokenRewardAvail: uint64 mulw - int 0 + intc 0 // 0 frame_dig 33 // newPoolTotalStake: uint64 divmodw pop @@ -3249,7 +3246,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:818 // cmpStaker.rewardTokenBalance += stakerTokenReward frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 48 // headOffset + intc 20 // headOffset frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 48 8 btoi @@ -3271,7 +3268,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:821 // algoRewardAvail > 0 frame_dig 11 // algoRewardAvail: uint64 - int 0 + intc 0 // 0 > bz *if44_end @@ -3286,7 +3283,7 @@ epochBalanceUpdate: btoi frame_dig 11 // algoRewardAvail: uint64 mulw - int 0 + intc 0 // 0 frame_dig 33 // newPoolTotalStake: uint64 divmodw pop @@ -3301,7 +3298,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:828 // cmpStaker.balance += stakerReward frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 32 // headOffset + intc 4 // headOffset frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 32 8 btoi @@ -3314,7 +3311,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:829 // cmpStaker.totalRewarded += stakerReward frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) - int 40 // headOffset + intc 19 // headOffset frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) extract 40 8 btoi @@ -3335,10 +3332,10 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:834 // this.stakers.value[i] = cmpStaker frame_dig 34 // i: uint64 - int 64 + intc 3 // 64 * // acc * typeLength frame_dig 35 // cmpStaker: (address,uint64,uint64,uint64,uint64) - byte 0x7374616b657273 // "stakers" + bytec 2 // "stakers" cover 2 box_replace @@ -3350,7 +3347,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:799 // i += 1 frame_dig 34 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 34 // i: uint64 b *for_5 @@ -3362,9 +3359,9 @@ epochBalanceUpdate: *if33_end: // contracts/stakingPool.algo.ts:844 // roundsLeftInBin = this.binRoundStart.value + this.roundsPerDay.value - globals.round - byte 0x62696e526f756e645374617274 // "binRoundStart" + bytec 11 // "binRoundStart" app_global_get - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get + global Round @@ -3373,18 +3370,18 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:845 // this.totalAlgoStaked.value += increasedStake - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" app_global_get frame_dig 23 // increasedStake: uint64 + - byte 0x7374616b6564 // "staked" + bytec 6 // "staked" swap app_global_put // contracts/stakingPool.algo.ts:846 // this.stakeAccumulator.value = // this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) - byte 0x7374616b65416363756d756c61746f72 // "stakeAccumulator" + bytec 8 // "stakeAccumulator" dup app_global_get frame_dig 23 // increasedStake: uint64 @@ -3395,17 +3392,17 @@ epochBalanceUpdate: b+ dup bitlen - int 128 + intc 6 // 128 <= // this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -3413,7 +3410,7 @@ epochBalanceUpdate: // contracts/stakingPool.algo.ts:848 // this.rewardAccumulator.value = this.rewardAccumulator.value + increasedStake - byte 0x726577617264416363756d756c61746f72 // "rewardAccumulator" + bytec 12 // "rewardAccumulator" dup app_global_get frame_dig 23 // increasedStake: uint64 @@ -3432,14 +3429,14 @@ epochBalanceUpdate: // ], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "stakeUpdatedViaRewards((uint64,uint64,uint64),uint64,uint64,uint64,uint64)void" + pushbytes 0x418fcefc // method "stakeUpdatedViaRewards((uint64,uint64,uint64),uint64,uint64,uint64,uint64)void" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:855 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID @@ -3451,10 +3448,10 @@ epochBalanceUpdate: // validatorCommissionPaidOut, // excessToFeeSink, // ] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get itob concat @@ -3476,7 +3473,7 @@ epochBalanceUpdate: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -3511,11 +3508,11 @@ epochBalanceUpdate: // feePayment: pay txn GroupIndex - int 1 + intc 1 // 1 - dup gtxns TypeEnum - int pay + intc 1 // pay == // argument 6 (feePayment) for goOnline must be a pay transaction @@ -3523,7 +3520,7 @@ epochBalanceUpdate: // execute goOnline(pay,byte[],byte[],byte[],uint64,uint64,uint64)void callsub goOnline - int 1 + intc 1 // 1 return // goOnline(feePayment: PayTxn, votePK: bytes, selectionPK: bytes, stateProofPK: bytes, voteFirst: uint64, voteLast: uint64, voteKeyDilution: uint64): void @@ -3543,7 +3540,7 @@ goOnline: proto 7 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x // contracts/stakingPool.algo.ts:888 // assert(this.isOwnerOrManagerCaller(), 'can only be called by owner or manager of validator') @@ -3588,7 +3585,7 @@ goOnline: // fee: extraFee, // }) itxn_begin - int keyreg + intc 18 // keyreg itxn_field TypeEnum // contracts/stakingPool.algo.ts:892 @@ -3634,7 +3631,7 @@ goOnline: *abi_route_goOffline: // execute goOffline()void callsub goOffline - int 1 + intc 1 // 1 return // goOffline(): void @@ -3648,7 +3645,7 @@ goOffline: // contracts/stakingPool.algo.ts:910 // this.txn.sender !== this.creatingValidatorContractAppId.value.address txn Sender - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get app_params_get AppAddress pop @@ -3667,11 +3664,11 @@ goOffline: // contracts/stakingPool.algo.ts:914 // sendOfflineKeyRegistration({}) itxn_begin - int keyreg + intc 18 // keyreg itxn_field TypeEnum // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -3690,7 +3687,7 @@ goOffline: // execute linkToNFD(uint64,string)void callsub linkToNFD - int 1 + intc 1 // 1 return // linkToNFD(nfdAppId: uint64, nfdName: string): void @@ -3711,17 +3708,17 @@ linkToNFD: // applications: [AppID.fromUint64(nfdAppId)], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum // contracts/stakingPool.algo.ts:924 // applicationID: AppID.fromUint64(this.nfdRegistryAppId) - load 200 // TMPL_nfdRegistryAppId + intc 21 // TMPL_nfdRegistryAppId itxn_field ApplicationID // contracts/stakingPool.algo.ts:925 // applicationArgs: ['verify_nfd_addr', nfdName, itob(nfdAppId), rawBytes(this.app.address)] - byte 0x7665726966795f6e66645f61646472 // "verify_nfd_addr" + pushbytes 0x7665726966795f6e66645f61646472 // "verify_nfd_addr" itxn_field ApplicationArgs frame_dig -2 // nfdName: string itxn_field ApplicationArgs @@ -3737,7 +3734,7 @@ linkToNFD: itxn_field Applications // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -3747,13 +3744,13 @@ linkToNFD: // proxiedSetTokenPayoutRatio((uint64,uint64,uint64))(uint64[24],uint64) *abi_route_proxiedSetTokenPayoutRatio: // The ABI return prefix - byte 0x151f7c75 + bytec 21 // 0x151f7c75 // poolKey: (uint64,uint64,uint64) txna ApplicationArgs 1 dup len - int 24 + pushint 24 == // argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64) @@ -3763,7 +3760,7 @@ linkToNFD: callsub proxiedSetTokenPayoutRatio concat log - int 1 + intc 1 // 1 return // proxiedSetTokenPayoutRatio(poolKey: ValidatorPoolKey): PoolTokenPayoutRatio @@ -3776,11 +3773,11 @@ proxiedSetTokenPayoutRatio: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x // contracts/stakingPool.algo.ts:937 // assert(this.validatorId.value === poolKey.id, 'caller must be part of same validator set!') - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 @@ -3792,9 +3789,9 @@ proxiedSetTokenPayoutRatio: // contracts/stakingPool.algo.ts:938 // assert(this.poolId.value === 1, 'callee must be pool 1') - byte 0x706f6f6c4964 // "poolId" + bytec 4 // "poolId" app_global_get - int 1 + intc 1 // 1 == // callee must be pool 1 @@ -3805,7 +3802,7 @@ proxiedSetTokenPayoutRatio: frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 != // caller must NOT be pool 1 @@ -3817,14 +3814,14 @@ proxiedSetTokenPayoutRatio: // methodArgs: [poolKey.id, poolKey.poolId], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getPoolAppId(uint64,uint64)uint64" + bytec 23 // method "getPoolAppId(uint64,uint64)uint64" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:942 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID @@ -3842,13 +3839,13 @@ proxiedSetTokenPayoutRatio: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -3881,32 +3878,32 @@ proxiedSetTokenPayoutRatio: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "setTokenPayoutRatio(uint64)(uint64[24],uint64)" + bytec 24 // method "setTokenPayoutRatio(uint64)(uint64[24],uint64)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:949 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:950 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -3920,7 +3917,7 @@ isOwnerOrManagerCaller: proto 0 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x // contracts/stakingPool.algo.ts:955 // OwnerAndManager = sendMethodCall({ @@ -3928,32 +3925,32 @@ isOwnerOrManagerCaller: // methodArgs: [this.validatorId.value], // }) itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - method "getValidatorOwnerAndManager(uint64)(address,address)" + pushbytes 0x2fa22c4b // method "getValidatorOwnerAndManager(uint64)(address,address)" itxn_field ApplicationArgs // contracts/stakingPool.algo.ts:956 // applicationID: this.creatingValidatorContractAppId.value - byte 0x63726561746f72417070 // "creatorApp" + bytec 1 // "creatorApp" app_global_get itxn_field ApplicationID // contracts/stakingPool.algo.ts:957 // methodArgs: [this.validatorId.value] - byte 0x76616c696461746f724964 // "validatorId" + bytec 3 // "validatorId" app_global_get itob itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -3986,7 +3983,7 @@ algoSaturationLevel: proto 0 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x // contracts/stakingPool.algo.ts:967 // online = this.getCurrentOnlineStake() @@ -3996,10 +3993,10 @@ algoSaturationLevel: // contracts/stakingPool.algo.ts:969 // return wideRatio([online, MAX_VALIDATOR_SOFT_PCT_OF_ONLINE_1DECIMAL], [1000]) frame_dig 0 // online: uint64 - int 100 + pushint 100 mulw - int 0 - int 1000 + intc 0 // 0 + intc 11 // 1000 divmodw pop pop @@ -4035,7 +4032,7 @@ getGoOnlineFee: *if46_end: // contracts/stakingPool.algo.ts:977 // return 0 - int 0 + intc 0 // 0 retsub // getCurrentOnlineStake(): uint64 @@ -4054,12 +4051,12 @@ checkIfBinClosed: proto 0 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x dupn 4 // contracts/stakingPool.algo.ts:988 // currentBinSize = this.roundsPerDay.value as uint128 - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get itob frame_bury 0 // currentBinSize: unsafe uint128 @@ -4068,22 +4065,22 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:989 // globals.round >= this.binRoundStart.value + (currentBinSize as uint64) global Round - byte 0x62696e526f756e645374617274 // "binRoundStart" + bytec 11 // "binRoundStart" app_global_get frame_dig 0 // currentBinSize: unsafe uint128 dup bitlen - int 64 + intc 3 // 64 <= // currentBinSize as uint64 overflowed 64 bits assert - byte 0xFFFFFFFFFFFFFFFF + pushbytes 0xFFFFFFFFFFFFFFFF b& dup len dup - int 8 + intc 14 // 8 - swap substring3 @@ -4097,7 +4094,7 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:990 // globals.opcodeBudget < 300 global OpcodeBudget - int 300 + intc 10 // 300 < bz *if48_end @@ -4105,15 +4102,15 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:991 // increaseOpcodeBudget() itxn_begin - int appl + intc 2 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 5 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 8 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -4121,21 +4118,21 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:993 // approxRoundsPerYear: uint128 = currentBinSize * (365 as uint128) frame_dig 0 // currentBinSize: unsafe uint128 - byte 0x0000000000000000000000000000016d + pushbytes 0x0000000000000000000000000000016d b* dup bitlen - int 128 + intc 6 // 128 <= // currentBinSize * (365 as uint128) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -4143,23 +4140,23 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:994 // avgStake: uint128 = this.stakeAccumulator.value / currentBinSize - byte 0x7374616b65416363756d756c61746f72 // "stakeAccumulator" + bytec 8 // "stakeAccumulator" app_global_get frame_dig 0 // currentBinSize: unsafe uint128 b/ dup bitlen - int 128 + intc 6 // 128 <= // this.stakeAccumulator.value / currentBinSize overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -4169,7 +4166,7 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:995 // avgStake !== 0 frame_dig 2 // avgStake: uint128 - byte 0x00000000000000000000000000000000 + bytec 16 // 0x00000000000000000000000000000000 b!= bz *if49_end @@ -4178,10 +4175,10 @@ checkIfBinClosed: // apr: uint128 = // (((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) * // (approxRoundsPerYear / currentBinSize) - byte 0x726577617264416363756d756c61746f72 // "rewardAccumulator" + bytec 12 // "rewardAccumulator" app_global_get itob - byte 0x00000000000000000000000000002710 + pushbytes 0x00000000000000000000000000002710 b* frame_dig 2 // avgStake: uint128 b/ @@ -4191,17 +4188,17 @@ checkIfBinClosed: b* dup bitlen - int 128 + intc 6 // 128 <= // (((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -4209,21 +4206,21 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:1003 // alpha: uint128 = 10 as uint128 - byte 0x0000000000000000000000000000000a + pushbytes 0x0000000000000000000000000000000a frame_bury 4 // alpha: unsafe uint128 // *if50_condition // contracts/stakingPool.algo.ts:1005 // avgStake > 300000000000 frame_dig 2 // avgStake: uint128 - byte 0x000000000000000000000045d964b800 + pushbytes 0x000000000000000000000045d964b800 b> bz *if50_end // *if50_consequent // contracts/stakingPool.algo.ts:1006 // alpha = 90 as uint128 - byte 0x0000000000000000000000000000005a + pushbytes 0x0000000000000000000000000000005a frame_bury 4 // alpha: unsafe uint128 *if50_end: @@ -4231,34 +4228,34 @@ checkIfBinClosed: // this.weightedMovingAverage.value = // (this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) + // (apr * alpha) / (100 as uint128) - byte 0x65776d61 // "ewma" + bytec 20 // "ewma" dup app_global_get - byte 0x00000000000000000000000000000064 + bytec 17 // 0x00000000000000000000000000000064 frame_dig 4 // alpha: unsafe uint128 b- b* - byte 0x00000000000000000000000000000064 + bytec 17 // 0x00000000000000000000000000000064 b/ frame_dig 3 // apr: uint128 frame_dig 4 // alpha: unsafe uint128 b* - byte 0x00000000000000000000000000000064 + bytec 17 // 0x00000000000000000000000000000064 b/ b+ dup bitlen - int 128 + intc 6 // 128 <= // (this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\n (apr * alpha) / (100 as uint128) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -4271,27 +4268,27 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:1015 // this.stakeAccumulator.value = (this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) - byte 0x7374616b65416363756d756c61746f72 // "stakeAccumulator" - byte 0x7374616b6564 // "staked" + bytec 8 // "stakeAccumulator" + bytec 6 // "staked" app_global_get itob - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get itob b* dup bitlen - int 128 + intc 6 // 128 <= // (this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits assert - byte 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - int 16 + intc 5 // 16 - swap substring3 @@ -4299,16 +4296,16 @@ checkIfBinClosed: // contracts/stakingPool.algo.ts:1016 // this.rewardAccumulator.value = 0 - byte 0x726577617264416363756d756c61746f72 // "rewardAccumulator" - int 0 + bytec 12 // "rewardAccumulator" + intc 0 // 0 app_global_put // contracts/stakingPool.algo.ts:1017 // this.binRoundStart.value = globals.round - (globals.round % this.roundsPerDay.value) - byte 0x62696e526f756e645374617274 // "binRoundStart" + bytec 11 // "binRoundStart" global Round global Round - byte 0x726f756e6473506572446179 // "roundsPerDay" + bytec 7 // "roundsPerDay" app_global_get % - @@ -4322,21 +4319,21 @@ setRoundsPerDay: proto 0 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 0 // 0x // *if51_condition // contracts/stakingPool.algo.ts:1026 // this.txn.firstValid < 12 txn FirstValid - int 12 + pushint 12 < bz *if51_end // *if51_consequent // contracts/stakingPool.algo.ts:1028 // this.roundsPerDay.value = APPROX_AVG_ROUNDS_PER_DAY - byte 0x726f756e6473506572446179 // "roundsPerDay" - int 30857 + bytec 7 // "roundsPerDay" + intc 17 // 30857 app_global_put // contracts/stakingPool.algo.ts:1029 @@ -4348,11 +4345,11 @@ setRoundsPerDay: // avgBlockTimeTenths = // blocks[this.txn.firstValid - 1].timestamp - blocks[this.txn.firstValid - 11].timestamp txn FirstValid - int 1 + intc 1 // 1 - block BlkTimestamp txn FirstValid - int 11 + pushint 11 - block BlkTimestamp - @@ -4362,15 +4359,15 @@ setRoundsPerDay: // contracts/stakingPool.algo.ts:1034 // avgBlockTimeTenths === 0 frame_dig 0 // avgBlockTimeTenths: uint64 - int 0 + intc 0 // 0 == bz *if52_end // *if52_consequent // contracts/stakingPool.algo.ts:1036 // this.roundsPerDay.value = APPROX_AVG_ROUNDS_PER_DAY - byte 0x726f756e6473506572446179 // "roundsPerDay" - int 30857 + bytec 7 // "roundsPerDay" + intc 17 // 30857 app_global_put // contracts/stakingPool.algo.ts:1037 @@ -4380,15 +4377,15 @@ setRoundsPerDay: *if52_end: // contracts/stakingPool.algo.ts:1042 // this.roundsPerDay.value = (24 * 60 * 60 * 10) / avgBlockTimeTenths - byte 0x726f756e6473506572446179 // "roundsPerDay" - int 864000 + bytec 7 // "roundsPerDay" + pushint 864000 frame_dig 0 // avgBlockTimeTenths: uint64 / app_global_put retsub *create_NoOp: - method "createApplication(uint64,uint64,uint64,uint64)void" + pushbytes 0x59e90aa6 // method "createApplication(uint64,uint64,uint64,uint64)void" txna ApplicationArgs 0 match *abi_route_createApplication @@ -4396,19 +4393,19 @@ setRoundsPerDay: err *call_NoOp: - method "gas()void" - method "initStorage(pay)void" - method "addStake(pay,address)uint64" - method "removeStake(address,uint64)void" - method "claimTokens()void" - method "getStakerInfo(address)(address,uint64,uint64,uint64,uint64)" - method "payTokenReward(address,uint64,uint64)void" - method "updateAlgodVer(string)void" - method "epochBalanceUpdate()void" - method "goOnline(pay,byte[],byte[],byte[],uint64,uint64,uint64)void" - method "goOffline()void" - method "linkToNFD(uint64,string)void" - method "proxiedSetTokenPayoutRatio((uint64,uint64,uint64))(uint64[24],uint64)" + pushbytes 0x3172ca9d // method "gas()void" + pushbytes 0x47cfcc04 // method "initStorage(pay)void" + pushbytes 0xf9c70cbd // method "addStake(pay,address)uint64" + pushbytes 0x421b5abe // method "removeStake(address,uint64)void" + pushbytes 0xf5892d56 // method "claimTokens()void" + pushbytes 0x5cfbb057 // method "getStakerInfo(address)(address,uint64,uint64,uint64,uint64)" + pushbytes 0x63f3f28b // method "payTokenReward(address,uint64,uint64)void" + pushbytes 0x86a3725c // method "updateAlgodVer(string)void" + pushbytes 0xefc2608d // method "epochBalanceUpdate()void" + pushbytes 0x400e14fb // method "goOnline(pay,byte[],byte[],byte[],uint64,uint64,uint64)void" + pushbytes 0x51ef3b21 // method "goOffline()void" + pushbytes 0xa24e2717 // method "linkToNFD(uint64,string)void" + bytec 25 // method "proxiedSetTokenPayoutRatio((uint64,uint64,uint64))(uint64[24],uint64)" txna ApplicationArgs 0 match *abi_route_gas *abi_route_initStorage *abi_route_addStake *abi_route_removeStake *abi_route_claimTokens *abi_route_getStakerInfo *abi_route_payTokenReward *abi_route_updateAlgodVer *abi_route_epochBalanceUpdate *abi_route_goOnline *abi_route_goOffline *abi_route_linkToNFD *abi_route_proxiedSetTokenPayoutRatio diff --git a/contracts/contracts/artifacts/StakingPool.arc32.json b/contracts/contracts/artifacts/StakingPool.arc32.json index 62e7cadd..b56ff928 100644 --- a/contracts/contracts/artifacts/StakingPool.arc32.json +++ b/contracts/contracts/artifacts/StakingPool.arc32.json @@ -156,7 +156,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gbWluRW50cnlTdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gY3JlYXRpbmdDb250cmFjdElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbihjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElELCB2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCwgbWluRW50cnlTdGFrZTogdWludDY0KTogdm9pZAovLwovLyBJbml0aWFsaXplIHRoZSBzdGFraW5nIHBvb2wgdy8gb3duZXIgYW5kIG1hbmFnZXIsIGJ1dCBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QuCi8vIEBwYXJhbSB7dWludDY0fSBjcmVhdGluZ0NvbnRyYWN0SWQgLSBpZCBvZiBjb250cmFjdCB0aGF0IGNvbnN0cnVjdGVkIHVzIC0gdGhlIHZhbGlkYXRvciBhcHBsaWNhdGlvbiAoc2luZ2xlIGdsb2JhbCBpbnN0YW5jZSkKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIC0gaWQgb2YgdmFsaWRhdG9yIHdlJ3JlIGEgc3Rha2luZyBwb29sIG9mCi8vIEBwYXJhbSB7dWludDY0fSBwb29sSWQgLSB3aGljaCBwb29sIGlkIGFyZSB3ZQovLyBAcGFyYW0ge3VpbnQ2NH0gbWluRW50cnlTdGFrZSAtIG1pbmltdW0gYW1vdW50IHRvIGJlIGluIHBvb2wsIGJ1dCBhbHNvIG1pbmltdW0gYW1vdW50IGJhbGFuY2UgY2FuJ3QgZ28gYmVsb3cgKHdpdGhvdXQgcmVtb3ZpbmcgYWxsISkKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byA0IDAKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyCgkvLyBjcmVhdGluZ0NvbnRyYWN0SWQgPT09IEFwcElELmZyb21VaW50NjQoMCkKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglpbnQgMAoJPT0KCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgPT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50IDAKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDUKCS8vIGFzc2VydChwb29sSWQgPT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgk9PQoJYXNzZXJ0CgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDcKCS8vIGFzc2VydCh2YWxpZGF0b3JJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwOAoJLy8gYXNzZXJ0KHBvb2xJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50IDAKCSE9Cglhc3NlcnQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEwCgkvLyBhc3NlcnQobWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC00IC8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJaW50IDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTExCgkvLyB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSA9IGNyZWF0aW5nQ29udHJhY3RJZAoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJZnJhbWVfZGlnIC0xIC8vIGNyZWF0aW5nQ29udHJhY3RJZDogQXBwSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEyCgkvLyB0aGlzLnZhbGlkYXRvcklkLnZhbHVlID0gdmFsaWRhdG9ySWQKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMwoJLy8gdGhpcy5wb29sSWQudmFsdWUgPSBwb29sSWQKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTQKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWludCAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIwCgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMQoJLy8gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlID0gZ2xvYmFscy5yb3VuZCAtIChnbG9iYWxzLnJvdW5kICUgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUpCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglnbG9iYWwgUm91bmQKCWdsb2JhbCBSb3VuZAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIyCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAwIGFzIHVpbnQxMjgKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjMKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEzNgoJLy8gcmV0dXJuIFNDQk9YX1BFUkJPWCArIHRvdGFsTnVtQnl0ZXMgKiBTQ0JPWF9QRVJCWVRFCglpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJaW50IDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMCAobWJyUGF5bWVudCkgZm9yIGluaXRTdG9yYWdlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgaW5pdFN0b3JhZ2UocGF5KXZvaWQKCWNhbGxzdWIgaW5pdFN0b3JhZ2UKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdG9yYWdlKG1iclBheW1lbnQ6IFBheVR4bik6IHZvaWQKLy8KLy8gQ2FsbGVkIGFmdGVyIHdlJ3JlIGNyZWF0ZWQgYW5kIHRoZW4gZnVuZGVkLCBzbyB3ZSBjYW4gY3JlYXRlIG91ciBsYXJnZSBzdGFrZXJzIGxlZGdlciBzdG9yYWdlCi8vIENhbGxlciBoYXMgdG8gZ2V0IE1CUiBhbW91bnRzIGZyb20gVmFsaWRhdG9yUmVnaXN0cnkgdG8ga25vdyBob3cgbXVjaCB0byBmdW5kIHVzIHRvIGNvdmVyIHRoZSBib3ggc3RvcmFnZSBjb3N0Ci8vIElmIHRoaXMgaXMgcG9vbCAxIEFORCB0aGUgdmFsaWRhdG9yIGhhcyBzcGVjaWZpZWQgYSByZXdhcmQgdG9rZW4sIG9wdC1pbiB0byB0aGF0IHRva2VuCi8vIHNvIHRoYXQgdGhlIHZhbGlkYXRvciBjYW4gc2VlZCB0aGUgcG9vbCB3aXRoIGZ1dHVyZSByZXdhcmRzIG9mIHRoYXQgdG9rZW4uCi8vIEBwYXJhbSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgc3Rha2luZyBwb29scycgc3RvcmFnZQppbml0U3RvcmFnZToKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDMKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNDcKCS8vIGFzc2VydCghdGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkJykKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTUyCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU0CgkvLyBpc1Rva2VuRWxpZ2libGUgPSB2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCAhPT0gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWludCAwCgkhPQoJZnJhbWVfYnVyeSAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NQoJLy8gZXh0cmFNQlIgPSBpc1Rva2VuRWxpZ2libGUgJiYgdGhpcy5wb29sSWQudmFsdWUgPT09IDEgPyBBU1NFVF9IT0xESU5HX0ZFRSA6IDAKCWZyYW1lX2RpZyAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJZHVwCglieiAqc2tpcF9hbmQwCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgkmJgoKKnNraXBfYW5kMDoKCWJ6ICp0ZXJuYXJ5MF9mYWxzZQoJaW50IDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnQgMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnQgMTAwMDAwCglmcmFtZV9kaWcgMiAvLyBleHRyYU1CUjogdWludDY0CgkrCglpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWZyYW1lX2J1cnkgMyAvLyBQb29sSW5pdE1icjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYyCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBQb29sSW5pdE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6IlBvb2xJbml0TWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2MwoJLy8gdGhpcy5zdGFrZXJzLmNyZWF0ZSgpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCglpbnQgMTI4MDAKCWJveF9jcmVhdGUKCXBvcAoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjUKCS8vIGlzVG9rZW5FbGlnaWJsZSAmJiB0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMQoJZnJhbWVfZGlnIDEgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCglkdXAKCWJ6ICpza2lwX2FuZDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjkKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNzAKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjFfZW5kOgoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9hZGRTdGFrZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnQgMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50IHBheQoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZWRBbW91bnRQYXltZW50KSBmb3IgYWRkU3Rha2UgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgYWRkU3Rha2UKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHN0YWtlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBBZGRzIHN0YWtlIHRvIHRoZSBnaXZlbiBhY2NvdW50LgovLyBDYW4gT05MWSBiZSBjYWxsZWQgYnkgdGhlIHZhbGlkYXRvciBjb250cmFjdCB0aGF0IGNyZWF0ZWQgdXMKLy8gTXVzdCByZWNlaXZlIHBheW1lbnQgZnJvbSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciBhbW91bnQgYmVpbmcgc3Rha2VkLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCBwcmlvciBwYXltZW50IGNvbWluZyBmcm9tIHZhbGlkYXRvciBjb250cmFjdCB0byB1cyBvbiBiZWhhbGYgb2Ygc3Rha2VyLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhY2NvdW50IGFkZGluZyBuZXcgc3Rha2UKLy8gQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdGFraW5nIHBvb2wgaXMgZnVsbC4KLy8gQHJldHVybnMge3VpbnQ2NH0gbmV3ICdlbnRyeSByb3VuZCcgcm91bmQgbnVtYmVyIG9mIHN0YWtlIGFkZAphZGRTdGFrZToKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxODYKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMuZXhpc3RzLCAnc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QnKQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyBzdGFrZSBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTkzCgkvLyBhc3NlcnQoc3Rha2VyICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTk2CgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjAwCgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50LAoJLy8gICAgICAgICB9KQoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSByZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgUmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoicmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50In0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIwOQoJLy8gZW50cnlSb3VuZCA9IGdsb2JhbHMucm91bmQgKyBBTEdPUkFORF9TVEFLSU5HX0JMT0NLX0RFTEFZCglnbG9iYWwgUm91bmQKCWludCAzMjAKCSsKCWZyYW1lX2J1cnkgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTAKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJKwoJZ2xvYmFsIFJvdW5kCgktCglmcmFtZV9idXJ5IDIgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9CgkvLyAgICAgICAgICAgICB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWl0b2IKCWZyYW1lX2RpZyAyIC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJYisKCWR1cAoJYml0bGVuCglpbnQgMTI4Cgk8PQoKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gaTogdWludDY0CgoqZm9yXzA6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMF9lbmQKCgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjNfZW5kCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjYKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNwoJLy8gY21wU3Rha2VyLmVudHJ5Um91bmQgPSBlbnRyeVJvdW5kCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzIKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWIgKmFkZFN0YWtlKnJldHVybgoKKmlmM19lbmQ6CgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIGNtcFN0YWtlci5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAwCgk9PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDI6CglieiAqaWY0X2VuZAoKCS8vICppZjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjRfZW5kOgoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMyAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzOQoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBTdGFraW5nIHBvb2wgZnVsbAoJZXJyCgoqaWY1X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI0NgoJLy8gYXNzZXJ0KHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50ID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcpCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ4CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXS5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMQoJLQoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgMzIKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglnbG9iYWwgWmVyb0FkZHJlc3MKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDkKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSB7CgkvLyAgICAgICAgICAgICBhY2NvdW50OiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBiYWxhbmNlOiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCwKCS8vICAgICAgICAgICAgIHRvdGFsUmV3YXJkZWQ6IDAsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkJhbGFuY2U6IDAsCgkvLyAgICAgICAgICAgICBlbnRyeVJvdW5kOiBlbnRyeVJvdW5kLAoJLy8gICAgICAgICB9CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAxCgktCglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NgoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlICs9IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNTcKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCiphZGRTdGFrZSpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZToKCS8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIHJlbW92ZVN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKCWNhbGxzdWIgcmVtb3ZlU3Rha2UKCWludCAxCglyZXR1cm4KCi8vIHJlbW92ZVN0YWtlKHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9VbnN0YWtlOiB1aW50NjQpOiB2b2lkCi8vCi8vIFJlbW92ZXMgc3Rha2Ugb24gYmVoYWxmIG9mIGNhbGxlciAocmVtb3Zpbmcgb3duIHN0YWtlKS4gIElmIGFueSB0b2tlbiByZXdhcmRzIGV4aXN0LCB0aG9zZSBhcmUgYWx3YXlzIHNlbnQgaW4KLy8gZnVsbC4gQWxzbyBub3RpZmllcyB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciB0aGlzIHBvb2xzIHZhbGlkYXRvciBvZiB0aGUgc3Rha2VyIC8gYmFsYW5jZSBjaGFuZ2VzLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIGFjY291bnQgdG8gcmVtb3ZlLiAgbm9ybWFsbHkgc2FtZSBhcyBzZW5kZXIsIGJ1dCB0aGUgdmFsaWRhdG9yIG93bmVyIG9yIG1hbmFnZXIgY2FuIGFsc28gY2FsbAovLyB0aGlzIHRvIHJlbW92ZSB0aGUgc3BlY2lmaWVkIHN0YWtlciBleHBsaWNpdGx5LiBUaGUgcmVtb3ZlZCBzdGFrZSBNVVNUIG9ubHkgZ28gdG8gdGhlIHN0YWtlciBvZiBjb3Vyc2UuICBUaGlzIGlzCi8vIHNvIGEgdmFsaWRhdG9yIGNhbiBzaHV0IGRvd24gYSBwb29vbCBhbmQgcmVmdW5kIHRoZSBzdGFrZXJzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBraWNrIG91dCBzdGFrZXJzIHdobyBubyBsb25nZXIKLy8gbWVldCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyAoZGV0ZXJtaW5lZCBieSB0aGUgbm9kZSBkYWVtb24pLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9VbnN0YWtlIC0gVGhlIGFtb3VudCBvZiBzdGFrZSB0byBiZSByZW1vdmVkLiAgU3BlY2lmeSAwIHRvIHJlbW92ZSBhbGwgc3Rha2UuCi8vIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWNjb3VudCBoYXMgaW5zdWZmaWNpZW50IGJhbGFuY2Ugb3IgaWYgdGhlIGFjY291bnQgaXMgbm90IGZvdW5kLgpyZW1vdmVTdGFrZToKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDYKCgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjc0CgkvLyBzdGFrZXIgIT09IHRoaXMudHhuLnNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJIT0KCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwKCS8vICAgICAgICAgICAgICAgICAnSWYgc3Rha2VyIGlzIG5vdCBzZW5kZXIgaW4gcmVtb3ZlU3Rha2UgY2FsbCwgdGhlbiBzZW5kZXIgTVVTVCBiZSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICAgICApCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCippZjZfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgxCgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgzCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMV9lbmQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg0CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg4CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjhfZW5kCgoJLy8gKmlmOF9jb25zZXF1ZW50CgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg5CgkvLyBhbW91bnRUb1Vuc3Rha2UgPT09IDAKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWY5X2VuZAoKCS8vICppZjlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjkxCgkvLyBhbW91bnRUb1Vuc3Rha2UgPSBjbXBTdGFrZXIuYmFsYW5jZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2J1cnkgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCippZjlfZW5kOgoJLy8gKmlmMTBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTMKCS8vIGNtcFN0YWtlci5iYWxhbmNlIDwgYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgk8CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZQoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTYKCS8vIGNtcFN0YWtlci5iYWxhbmNlIC09IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMzIgLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTkKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA+IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglpbnQgMAoJPgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDIKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzA0CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwNQoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMyAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxMl9lbmQKCippZjEyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjIKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjMKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTJfZW5kOgoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzI4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgICAgIGNtcFN0YWtlci5iYWxhbmNlID09PSAwIHx8IGNtcFN0YWtlci5iYWxhbmNlID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkJywKCS8vICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJaW50IDAKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglieXRlIDB4NmQ2OTZlNDU2ZTc0NzI3OTUzNzQ2MTZiNjUgLy8gIm1pbkVudHJ5U3Rha2UiCglhcHBfZ2xvYmFsX2dldAoJPj0KCXx8Cgoqc2tpcF9vcjA6CgkvLyBjYW5ub3QgcmVkdWNlIGJhbGFuY2UgYmVsb3cgbWluaW11bSBhbGxvd2VkIHN0YWtlIHVubGVzcyBhbGwgaXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM2CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICBub3RlOiAndW5zdGFrZWQnLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJYnl0ZSAweDc1NmU3Mzc0NjE2YjY1NjQgLy8gInVuc3Rha2VkIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MQoJLy8gc3Rha2VyUmVtb3ZlZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCgkvLyAqaWYxM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNDUKCS8vIGNtcFN0YWtlci5hY2NvdW50ID0gZ2xvYmFscy56ZXJvQWRkcmVzcwoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMAoJZ2xvYmFsIFplcm9BZGRyZXNzCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ4CgkvLyBzdGFrZXJSZW1vdmVkID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgNCAvLyBzdGFrZXJSZW1vdmVkOiBib29sCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTEKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzU0CgkvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOCA9IChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKGFtb3VudFRvVW5zdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgNiAvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYxCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM2MgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludCAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTEKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50IDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjE3X2Vsc2UKCgkvLyAqaWYxN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTkKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDAxCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA0IC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA2CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQwNwoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgNCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDgKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDkKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTEKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTIKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxN19lbmQKCippZjE3X2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTcKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MjcKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc3Rha2VSZW1vdmVkPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvLyBubyBhbGdvIHJlbW92ZWQKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBzdGFrZXIgaXNuJ3QgYmVpbmcgcmVtb3ZlZC4KCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDI4CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJY29uY2F0Cgl0eG5hIEFwcGxpY2F0aW9ucyAwCglpdG9iCgljb25jYXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlckluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VySW5mbyhhZGRyZXNzKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0U3Rha2VySW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFN0YWtlckluZm8oc3Rha2VyOiBBZGRyZXNzKTogU3Rha2VkSW5mbwovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHJldHVybnMge1N0YWtlZEluZm99IC0gVGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHN0YWtlci4KLy8gQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHN0YWtlcidzIGFjY291bnQgaXMgbm90IGZvdW5kLgpnZXRTdGFrZXJJbmZvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmMThfZW5kCgoJLy8gKmlmMThfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDU0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxOF9lbmQ6CgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NgoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCAzMgoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKmdldFN0YWtlckluZm8qcmV0dXJuCgoqaWYxOV9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCgoqZ2V0U3Rha2VySW5mbypyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9wYXlUb2tlblJld2FyZDoKCS8vIGFtb3VudFRvU2VuZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChzdGFrZXIpIGZvciBwYXlUb2tlblJld2FyZCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBwYXlUb2tlblJld2FyZAoJaW50IDEKCXJldHVybgoKLy8gcGF5VG9rZW5SZXdhcmQoc3Rha2VyOiBBZGRyZXNzLCByZXdhcmRUb2tlbjogdWludDY0LCBhbW91bnRUb1NlbmQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gW0ludGVybmFsIHByb3RvY29sIG1ldGhvZF0gUmVtb3ZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiAnY29tbXVuaXR5IHRva2VuJyByZXdhcmRzIGZvciBhIHN0YWtlci4KLy8gVGhpcyBjYW4gT05MWSBiZSBjYWxsZWQgYnkgb3VyIHZhbGlkYXRvciBhbmQgb25seSBpZiB3ZSdyZSBwb29sIDEgLSB3aXRoIHRoZSB0b2tlbi4KLy8gTm90ZTogdGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIGFzIHBhcnQgb2YgT1dORVIgd2FudGluZyB0byBzZW5kIHRoZSByZXdhcmQgdG9rZW5zCi8vIHNvbWV3aGVyZSBlbHNlIChpZSBpZiB0aGV5J3JlIHN1bnNldHRpbmcgdGhlaXIgdmFsaWRhdG9yIGFuZCBuZWVkIHRoZSByZXdhcmQgdG9rZW5zIGJhY2spLgovLyBJdCdzIHVwIHRvIHRoZSB2YWxpZGF0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGJhbGFuY2UgaW4gcmV3YXJkVG9rZW5IZWxkQmFjayBpcyBob25vcmVkLgovLyBAcGFyYW0gc3Rha2VyIC0gdGhlIHN0YWtlciBhY2NvdW50IHRvIHNlbmQgcmV3YXJkcyB0bwovLyBAcGFyYW0gcmV3YXJkVG9rZW4gLSBpZCBvZiByZXdhcmQgdG9rZW4gKHRvIGF2b2lkIHJlLWVudHJhbmN5IGluIGNhbGxpbmcgdmFsaWRhdG9yIGJhY2sgdG8gZ2V0IGlkKQovLyBAcGFyYW0gYW1vdW50VG9TZW5kIC0gYW1vdW50IHRvIHNlbmQgdGhlIHN0YWtlciAodGhlcmUgaXMgc2lnbmlmaWNhbnQgdHJ1c3QgaGVyZSghKSAtIGFsc28gd2h5IG9ubHkgdmFsaWRhdG9yIGNhbiBjYWxsIHVzCnBheVRva2VuUmV3YXJkOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICAndGhpcyBjYW4gb25seSBiZSBjYWxsZWQgdmlhIHRoZSB2YWxpZGF0b3IgY29udHJhY3QnLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzkKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ211c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMnKQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgk9PQoKCS8vIG11c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuICE9PSAwLCAnY2FuIG9ubHkgY2xhaW0gdG9rZW4gcmV3YXJkcyBmcm9tIHZhbGlkYXRvciB0aGF0IGhhcyB0aGVtJykKCWZyYW1lX2RpZyAtMiAvLyByZXdhcmRUb2tlbjogdWludDY0CglpbnQgMAoJIT0KCgkvLyBjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pLAoJLy8gICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZCwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pCglmcmFtZV9kaWcgLTIgLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODUKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg2CgkvLyBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCiphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXI6CgkvLyBhbGdvZFZlcjogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGV4ZWN1dGUgdXBkYXRlQWxnb2RWZXIoc3RyaW5nKXZvaWQKCWNhbGxzdWIgdXBkYXRlQWxnb2RWZXIKCWludCAxCglyZXR1cm4KCi8vIHVwZGF0ZUFsZ29kVmVyKGFsZ29kVmVyOiBzdHJpbmcpOiB2b2lkCi8vCi8vIFVwZGF0ZSB0aGUgKGhvbm9yIHN5c3RlbSkgYWxnb2QgdmVyc2lvbiBmb3IgdGhlIG5vZGUgYXNzb2NpYXRlZCB0byB0aGlzIHBvb2wuICBUaGUgbm9kZSBtYW5hZ2VtZW50IGRhZW1vbgovLyBzaG91bGQgY29tcGFyZSBpdHMgY3VycmVudCBub2RlcyB2ZXJzaW9uIHRvIHRoZSB2ZXJzaW9uIHN0b3JlZCBpbiBnbG9iYWwgc3RhdGUsIHVwZGF0aW5nIHdoZW4gZGlmZmVyZW50LgovLyBUaGUgcmV0aSBub2RlIGRhZW1vbiBjb21wb3NlcyBpdHMgb3duIHZlcnNpb24gc3RyaW5nIHVzaW5nIGZvcm1hdDoKLy8ge21ham9yfS57bWlub3J9LntidWlsZH0ge2JyYW5jaH0gW3tjb21taXQgaGFzaH1dLAovLyBpZTogMy4yMi4wIHJlbC9zdGFibGUgWzZiNTA4OTc1XQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0FMTCBdCi8vIEBwYXJhbSB7c3RyaW5nfSBhbGdvZFZlciAtIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFsZ29yYW5kIG5vZGUgZGFlbW9uIHZlcnNpb24gKHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biBtZXRhIHZlcnNpb24pCnVwZGF0ZUFsZ29kVmVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAwCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MDEKCS8vIHRoaXMuYWxnb2RWZXIudmFsdWUgPSBhbGdvZFZlcgoJYnl0ZSAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50IDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MTYKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjMKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB2YWxpZGF0b3JDb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2OSA0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI0CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAyIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjUKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyOAoJLy8gbGFzdFBheW91dEVwb2NoID0gdGhpcy5sYXN0UGF5b3V0LnZhbHVlIC0gKHRoaXMubGFzdFBheW91dC52YWx1ZSAlIGVwb2NoUm91bmRMZW5ndGgpCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIGxhc3RQYXlvdXRFcG9jaDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTMwCgkvLyBhc3NlcnQobGFzdFBheW91dEVwb2NoICE9PSB0aGlzRXBvY2hCZWdpbiwgImNhbid0IGNhbGwgZXBvY2hCYWxhbmNlVXBkYXRlIGluIHNhbWUgZXBvY2ggYXMgcHJpb3IgY2FsbCIpCglmcmFtZV9kaWcgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMgoJLy8gdGhpcy5jaGVja0lmQmluQ2xvc2VkKCkKCWNhbGxzdWIgY2hlY2tJZkJpbkNsb3NlZAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNQoJLy8gdGhpcy5sYXN0UGF5b3V0LnZhbHVlID0gY3VyUm91bmQKCWJ5dGUgMHg2YzYxNzM3NDUwNjE3OTZmNzU3NCAvLyAibGFzdFBheW91dCIKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTM2CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlICs9IDEKCWJ5dGUgMHg2NTcwNmY2MzY4NGU3NTZkNjI2NTcyIC8vICJlcG9jaE51bWJlciIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50IDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkhPQoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTUxCgkvLyBwb29sT25lQXBwSUQgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFBvb2xBcHBJZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTMKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBwb29sT25lQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1NQoJLy8gcG9vbE9uZUFkZHJlc3MgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkuYWRkcmVzcwoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfYnVyeSA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjIyX2Vsc2UKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjEKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnNldFRva2VuUGF5b3V0UmF0aW8+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTYyCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTY4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjkKCS8vIG1ldGhvZEFyZ3M6IFt7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH1dCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU3NwoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJLQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg4CgkvLyBhbGdvU2F0dXJhdGlvbkFtdCA9IHRoaXMuYWxnb1NhdHVyYXRpb25MZXZlbCgpCgljYWxsc3ViIGFsZ29TYXR1cmF0aW9uTGV2ZWwKCWZyYW1lX2J1cnkgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoKCS8vICppZjIzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk2CgkvLyB2YWxpZGF0b3JTdGF0ZS50b3RhbEFsZ29TdGFrZWQgPiBhbGdvU2F0dXJhdGlvbkFtdAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0Cgk+CglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1OTcKCS8vIGlzUG9vbFNhdHVyYXRlZCA9IHRydWUKCWludCAxCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjAzCgkvLyB0b2tlblJld2FyZEF2YWlsID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA0CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNQoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA2CgkvLyBleGNlc3NUb0ZlZVNpbmsgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA3CgkvLyBpc1Rva2VuRWxpZ2libGUKCWZyYW1lX2RpZyA1IC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA4CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICAgICAgcG9vbE9uZUFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEwIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTMKCS8vIHRva2VuUmV3YXJkQmFsID49IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQKCWZyYW1lX2RpZyAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJPj0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYxOQoJLy8gb3VyUG9vbFBjdE9mV2hvbGUgPSB0b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW3RoaXMucG9vbElkLnZhbHVlIC0gMV0KCWZyYW1lX2RpZyA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCglpbnQgMAoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgktCglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2J1cnkgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYyMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IHdpZGVSYXRpbyhbdmFsaWRhdG9yQ29uZmlnLnJld2FyZFBlclBheW91dCwgb3VyUG9vbFBjdE9mV2hvbGVdLCBbMV8wMDBfMDAwXSkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2MSA4CglidG9pCglmcmFtZV9kaWcgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKKmlmMjVfZW5kOgoKKmlmMjRfZW5kOgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjUKCS8vIHRva2VuUmV3YXJkQXZhaWwgPT09IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzAKCS8vIGFsZ29SZXdhcmRBdmFpbCA8IDFfMDAwXzAwMAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMV8wMDBfMDAwCgk8CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzEKCS8vIGxvZygnIXRva2VuJiYhbm9hbGdvIHRvIHBheScpCglieXRlIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnQgMAoJaW50IDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTUKCS8vIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU2CgkvLyByZWNlaXZlcjogYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS5mZWVTaW5rCgl0eG4gRmlyc3RWYWxpZAoJaW50IDEKCS0KCWJsb2NrIEJsa0ZlZVNpbmsKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTcKCS8vIG5vdGU6ICdwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rJwoJYnl0ZSAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnQgMl8xMDBfMDAwCgk8CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NQoJLy8gbWFuYWdlclRvcE9mZiA9IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDwgMl8xMDBfMDAwID8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgOiAyXzEwMF8wMDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMl8xMDBfMDAwCgk8CglieiAqdGVybmFyeTFfZmFsc2UKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgliICp0ZXJuYXJ5MV9lbmQKCip0ZXJuYXJ5MV9mYWxzZToKCWludCAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODcKCS8vIGFtb3VudDogbWFuYWdlclRvcE9mZgoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODgKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcubWFuYWdlcgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODkKCS8vIG5vdGU6ICd2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcycKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50IDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NAoJLy8gYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgktCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NQoJLy8gcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTc3IDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njk2CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCcKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCA0MDAKCTwKCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDY0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnQgMTAwMAoJKgoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgkvCglmcmFtZV9idXJ5IDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCgkvLyAqaWYzOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1OAoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjAKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnVG9rZW5SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSwgMTAwMF0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI2IC8vIG9yaWdUb2tlblJld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmMzhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzcyCgkvLyBzdGFrZXJSZXdhcmQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ0FsZ29SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlLCAxMDAwXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNSAvLyBvcmlnQWxnb1Jld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc3OAoJLy8gYWxnb1Jld2FyZEF2YWlsIC09IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODEKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDMyIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODIKCS8vIGNtcFN0YWtlci50b3RhbFJld2FyZGVkICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDQwIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODMKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzg1CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk3CgkvLyBuZXdQb29sVG90YWxTdGFrZSA+IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzlfZW5kCgoJLy8gKmlmMzlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoKKmZvcl81OgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl81X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmNDBfZW5kCgoJLy8gKmlmNDBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MDMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgNjQKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgNDggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE5CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDM3IC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCippZjQzX2VuZDoKCS8vICppZjQ0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODIxCgkvLyBhbGdvUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgYWxnb1Jld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI4CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0MCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODMwCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKKmlmNDRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODM0CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl81X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgoqaWYzOV9lbmQ6CgoqaWYzM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDQKCS8vIHJvdW5kc0xlZnRJbkJpbiA9IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIC0gZ2xvYmFscy5yb3VuZAoJYnl0ZSAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IC8vICJiaW5Sb3VuZFN0YXJ0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMzkgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGluY3JlYXNlZFN0YWtlCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ2CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPQoJLy8gICAgICAgICAgICAgdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlICsgKGluY3JlYXNlZFN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZSAweDcyNjU3NzYxNzI2NDQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInJld2FyZEFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU0CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlVXBkYXRlZFZpYVJld2FyZHM+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBnb09ubGluZShwYXksYnl0ZVtdLGJ5dGVbXSxieXRlW10sdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2dvT25saW5lOgoJLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyB2b3RlTGFzdDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdm90ZUZpcnN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBzdGF0ZVByb29mUEs6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBzZWxlY3Rpb25QSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIHZvdGVQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGZlZVBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnQgMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQga2V5cmVnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkyCgkvLyB2b3RlUEs6IHZvdGVQSwoJZnJhbWVfZGlnIC0yIC8vIHZvdGVQSzogYnl0ZXMKCWl0eG5fZmllbGQgVm90ZVBLCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkzCgkvLyBzZWxlY3Rpb25QSzogc2VsZWN0aW9uUEsKCWZyYW1lX2RpZyAtMyAvLyBzZWxlY3Rpb25QSzogYnl0ZXMKCWl0eG5fZmllbGQgU2VsZWN0aW9uUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTQKCS8vIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLCglmcmFtZV9kaWcgLTQgLy8gc3RhdGVQcm9vZlBLOiBieXRlcwoJaXR4bl9maWVsZCBTdGF0ZVByb29mUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTUKCS8vIHZvdGVGaXJzdDogdm90ZUZpcnN0CglmcmFtZV9kaWcgLTUgLy8gdm90ZUZpcnN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUZpcnN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk2CgkvLyB2b3RlTGFzdDogdm90ZUxhc3QKCWZyYW1lX2RpZyAtNiAvLyB2b3RlTGFzdDogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVMYXN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk3CgkvLyB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbgoJZnJhbWVfZGlnIC03IC8vIHZvdGVLZXlEaWx1dGlvbjogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVLZXlEaWx1dGlvbgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5OAoJLy8gZmVlOiBleHRyYUZlZQoJZnJhbWVfZGlnIDAgLy8gZXh0cmFGZWU6IHVpbnQ2NAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT2ZmbGluZSgpdm9pZAoqYWJpX3JvdXRlX2dvT2ZmbGluZToKCS8vIGV4ZWN1dGUgZ29PZmZsaW5lKCl2b2lkCgljYWxsc3ViIGdvT2ZmbGluZQoJaW50IDEKCXJldHVybgoKLy8gZ29PZmZsaW5lKCk6IHZvaWQKLy8KLy8gTWFya3MgYSBzdGFraW5nIHBvb2wga2V5IE9GRkxJTkUuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KZ29PZmZsaW5lOgoJcHJvdG8gMCAwCgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTAKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcwoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMQoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoqaWY0NV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTQKCS8vIHNlbmRPZmZsaW5lS2V5UmVnaXN0cmF0aW9uKHt9KQoJaXR4bl9iZWdpbgoJaW50IGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50IDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjQKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglieXRlIDB4NzY2NTcyNjk2Njc5NWY2ZTY2NjQ1ZjYxNjQ2NDcyIC8vICJ2ZXJpZnlfbmZkX2FkZHIiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI2CgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElkKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgcG9vbHMgIT0gMSAtIGNhbGxpbmcgVVMsIHBvb2wgIzEKLy8gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSBhcmUgaW4gZmFjdCBiZWluZyBjYWxsZWQgYnkgYW5vdGhlciBvZiBPVVIgcG9vbHMgKG5vdCB1cykKLy8gYW5kIHRoZW4gd2UnbGwgY2FsbCB0aGUgdmFsaWRhdG9yIG9uIHRoZWlyIGJlaGFsZiB0byB1cGRhdGUgdGhlIHRva2VuIHBheW91dHMKLy8gQHBhcmFtIHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR1cGxlCnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzcKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvcklkLnZhbHVlID09PSBwb29sS2V5LmlkLCAnY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhJykKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzgKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ2NhbGxlZSBtdXN0IGJlIHBvb2wgMScpCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgoJLy8gY2FsbGVlIG11c3QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzkKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCAhPT0gMSwgJ2NhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJIT0KCgkvLyBjYWxsZXIgbXVzdCBOT1QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDEKCS8vIGNhbGxlclBvb2xBcHBJRCA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0UG9vbEFwcElkPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDkKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTUwCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCk6IGJvb2xlYW4KaXNPd25lck9yTWFuYWdlckNhbGxlcjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU1CgkvLyBPd25lckFuZE1hbmFnZXIgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcj4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU3CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTkKCS8vIHJldHVybiB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclswXSB8fCB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclsxXQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAwIDMyCgk9PQoJZHVwCglibnogKnNraXBfb3IyCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCglleHRyYWN0IDMyIDMyCgk9PQoJfHwKCipza2lwX29yMjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnQgMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoKCS8vICppZjQ3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTg5CgkvLyBnbG9iYWxzLnJvdW5kID49IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIChjdXJyZW50QmluU2l6ZSBhcyB1aW50NjQpCglnbG9iYWwgUm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gY3VycmVudEJpblNpemUgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludCA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCgkrCgk+PQoJYnogKmlmNDdfZW5kCgoJLy8gKmlmNDdfY29uc2VxdWVudAoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTAKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgMzAwCgk8CglieiAqaWY0OF9lbmQKCgkvLyAqaWY0OF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTEKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGUgYjY0IENvRUIgLy8gI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50IERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjQ4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MwoJLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOCA9IGN1cnJlbnRCaW5TaXplICogKDM2NSBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNmQKCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyBjdXJyZW50QmluU2l6ZSAqICgzNjUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk0CgkvLyBhdmdTdGFrZTogdWludDEyOCA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAvIGN1cnJlbnRCaW5TaXplCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYiE9CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTkKCS8vIGFwcjogdWludDEyOCA9CgkvLyAgICAgICAgICAgICAgICAgICAgICgoKHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgYXMgdWludDEyOCkgKiAoMTAwMDAgYXMgdWludDEyOCkpIC8gYXZnU3Rha2UpICoKCS8vICAgICAgICAgICAgICAgICAgICAgKGFwcHJveFJvdW5kc1BlclllYXIgLyBjdXJyZW50QmluU2l6ZSkKCWJ5dGUgMHg3MjY1Nzc2MTcyNjQ0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJyZXdhcmRBY2N1bXVsYXRvciIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAKCWIqCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYi8KCWZyYW1lX2RpZyAxIC8vIGFwcHJveFJvdW5kc1BlclllYXI6IHVpbnQxMjgKCWZyYW1lX2RpZyAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoJYi8KCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqXG4gICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDMgLy8gYXByOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwMwoJLy8gYWxwaGE6IHVpbnQxMjggPSAxMCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NWQ5NjRiODAwCgliPgoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwNgoJLy8gYWxwaGEgPSA5MCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNWEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCippZjUwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDgKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0KCS8vICAgICAgICAgICAgICAgICAgICAgKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpCglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYi0KCWIqCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJYi8KCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAodGhpcy53ZWlnaHRlZE1vdmluZ0F2ZXJhZ2UudmFsdWUgKiAoKDEwMCBhcyB1aW50MTI4KSAtIGFscGhhKSkgLyAoMTAwIGFzIHVpbnQxMjgpICtcbiAgICAgICAgICAgICAgICAgICAgKGFwciAqIGFscGhhKSAvICgxMDAgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoqaWY0OV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE0CgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9ICh0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSBhcyB1aW50MTI4KSAqICh0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIGFzIHVpbnQxMjgpICogKHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTYKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCippZjQ3X2VuZDoKCXJldHN1YgoKLy8gc2V0Um91bmRzUGVyRGF5KCk6IHZvaWQKc2V0Um91bmRzUGVyRGF5OgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjYKCS8vIHRoaXMudHhuLmZpcnN0VmFsaWQgPCAxMgoJdHhuIEZpcnN0VmFsaWQKCWludCAxMgoJPAoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOAoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglpbnQgMzA4NTcKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOQoJLy8gcmV0dXJuCglyZXRzdWIKCippZjUxX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzIKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9CgkvLyAgICAgICAgICAgICBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLnRpbWVzdGFtcCAtIGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMTFdLnRpbWVzdGFtcAoJdHhuIEZpcnN0VmFsaWQKCWludCAxCgktCglibG9jayBCbGtUaW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnQgMTEKCS0KCWJsb2NrIEJsa1RpbWVzdGFtcAoJLQoJZnJhbWVfYnVyeSAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM0CgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPT09IDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjUyX2VuZAoKCS8vICppZjUyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzYKCS8vIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlID0gQVBQUk9YX0FWR19ST1VORFNfUEVSX0RBWQoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJaW50IDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1Ml9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDQyCgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9ICgyNCAqIDYwICogNjAgKiAxMCkgLyBhdmdCbG9ja1RpbWVUZW50aHMKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJnYXMoKXZvaWQiCgltZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCgltZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCgltZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCgltZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCgltZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfaW5pdFN0b3JhZ2UgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3JlbW92ZVN0YWtlICphYmlfcm91dGVfY2xhaW1Ub2tlbnMgKmFiaV9yb3V0ZV9nZXRTdGFrZXJJbmZvICphYmlfcm91dGVfcGF5VG9rZW5SZXdhcmQgKmFiaV9yb3V0ZV91cGRhdGVBbGdvZFZlciAqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZSAqYWJpX3JvdXRlX2dvT25saW5lICphYmlfcm91dGVfZ29PZmZsaW5lICphYmlfcm91dGVfbGlua1RvTkZEICphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/contracts/contracts/artifacts/StakingPool.arc56_draft.json b/contracts/contracts/artifacts/StakingPool.arc56_draft.json index da50e27b..a7a09fda 100644 --- a/contracts/contracts/artifacts/StakingPool.arc56_draft.json +++ b/contracts/contracts/artifacts/StakingPool.arc56_draft.json @@ -488,19073 +488,18757 @@ "call": [] }, "sourceInfo": { - "approval": [ - { - "teal": 1, - "source": 37, - "pc": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296 - ] - }, - { - "teal": 9, - "source": 37, - "pc": [ - 297, - 298 - ] - }, - { - "teal": 10, - "source": 37, - "pc": [ - 299 - ] - }, - { - "teal": 11, - "source": 37, - "pc": [ - 300, - 301 - ] - }, - { - "teal": 18, - "source": 37, - "pc": [ - 302, - 303 - ] - }, - { - "teal": 19, - "source": 37, - "pc": [ - 304 - ] - }, - { - "teal": 20, - "source": 37, - "pc": [ - 305 - ] - }, - { - "teal": 21, - "source": 37, - "pc": [ - 306 - ] - }, - { - "teal": 22, - "source": 37, - "pc": [ - 307, - 308 - ] - }, - { - "teal": 23, - "source": 37, - "pc": [ - 309 - ] - }, - { - "teal": 24, - "source": 37, - "pc": [ - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335 - ] - }, - { - "teal": 28, - "source": 37, - "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", - "pc": [ - 336 - ] - }, - { - "teal": 33, - "source": 101, - "pc": [ - 337, - 338, - 339 - ] - }, - { - "teal": 34, - "source": 101, - "pc": [ - 340 - ] - }, - { - "teal": 37, - "source": 101, - "pc": [ - 341, - 342, - 343 - ] - }, - { - "teal": 38, - "source": 101, - "pc": [ - 344 - ] - }, - { - "teal": 41, - "source": 101, - "pc": [ - 345, - 346, - 347 - ] - }, - { - "teal": 42, - "source": 101, - "pc": [ - 348 - ] - }, - { - "teal": 45, - "source": 101, - "pc": [ - 349, - 350, - 351 - ] - }, - { - "teal": 46, - "source": 101, - "pc": [ - 352 - ] - }, - { - "teal": 49, - "source": 101, - "pc": [ - 353, - 354, - 355 - ] - }, - { - "teal": 50, - "source": 101, - "pc": [ - 356 - ] - }, - { - "teal": 51, - "source": 101, - "pc": [ - 357 - ] - }, - { - "teal": 61, - "source": 101, - "pc": [ - 358, - 359, - 360 - ] - }, - { - "teal": 66, - "source": 102, - "pc": [ - 361, - 362 - ] - }, - { - "teal": 67, - "source": 102, - "pc": [ - 363 - ] - }, - { - "teal": 68, - "source": 102, - "pc": [ - 364 - ] - }, - { - "teal": 69, - "source": 102, - "pc": [ - 365, - 366, - 367 - ] - }, - { - "teal": 74, - "source": 104, - "pc": [ - 368, - 369 - ] - }, - { - "teal": 75, - "source": 104, - "pc": [ - 370 - ] - }, - { - "teal": 76, - "source": 104, - "pc": [ - 371 - ] - }, - { - "teal": 77, - "source": 104, - "pc": [ - 372 - ] - }, - { - "teal": 81, - "source": 105, - "pc": [ - 373, - 374 - ] - }, - { - "teal": 82, - "source": 105, - "pc": [ - 375 - ] - }, - { - "teal": 83, - "source": 105, - "pc": [ - 376 - ] - }, - { - "teal": 84, - "source": 105, - "pc": [ - 377 - ] - }, - { - "teal": 85, - "source": 102, - "pc": [ - 378, - 379, - 380 - ] - }, - { - "teal": 90, - "source": 107, - "pc": [ - 381, - 382 - ] - }, - { - "teal": 91, - "source": 107, - "pc": [ - 383 - ] - }, - { - "teal": 92, - "source": 107, - "pc": [ - 384 - ] - }, - { - "teal": 93, - "source": 107, - "pc": [ - 385 - ] - }, - { - "teal": 97, - "source": 108, - "pc": [ - 386, - 387 - ] - }, - { - "teal": 98, - "source": 108, - "pc": [ - 388 - ] - }, - { - "teal": 99, - "source": 108, - "pc": [ - 389 - ] - }, - { - "teal": 100, - "source": 108, - "pc": [ - 390 - ] - }, - { - "teal": 105, - "source": 110, - "pc": [ - 391, - 392 - ] - }, - { - "teal": 106, - "source": 110, - "pc": [ - 393, - 394 - ] - }, - { - "teal": 107, - "source": 110, - "pc": [ - 395 - ] - }, - { - "teal": 110, - "source": 110, - "errorMessage": "staking pool must have minimum entry of 1 algo", - "pc": [ - 396 - ] - }, - { - "teal": 114, - "source": 111, - "pc": [ - 397 - ] - }, - { - "teal": 115, - "source": 111, - "pc": [ - 398, - 399 - ] - }, - { - "teal": 116, - "source": 111, - "pc": [ - 400 - ] - }, - { - "teal": 120, - "source": 112, - "pc": [ - 401 - ] - }, - { - "teal": 121, - "source": 112, - "pc": [ - 402, - 403 - ] - }, - { - "teal": 122, - "source": 112, - "pc": [ - 404 - ] - }, - { - "teal": 126, - "source": 113, - "pc": [ - 405 - ] - }, - { - "teal": 127, - "source": 113, - "pc": [ - 406, - 407 - ] - }, - { - "teal": 128, - "source": 113, - "pc": [ - 408 - ] - }, - { - "teal": 132, - "source": 114, - "pc": [ - 409, - 410 - ] - }, - { - "teal": 133, - "source": 114, - "pc": [ - 411 - ] - }, - { - "teal": 134, - "source": 114, - "pc": [ - 412 - ] - }, - { - "teal": 138, - "source": 115, - "pc": [ - 413, - 414 - ] - }, - { - "teal": 139, - "source": 115, - "pc": [ - 415 - ] - }, - { - "teal": 140, - "source": 115, - "pc": [ - 416 - ] - }, - { - "teal": 144, - "source": 116, - "pc": [ - 417, - 418 - ] - }, - { - "teal": 145, - "source": 116, - "pc": [ - 419, - 420 - ] - }, - { - "teal": 146, - "source": 116, - "pc": [ - 421 - ] - }, - { - "teal": 150, - "source": 117, - "pc": [ - 422, - 423 - ] - }, - { - "teal": 151, - "source": 117, - "pc": [ - 424, - 425 - ] - }, - { - "teal": 152, - "source": 117, - "pc": [ - 426 - ] - }, - { - "teal": 156, - "source": 118, - "pc": [ - 427, - 428 - ] - }, - { - "teal": 157, - "source": 118, - "pc": [ - 429 - ] - }, - { - "teal": 158, - "source": 118, - "pc": [ - 430 - ] - }, - { - "teal": 162, - "source": 120, - "pc": [ - 431, - 432, - 433 - ] - }, - { - "teal": 166, - "source": 121, - "pc": [ - 434, - 435 - ] - }, - { - "teal": 167, - "source": 121, - "pc": [ - 436, - 437 - ] - }, - { - "teal": 168, - "source": 121, - "pc": [ - 438, - 439 - ] - }, - { - "teal": 169, - "source": 121, - "pc": [ - 440, - 441 - ] - }, - { - "teal": 170, - "source": 121, - "pc": [ - 442 - ] - }, - { - "teal": 171, - "source": 121, - "pc": [ - 443 - ] - }, - { - "teal": 172, - "source": 121, - "pc": [ - 444 - ] - }, - { - "teal": 173, - "source": 121, - "pc": [ - 445 - ] - }, - { - "teal": 177, - "source": 122, - "pc": [ - 446, - 447 - ] - }, - { - "teal": 178, - "source": 122, - "pc": [ - 448, - 449 - ] - }, - { - "teal": 179, - "source": 122, - "pc": [ - 450 - ] - }, - { - "teal": 183, - "source": 123, - "pc": [ - 451, - 452 - ] - }, - { - "teal": 184, - "source": 123, - "pc": [ - 453 - ] - }, - { - "teal": 185, - "source": 123, - "pc": [ - 454 - ] - }, - { - "teal": 189, - "source": 124, - "pc": [ - 455, - 456 - ] - }, - { - "teal": 190, - "source": 124, - "pc": [ - 457, - 458 - ] - }, - { - "teal": 191, - "source": 124, - "pc": [ - 459 - ] - }, - { - "teal": 192, - "source": 101, - "pc": [ - 460 - ] - }, - { - "teal": 197, - "source": 130, - "pc": [ - 461, - 462, - 463 - ] - }, - { - "teal": 198, - "source": 130, - "pc": [ - 464 - ] - }, - { - "teal": 199, - "source": 130, - "pc": [ - 465 - ] - }, - { - "teal": 205, - "source": 130, - "pc": [ - 466, - 467, - 468 - ] - }, - { - "teal": 206, - "source": 130, - "pc": [ - 469 - ] - }, - { - "teal": 210, - "source": 132, - "pc": [ - 470, - 471, - 472 - ] - }, - { - "teal": 214, - "source": 136, - "pc": [ - 473, - 474, - 475 - ] - }, - { - "teal": 215, - "source": 136, - "pc": [ - 476, - 477 - ] - }, - { - "teal": 216, - "source": 136, - "pc": [ - 478, - 479 - ] - }, - { - "teal": 217, - "source": 136, - "pc": [ - 480 - ] - }, - { - "teal": 218, - "source": 136, - "pc": [ - 481 - ] - }, - { - "teal": 219, - "source": 132, - "pc": [ - 482 - ] - }, - { - "teal": 224, - "source": 146, - "pc": [ - 483, - 484 - ] - }, - { - "teal": 225, - "source": 146, - "pc": [ - 485 - ] - }, - { - "teal": 226, - "source": 146, - "pc": [ - 486 - ] - }, - { - "teal": 227, - "source": 146, - "pc": [ - 487 - ] - }, - { - "teal": 228, - "source": 146, - "pc": [ - 488, - 489 - ] - }, - { - "teal": 229, - "source": 146, - "pc": [ - 490 - ] - }, - { - "teal": 230, - "source": 146, - "pc": [ - 491 - ] - }, - { - "teal": 233, - "source": 146, - "errorMessage": "argument 0 (mbrPayment) for initStorage must be a pay transaction", - "pc": [ - 492 - ] - }, - { - "teal": 236, - "source": 146, - "pc": [ - 493, - 494, - 495 - ] - }, - { - "teal": 237, - "source": 146, - "pc": [ - 496 - ] - }, - { - "teal": 238, - "source": 146, - "pc": [ - 497 - ] - }, - { - "teal": 248, - "source": 146, - "pc": [ - 498, - 499, - 500 - ] - }, - { - "teal": 251, - "source": 146, - "pc": [ - 501, - 502 - ] - }, - { - "teal": 252, - "source": 146, - "pc": [ - 503, - 504 - ] - }, - { - "teal": 256, - "source": 147, - "pc": [ - 505 - ] - }, - { - "teal": 257, - "source": 147, - "pc": [ - 506 - ] - }, - { - "teal": 258, - "source": 147, - "pc": [ - 507 - ] - }, - { - "teal": 259, - "source": 147, - "pc": [ - 508 - ] - }, - { - "teal": 260, - "source": 147, - "pc": [ - 509 - ] - }, - { - "teal": 263, - "source": 147, - "errorMessage": "staking pool already initialized", - "pc": [ - 510 - ] - }, - { - "teal": 270, - "source": 150, - "pc": [ - 511 - ] - }, - { - "teal": 271, - "source": 150, - "pc": [ - 512 - ] - }, - { - "teal": 272, - "source": 150, - "pc": [ - 513, - 514 - ] - }, - { - "teal": 273, - "source": 150, - "pc": [ - 515, - 516 - ] - }, - { - "teal": 274, - "source": 150, - "pc": [ - 517, - 518 - ] - }, - { - "teal": 278, - "source": 151, - "pc": [ - 519 - ] - }, - { - "teal": 279, - "source": 151, - "pc": [ - 520 - ] - }, - { - "teal": 280, - "source": 151, - "pc": [ - 521, - 522 - ] - }, - { - "teal": 284, - "source": 152, - "pc": [ - 523 - ] - }, - { - "teal": 285, - "source": 152, - "pc": [ - 524 - ] - }, - { - "teal": 286, - "source": 152, - "pc": [ - 525 - ] - }, - { - "teal": 287, - "source": 152, - "pc": [ - 526, - 527 - ] - }, - { - "teal": 290, - "source": 150, - "pc": [ - 528 - ] - }, - { - "teal": 291, - "source": 150, - "pc": [ - 529, - 530 - ] - }, - { - "teal": 294, - "source": 150, - "pc": [ - 531 - ] - }, - { - "teal": 295, - "source": 150, - "pc": [ - 532, - 533 - ] - }, - { - "teal": 296, - "source": 150, - "pc": [ - 534 - ] - }, - { - "teal": 297, - "source": 150, - "pc": [ - 535 - ] - }, - { - "teal": 298, - "source": 150, - "pc": [ - 536, - 537 - ] - }, - { - "teal": 299, - "source": 150, - "pc": [ - 538, - 539, - 540 - ] - }, - { - "teal": 300, - "source": 150, - "pc": [ - 541, - 542 - ] - }, - { - "teal": 304, - "source": 154, - "pc": [ - 543, - 544 - ] - }, - { - "teal": 305, - "source": 154, - "pc": [ - 545, - 546, - 547 - ] - }, - { - "teal": 306, - "source": 154, - "pc": [ - 548 - ] - }, - { - "teal": 307, - "source": 154, - "pc": [ - 549 - ] - }, - { - "teal": 308, - "source": 154, - "pc": [ - 550 - ] - }, - { - "teal": 309, - "source": 154, - "pc": [ - 551, - 552 - ] - }, - { - "teal": 313, - "source": 155, - "pc": [ - 553, - 554 - ] - }, - { - "teal": 314, - "source": 155, - "pc": [ - 555 - ] - }, - { - "teal": 315, - "source": 155, - "pc": [ - 556, - 557, - 558 - ] - }, - { - "teal": 316, - "source": 155, - "pc": [ - 559 - ] - }, - { - "teal": 317, - "source": 155, - "pc": [ - 560 - ] - }, - { - "teal": 318, - "source": 155, - "pc": [ - 561 - ] - }, - { - "teal": 319, - "source": 155, - "pc": [ - 562 - ] - }, - { - "teal": 320, - "source": 155, - "pc": [ - 563 - ] - }, - { - "teal": 323, - "source": 155, - "pc": [ - 564, - 565, - 566 - ] - }, - { - "teal": 324, - "source": 155, - "pc": [ - 567, - 568 - ] - }, - { - "teal": 325, - "source": 155, - "pc": [ - 569, - 570, - 571 - ] - }, - { - "teal": 328, - "source": 155, - "pc": [ - 572 - ] - }, - { - "teal": 331, - "source": 155, - "pc": [ - 573, - 574 - ] - }, - { - "teal": 338, - "source": 157, - "pc": [ - 575, - 576 - ] - }, - { - "teal": 339, - "source": 158, - "pc": [ - 577, - 578 - ] - }, - { - "teal": 340, - "source": 157, - "pc": [ - 579 - ] - }, - { - "teal": 341, - "source": 159, - "pc": [ - 580, - 581, - 582 - ] - }, - { - "teal": 342, - "source": 159, - "pc": [ - 583, - 584, - 585 - ] - }, - { - "teal": 343, - "source": 158, - "pc": [ - 586 - ] - }, - { - "teal": 344, - "source": 156, - "pc": [ - 587, - 588 - ] - }, - { - "teal": 349, - "source": 162, - "pc": [ - 589, - 590 - ] - }, - { - "teal": 350, - "source": 162, - "pc": [ - 591, - 592 - ] - }, - { - "teal": 351, - "source": 162, - "pc": [ - 593, - 594 - ] - }, - { - "teal": 352, - "source": 162, - "pc": [ - 595 - ] - }, - { - "teal": 355, - "source": 162, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 596 - ] - }, - { - "teal": 358, - "source": 162, - "pc": [ - 597, - 598 - ] - }, - { - "teal": 359, - "source": 162, - "pc": [ - 599, - 600 - ] - }, - { - "teal": 360, - "source": 162, - "pc": [ - 601, - 602 - ] - }, - { - "teal": 361, - "source": 162, - "pc": [ - 603 - ] - }, - { - "teal": 364, - "source": 162, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}", - "pc": [ - 604 - ] - }, - { - "teal": 368, - "source": 163, - "pc": [ - 605 - ] - }, - { - "teal": 369, - "source": 163, - "pc": [ - 606, - 607, - 608 - ] - }, - { - "teal": 370, - "source": 163, - "pc": [ - 609 - ] - }, - { - "teal": 371, - "source": 163, - "pc": [ - 610 - ] - }, - { - "teal": 376, - "source": 165, - "pc": [ - 611, - 612 - ] - }, - { - "teal": 377, - "source": 165, - "pc": [ - 613 - ] - }, - { - "teal": 378, - "source": 165, - "pc": [ - 614, - 615, - 616 - ] - }, - { - "teal": 379, - "source": 165, - "pc": [ - 617 - ] - }, - { - "teal": 380, - "source": 165, - "pc": [ - 618 - ] - }, - { - "teal": 381, - "source": 165, - "pc": [ - 619 - ] - }, - { - "teal": 382, - "source": 165, - "pc": [ - 620 - ] - }, - { - "teal": 383, - "source": 165, - "pc": [ - 621 - ] - }, - { - "teal": 386, - "source": 165, - "pc": [ - 622, - 623, - 624 - ] - }, - { - "teal": 395, - "source": 167, - "pc": [ - 625 - ] - }, - { - "teal": 396, - "source": 167, - "pc": [ - 626, - 627 - ] - }, - { - "teal": 397, - "source": 167, - "pc": [ - 628, - 629 - ] - }, - { - "teal": 401, - "source": 168, - "pc": [ - 630, - 631 - ] - }, - { - "teal": 402, - "source": 168, - "pc": [ - 632, - 633, - 634 - ] - }, - { - "teal": 403, - "source": 168, - "pc": [ - 635 - ] - }, - { - "teal": 404, - "source": 168, - "pc": [ - 636, - 637 - ] - }, - { - "teal": 408, - "source": 169, - "pc": [ - 638, - 639 - ] - }, - { - "teal": 409, - "source": 169, - "pc": [ - 640, - 641 - ] - }, - { - "teal": 413, - "source": 170, - "pc": [ - 642 - ] - }, - { - "teal": 414, - "source": 170, - "pc": [ - 643, - 644 - ] - }, - { - "teal": 417, - "source": 167, - "pc": [ - 645 - ] - }, - { - "teal": 418, - "source": 167, - "pc": [ - 646, - 647 - ] - }, - { - "teal": 421, - "source": 167, - "pc": [ - 648 - ] - }, - { - "teal": 424, - "source": 146, - "pc": [ - 649 - ] - }, - { - "teal": 429, - "source": 185, - "pc": [ - 650, - 651 - ] - }, - { - "teal": 432, - "source": 185, - "pc": [ - 652, - 653, - 654 - ] - }, - { - "teal": 433, - "source": 185, - "pc": [ - 655 - ] - }, - { - "teal": 434, - "source": 185, - "pc": [ - 656 - ] - }, - { - "teal": 435, - "source": 185, - "pc": [ - 657, - 658 - ] - }, - { - "teal": 436, - "source": 185, - "pc": [ - 659 - ] - }, - { - "teal": 439, - "source": 185, - "errorMessage": "argument 0 (staker) for addStake must be a address", - "pc": [ - 660 - ] - }, - { - "teal": 442, - "source": 185, - "pc": [ - 661, - 662 - ] - }, - { - "teal": 443, - "source": 185, - "pc": [ - 663 - ] - }, - { - "teal": 444, - "source": 185, - "pc": [ - 664 - ] - }, - { - "teal": 445, - "source": 185, - "pc": [ - 665 - ] - }, - { - "teal": 446, - "source": 185, - "pc": [ - 666, - 667 - ] - }, - { - "teal": 447, - "source": 185, - "pc": [ - 668 - ] - }, - { - "teal": 448, - "source": 185, - "pc": [ - 669 - ] - }, - { - "teal": 451, - "source": 185, - "errorMessage": "argument 1 (stakedAmountPayment) for addStake must be a pay transaction", - "pc": [ - 670 - ] - }, - { - "teal": 454, - "source": 185, - "pc": [ - 671, - 672, - 673 - ] - }, - { - "teal": 455, - "source": 185, - "pc": [ - 674 - ] - }, - { - "teal": 456, - "source": 185, - "pc": [ - 675 - ] - }, - { - "teal": 457, - "source": 185, - "pc": [ - 676 - ] - }, - { - "teal": 458, - "source": 185, - "pc": [ - 677 - ] - }, - { - "teal": 459, - "source": 185, - "pc": [ - 678 - ] - }, - { - "teal": 472, - "source": 185, - "pc": [ - 679, - 680, - 681 - ] - }, - { - "teal": 475, - "source": 185, - "pc": [ - 682, - 683 - ] - }, - { - "teal": 476, - "source": 185, - "pc": [ - 684, - 685 - ] - }, - { - "teal": 480, - "source": 186, - "pc": [ - 686 - ] - }, - { - "teal": 481, - "source": 186, - "pc": [ - 687 - ] - }, - { - "teal": 482, - "source": 186, - "pc": [ - 688 - ] - }, - { - "teal": 483, - "source": 186, - "pc": [ - 689 - ] - }, - { - "teal": 486, - "source": 186, - "errorMessage": "staking pool must be initialized first", - "pc": [ - 690 - ] - }, - { - "teal": 493, - "source": 190, - "pc": [ - 691, - 692 - ] - }, - { - "teal": 494, - "source": 190, - "pc": [ - 693 - ] - }, - { - "teal": 495, - "source": 190, - "pc": [ - 694 - ] - }, - { - "teal": 496, - "source": 190, - "pc": [ - 695, - 696 - ] - }, - { - "teal": 497, - "source": 190, - "pc": [ - 697 - ] - }, - { - "teal": 498, - "source": 190, - "pc": [ - 698 - ] - }, - { - "teal": 501, - "source": 189, - "errorMessage": "stake can only be added via the validator contract", - "pc": [ - 699 - ] - }, - { - "teal": 505, - "source": 193, - "pc": [ - 700, - 701 - ] - }, - { - "teal": 506, - "source": 193, - "pc": [ - 702, - 703 - ] - }, - { - "teal": 507, - "source": 193, - "pc": [ - 704 - ] - }, - { - "teal": 508, - "source": 193, - "pc": [ - 705 - ] - }, - { - "teal": 512, - "source": 196, - "pc": [ - 706, - 707, - 708 - ] - }, - { - "teal": 521, - "source": 200, - "pc": [ - 709, - 710 - ] - }, - { - "teal": 522, - "source": 201, - "pc": [ - 711, - 712 - ] - }, - { - "teal": 523, - "source": 201, - "pc": [ - 713 - ] - }, - { - "teal": 524, - "source": 201, - "pc": [ - 714 - ] - }, - { - "teal": 525, - "source": 201, - "pc": [ - 715, - 716 - ] - }, - { - "teal": 526, - "source": 201, - "pc": [ - 717 - ] - }, - { - "teal": 527, - "source": 201, - "pc": [ - 718 - ] - }, - { - "teal": 530, - "source": 201, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}", - "pc": [ - 719 - ] - }, - { - "teal": 533, - "source": 200, - "pc": [ - 720, - 721 - ] - }, - { - "teal": 534, - "source": 202, - "pc": [ - 722, - 723 - ] - }, - { - "teal": 535, - "source": 202, - "pc": [ - 724, - 725 - ] - }, - { - "teal": 536, - "source": 202, - "pc": [ - 726 - ] - }, - { - "teal": 539, - "source": 202, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 727 - ] - }, - { - "teal": 542, - "source": 200, - "pc": [ - 728, - 729 - ] - }, - { - "teal": 543, - "source": 203, - "pc": [ - 730, - 731 - ] - }, - { - "teal": 544, - "source": 203, - "pc": [ - 732, - 733 - ] - }, - { - "teal": 545, - "source": 203, - "pc": [ - 734, - 735 - ] - }, - { - "teal": 546, - "source": 203, - "pc": [ - 736 - ] - }, - { - "teal": 549, - "source": 203, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}", - "pc": [ - 737 - ] - }, - { - "teal": 553, - "source": 209, - "pc": [ - 738, - 739 - ] - }, - { - "teal": 554, - "source": 209, - "pc": [ - 740, - 741, - 742 - ] - }, - { - "teal": 555, - "source": 209, - "pc": [ - 743 - ] - }, - { - "teal": 556, - "source": 209, - "pc": [ - 744, - 745 - ] - }, - { - "teal": 560, - "source": 210, - "pc": [ - 746 - ] - }, - { - "teal": 561, - "source": 210, - "pc": [ - 747, - 748 - ] - }, - { - "teal": 565, - "source": 212, - "pc": [ - 749, - 750 - ] - }, - { - "teal": 566, - "source": 212, - "pc": [ - 751 - ] - }, - { - "teal": 567, - "source": 212, - "pc": [ - 752, - 753 - ] - }, - { - "teal": 568, - "source": 212, - "pc": [ - 754, - 755 - ] - }, - { - "teal": 569, - "source": 212, - "pc": [ - 756 - ] - }, - { - "teal": 570, - "source": 212, - "pc": [ - 757, - 758 - ] - }, - { - "teal": 571, - "source": 212, - "pc": [ - 759 - ] - }, - { - "teal": 572, - "source": 212, - "pc": [ - 760 - ] - }, - { - "teal": 576, - "source": 214, - "pc": [ - 761, - 762 - ] - }, - { - "teal": 577, - "source": 214, - "pc": [ - 763 - ] - }, - { - "teal": 578, - "source": 214, - "pc": [ - 764, - 765 - ] - }, - { - "teal": 579, - "source": 214, - "pc": [ - 766 - ] - }, - { - "teal": 580, - "source": 214, - "pc": [ - 767 - ] - }, - { - "teal": 581, - "source": 214, - "pc": [ - 768, - 769 - ] - }, - { - "teal": 582, - "source": 214, - "pc": [ - 770 - ] - }, - { - "teal": 583, - "source": 214, - "pc": [ - 771, - 772 - ] - }, - { - "teal": 588, - "source": 215, - "pc": [ - 773, - 774 - ] - }, - { - "teal": 589, - "source": 215, - "pc": [ - 775 - ] - }, - { - "teal": 590, - "source": 216, - "pc": [ - 776 - ] - }, - { - "teal": 591, - "source": 216, - "pc": [ - 777, - 778 - ] - }, - { - "teal": 592, - "source": 216, - "pc": [ - 779, - 780 - ] - }, - { - "teal": 593, - "source": 216, - "pc": [ - 781 - ] - }, - { - "teal": 594, - "source": 216, - "pc": [ - 782, - 783 - ] - }, - { - "teal": 595, - "source": 216, - "pc": [ - 784 - ] - }, - { - "teal": 596, - "source": 216, - "pc": [ - 785 - ] - }, - { - "teal": 597, - "source": 216, - "pc": [ - 786 - ] - }, - { - "teal": 598, - "source": 216, - "pc": [ - 787 - ] - }, - { - "teal": 599, - "source": 216, - "pc": [ - 788 - ] - }, - { - "teal": 600, - "source": 216, - "pc": [ - 789, - 790 - ] - }, - { - "teal": 601, - "source": 216, - "pc": [ - 791 - ] - }, - { - "teal": 604, - "source": 216, - "errorMessage": "this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", - "pc": [ - 792 - ] - }, - { - "teal": 605, - "source": 216, - "pc": [ - 793, - 794 - ] - }, - { - "teal": 606, - "source": 216, - "pc": [ - 795 - ] - }, - { - "teal": 607, - "source": 216, - "pc": [ - 796 - ] - }, - { - "teal": 608, - "source": 216, - "pc": [ - 797 - ] - }, - { - "teal": 609, - "source": 216, - "pc": [ - 798 - ] - }, - { - "teal": 610, - "source": 216, - "pc": [ - 799, - 800 - ] - }, - { - "teal": 611, - "source": 216, - "pc": [ - 801 - ] - }, - { - "teal": 612, - "source": 216, - "pc": [ - 802 - ] - }, - { - "teal": 613, - "source": 216, - "pc": [ - 803 - ] - }, - { - "teal": 614, - "source": 215, - "pc": [ - 804 - ] - }, - { - "teal": 618, - "source": 219, - "pc": [ - 805 - ] - }, - { - "teal": 619, - "source": 219, - "pc": [ - 806, - 807 - ] - }, - { - "teal": 624, - "source": 219, - "pc": [ - 808, - 809 - ] - }, - { - "teal": 625, - "source": 219, - "pc": [ - 810, - 811 - ] - }, - { - "teal": 626, - "source": 219, - "pc": [ - 812 - ] - }, - { - "teal": 627, - "source": 219, - "pc": [ - 813, - 814, - 815 - ] - }, - { - "teal": 632, - "source": 220, - "pc": [ - 816, - 817 - ] - }, - { - "teal": 633, - "source": 220, - "pc": [ - 818, - 819 - ] - }, - { - "teal": 634, - "source": 220, - "pc": [ - 820 - ] - }, - { - "teal": 635, - "source": 220, - "pc": [ - 821, - 822, - 823 - ] - }, - { - "teal": 640, - "source": 221, - "pc": [ - 824 - ] - }, - { - "teal": 641, - "source": 221, - "pc": [ - 825 - ] - }, - { - "teal": 642, - "source": 221, - "pc": [ - 826, - 827 - ] - }, - { - "teal": 643, - "source": 221, - "pc": [ - 828 - ] - }, - { - "teal": 644, - "source": 221, - "pc": [ - 829, - 830 - ] - }, - { - "teal": 645, - "source": 221, - "pc": [ - 831, - 832 - ] - }, - { - "teal": 646, - "source": 221, - "pc": [ - 833 - ] - }, - { - "teal": 647, - "source": 221, - "pc": [ - 834, - 835 - ] - }, - { - "teal": 648, - "source": 221, - "pc": [ - 836, - 837 - ] - }, - { - "teal": 649, - "source": 221, - "pc": [ - 838, - 839 - ] - }, - { - "teal": 650, - "source": 221, - "pc": [ - 840, - 841 - ] - }, - { - "teal": 651, - "source": 221, - "pc": [ - 842 - ] - }, - { - "teal": 656, - "source": 223, - "pc": [ - 843, - 844 - ] - }, - { - "teal": 657, - "source": 223, - "pc": [ - 845 - ] - }, - { - "teal": 658, - "source": 223, - "pc": [ - 846 - ] - }, - { - "teal": 659, - "source": 223, - "pc": [ - 847 - ] - }, - { - "teal": 660, - "source": 223, - "pc": [ - 848 - ] - }, - { - "teal": 661, - "source": 223, - "pc": [ - 849, - 850 - ] - }, - { - "teal": 662, - "source": 223, - "pc": [ - 851 - ] - }, - { - "teal": 663, - "source": 223, - "pc": [ - 852, - 853 - ] - }, - { - "teal": 668, - "source": 224, - "pc": [ - 854, - 855 - ] - }, - { - "teal": 669, - "source": 224, - "pc": [ - 856, - 857, - 858 - ] - }, - { - "teal": 670, - "source": 224, - "pc": [ - 859, - 860 - ] - }, - { - "teal": 671, - "source": 224, - "pc": [ - 861 - ] - }, - { - "teal": 672, - "source": 224, - "pc": [ - 862, - 863, - 864 - ] - }, - { - "teal": 677, - "source": 226, - "pc": [ - 865, - 866 - ] - }, - { - "teal": 678, - "source": 226, - "pc": [ - 867, - 868 - ] - }, - { - "teal": 679, - "source": 226, - "pc": [ - 869, - 870 - ] - }, - { - "teal": 680, - "source": 226, - "pc": [ - 871, - 872, - 873 - ] - }, - { - "teal": 681, - "source": 226, - "pc": [ - 874 - ] - }, - { - "teal": 682, - "source": 226, - "pc": [ - 875, - 876 - ] - }, - { - "teal": 683, - "source": 226, - "pc": [ - 877, - 878 - ] - }, - { - "teal": 684, - "source": 226, - "pc": [ - 879 - ] - }, - { - "teal": 685, - "source": 226, - "pc": [ - 880 - ] - }, - { - "teal": 686, - "source": 226, - "pc": [ - 881 - ] - }, - { - "teal": 687, - "source": 226, - "pc": [ - 882, - 883 - ] - }, - { - "teal": 691, - "source": 227, - "pc": [ - 884, - 885 - ] - }, - { - "teal": 692, - "source": 227, - "pc": [ - 886, - 887 - ] - }, - { - "teal": 693, - "source": 227, - "pc": [ - 888, - 889 - ] - }, - { - "teal": 694, - "source": 227, - "pc": [ - 890 - ] - }, - { - "teal": 695, - "source": 227, - "pc": [ - 891 - ] - }, - { - "teal": 696, - "source": 227, - "pc": [ - 892, - 893 - ] - }, - { - "teal": 700, - "source": 230, - "pc": [ - 894, - 895 - ] - }, - { - "teal": 701, - "source": 230, - "pc": [ - 896 - ] - }, - { - "teal": 702, - "source": 230, - "pc": [ - 897 - ] - }, - { - "teal": 703, - "source": 230, - "pc": [ - 898, - 899 - ] - }, - { - "teal": 704, - "source": 230, - "pc": [ - 900 - ] - }, - { - "teal": 705, - "source": 230, - "pc": [ - 901, - 902 - ] - }, - { - "teal": 706, - "source": 230, - "pc": [ - 903 - ] - }, - { - "teal": 710, - "source": 232, - "pc": [ - 904, - 905 - ] - }, - { - "teal": 711, - "source": 232, - "pc": [ - 906, - 907, - 908 - ] - }, - { - "teal": 717, - "source": 234, - "pc": [ - 909, - 910 - ] - }, - { - "teal": 718, - "source": 234, - "pc": [ - 911 - ] - }, - { - "teal": 719, - "source": 234, - "pc": [ - 912 - ] - }, - { - "teal": 720, - "source": 234, - "pc": [ - 913 - ] - }, - { - "teal": 721, - "source": 234, - "pc": [ - 914, - 915, - 916 - ] - }, - { - "teal": 722, - "source": 234, - "pc": [ - 917, - 918 - ] - }, - { - "teal": 723, - "source": 234, - "pc": [ - 919, - 920, - 921 - ] - }, - { - "teal": 724, - "source": 234, - "pc": [ - 922, - 923 - ] - }, - { - "teal": 725, - "source": 234, - "pc": [ - 924 - ] - }, - { - "teal": 726, - "source": 234, - "pc": [ - 925 - ] - }, - { - "teal": 729, - "source": 234, - "pc": [ - 926, - 927, - 928 - ] - }, - { - "teal": 734, - "source": 235, - "pc": [ - 929, - 930 - ] - }, - { - "teal": 735, - "source": 235, - "pc": [ - 931 - ] - }, - { - "teal": 736, - "source": 235, - "pc": [ - 932 - ] - }, - { - "teal": 737, - "source": 235, - "pc": [ - 933, - 934 - ] - }, - { - "teal": 744, - "source": 219, - "pc": [ - 935, - 936 - ] - }, - { - "teal": 745, - "source": 219, - "pc": [ - 937 - ] - }, - { - "teal": 746, - "source": 219, - "pc": [ - 938 - ] - }, - { - "teal": 747, - "source": 219, - "pc": [ - 939, - 940 - ] - }, - { - "teal": 748, - "source": 219, - "pc": [ - 941, - 942, - 943 - ] - }, - { - "teal": 754, - "source": 239, - "pc": [ - 944, - 945 - ] - }, - { - "teal": 755, - "source": 239, - "pc": [ - 946 - ] - }, - { - "teal": 756, - "source": 239, - "pc": [ - 947 - ] - }, - { - "teal": 757, - "source": 239, - "pc": [ - 948, - 949, - 950 - ] - }, - { - "teal": 761, - "source": 241, - "errorMessage": "Staking pool full", - "pc": [ - 951 - ] - }, - { - "teal": 766, - "source": 246, - "pc": [ - 952, - 953 - ] - }, - { - "teal": 767, - "source": 246, - "pc": [ - 954, - 955 - ] - }, - { - "teal": 768, - "source": 246, - "pc": [ - 956, - 957 - ] - }, - { - "teal": 769, - "source": 246, - "pc": [ - 958 - ] - }, - { - "teal": 770, - "source": 246, - "pc": [ - 959 - ] - }, - { - "teal": 773, - "source": 246, - "errorMessage": "must stake at least the minimum for this pool", - "pc": [ - 960 - ] - }, - { - "teal": 777, - "source": 248, - "pc": [ - 961, - 962 - ] - }, - { - "teal": 778, - "source": 248, - "pc": [ - 963 - ] - }, - { - "teal": 779, - "source": 248, - "pc": [ - 964 - ] - }, - { - "teal": 780, - "source": 248, - "pc": [ - 965 - ] - }, - { - "teal": 781, - "source": 248, - "pc": [ - 966 - ] - }, - { - "teal": 782, - "source": 248, - "pc": [ - 967 - ] - }, - { - "teal": 783, - "source": 248, - "pc": [ - 968 - ] - }, - { - "teal": 784, - "source": 248, - "pc": [ - 969, - 970 - ] - }, - { - "teal": 785, - "source": 248, - "pc": [ - 971 - ] - }, - { - "teal": 786, - "source": 248, - "pc": [ - 972, - 973 - ] - }, - { - "teal": 787, - "source": 248, - "pc": [ - 974 - ] - }, - { - "teal": 788, - "source": 248, - "pc": [ - 975, - 976 - ] - }, - { - "teal": 789, - "source": 248, - "pc": [ - 977 - ] - }, - { - "teal": 790, - "source": 248, - "pc": [ - 978 - ] - }, - { - "teal": 800, - "source": 249, - "pc": [ - 979, - 980 - ] - }, - { - "teal": 801, - "source": 249, - "pc": [ - 981 - ] - }, - { - "teal": 802, - "source": 249, - "pc": [ - 982 - ] - }, - { - "teal": 803, - "source": 249, - "pc": [ - 983 - ] - }, - { - "teal": 804, - "source": 249, - "pc": [ - 984 - ] - }, - { - "teal": 805, - "source": 250, - "pc": [ - 985, - 986 - ] - }, - { - "teal": 806, - "source": 251, - "pc": [ - 987, - 988 - ] - }, - { - "teal": 807, - "source": 251, - "pc": [ - 989, - 990 - ] - }, - { - "teal": 808, - "source": 251, - "pc": [ - 991 - ] - }, - { - "teal": 809, - "source": 251, - "pc": [ - 992 - ] - }, - { - "teal": 810, - "source": 252, - "pc": [ - 993, - 994 - ] - }, - { - "teal": 811, - "source": 252, - "pc": [ - 995 - ] - }, - { - "teal": 812, - "source": 253, - "pc": [ - 996, - 997 - ] - }, - { - "teal": 813, - "source": 253, - "pc": [ - 998 - ] - }, - { - "teal": 814, - "source": 254, - "pc": [ - 999, - 1000 - ] - }, - { - "teal": 815, - "source": 254, - "pc": [ - 1001 - ] - }, - { - "teal": 816, - "source": 254, - "pc": [ - 1002 - ] - }, - { - "teal": 817, - "source": 249, - "pc": [ - 1003 - ] - }, - { - "teal": 818, - "source": 249, - "pc": [ - 1004, - 1005 - ] - }, - { - "teal": 819, - "source": 249, - "pc": [ - 1006 - ] - }, - { - "teal": 823, - "source": 256, - "pc": [ - 1007, - 1008 - ] - }, - { - "teal": 824, - "source": 256, - "pc": [ - 1009 - ] - }, - { - "teal": 825, - "source": 256, - "pc": [ - 1010 - ] - }, - { - "teal": 826, - "source": 256, - "pc": [ - 1011 - ] - }, - { - "teal": 827, - "source": 256, - "pc": [ - 1012, - 1013 - ] - }, - { - "teal": 828, - "source": 256, - "pc": [ - 1014 - ] - }, - { - "teal": 829, - "source": 256, - "pc": [ - 1015 - ] - }, - { - "teal": 833, - "source": 257, - "pc": [ - 1016, - 1017 - ] - }, - { - "teal": 837, - "source": 185, - "pc": [ - 1018, - 1019 - ] - }, - { - "teal": 840, - "source": 185, - "pc": [ - 1020, - 1021 - ] - }, - { - "teal": 841, - "source": 185, - "pc": [ - 1022 - ] - }, - { - "teal": 846, - "source": 271, - "pc": [ - 1023, - 1024, - 1025 - ] - }, - { - "teal": 847, - "source": 271, - "pc": [ - 1026 - ] - }, - { - "teal": 850, - "source": 271, - "pc": [ - 1027, - 1028, - 1029 - ] - }, - { - "teal": 851, - "source": 271, - "pc": [ - 1030 - ] - }, - { - "teal": 852, - "source": 271, - "pc": [ - 1031 - ] - }, - { - "teal": 853, - "source": 271, - "pc": [ - 1032, - 1033 - ] - }, - { - "teal": 854, - "source": 271, - "pc": [ - 1034 - ] - }, - { - "teal": 857, - "source": 271, - "errorMessage": "argument 1 (staker) for removeStake must be a address", - "pc": [ - 1035 - ] - }, - { - "teal": 860, - "source": 271, - "pc": [ - 1036, - 1037, - 1038 - ] - }, - { - "teal": 861, - "source": 271, - "pc": [ - 1039 - ] - }, - { - "teal": 862, - "source": 271, - "pc": [ - 1040 - ] - }, - { - "teal": 876, - "source": 271, - "pc": [ - 1041, - 1042, - 1043 - ] - }, - { - "teal": 879, - "source": 271, - "pc": [ - 1044, - 1045 - ] - }, - { - "teal": 880, - "source": 271, - "pc": [ - 1046, - 1047 - ] - }, - { - "teal": 885, - "source": 274, - "pc": [ - 1048, - 1049 - ] - }, - { - "teal": 886, - "source": 274, - "pc": [ - 1050, - 1051 - ] - }, - { - "teal": 887, - "source": 274, - "pc": [ - 1052 - ] - }, - { - "teal": 888, - "source": 274, - "pc": [ - 1053, - 1054, - 1055 - ] - }, - { - "teal": 896, - "source": 276, - "pc": [ - 1056, - 1057, - 1058 - ] - }, - { - "teal": 899, - "source": 275, - "errorMessage": "If staker is not sender in removeStake call, then sender MUST be owner or manager of validator", - "pc": [ - 1059 - ] - }, - { - "teal": 904, - "source": 281, - "pc": [ - 1060, - 1061, - 1062 - ] - }, - { - "teal": 908, - "source": 283, - "pc": [ - 1063 - ] - }, - { - "teal": 909, - "source": 283, - "pc": [ - 1064, - 1065 - ] - }, - { - "teal": 914, - "source": 283, - "pc": [ - 1066, - 1067 - ] - }, - { - "teal": 915, - "source": 283, - "pc": [ - 1068, - 1069 - ] - }, - { - "teal": 916, - "source": 283, - "pc": [ - 1070 - ] - }, - { - "teal": 917, - "source": 283, - "pc": [ - 1071, - 1072, - 1073 - ] - }, - { - "teal": 922, - "source": 284, - "pc": [ - 1074, - 1075 - ] - }, - { - "teal": 923, - "source": 284, - "pc": [ - 1076, - 1077 - ] - }, - { - "teal": 924, - "source": 284, - "pc": [ - 1078 - ] - }, - { - "teal": 925, - "source": 284, - "pc": [ - 1079, - 1080, - 1081 - ] - }, - { - "teal": 930, - "source": 285, - "pc": [ - 1082 - ] - }, - { - "teal": 931, - "source": 285, - "pc": [ - 1083 - ] - }, - { - "teal": 932, - "source": 285, - "pc": [ - 1084, - 1085 - ] - }, - { - "teal": 933, - "source": 285, - "pc": [ - 1086 - ] - }, - { - "teal": 934, - "source": 285, - "pc": [ - 1087, - 1088 - ] - }, - { - "teal": 935, - "source": 285, - "pc": [ - 1089, - 1090 - ] - }, - { - "teal": 936, - "source": 285, - "pc": [ - 1091 - ] - }, - { - "teal": 937, - "source": 285, - "pc": [ - 1092, - 1093 - ] - }, - { - "teal": 938, - "source": 285, - "pc": [ - 1094, - 1095 - ] - }, - { - "teal": 939, - "source": 285, - "pc": [ - 1096, - 1097 - ] - }, - { - "teal": 940, - "source": 285, - "pc": [ - 1098, - 1099 - ] - }, - { - "teal": 941, - "source": 285, - "pc": [ - 1100 - ] - }, - { - "teal": 946, - "source": 287, - "pc": [ - 1101, - 1102 - ] - }, - { - "teal": 947, - "source": 287, - "pc": [ - 1103 - ] - }, - { - "teal": 948, - "source": 287, - "pc": [ - 1104 - ] - }, - { - "teal": 949, - "source": 287, - "pc": [ - 1105 - ] - }, - { - "teal": 950, - "source": 287, - "pc": [ - 1106 - ] - }, - { - "teal": 951, - "source": 287, - "pc": [ - 1107, - 1108 - ] - }, - { - "teal": 952, - "source": 287, - "pc": [ - 1109 - ] - }, - { - "teal": 953, - "source": 287, - "pc": [ - 1110, - 1111 - ] - }, - { - "teal": 958, - "source": 288, - "pc": [ - 1112, - 1113 - ] - }, - { - "teal": 959, - "source": 288, - "pc": [ - 1114, - 1115, - 1116 - ] - }, - { - "teal": 960, - "source": 288, - "pc": [ - 1117, - 1118 - ] - }, - { - "teal": 961, - "source": 288, - "pc": [ - 1119 - ] - }, - { - "teal": 962, - "source": 288, - "pc": [ - 1120, - 1121, - 1122 - ] - }, - { - "teal": 968, - "source": 289, - "pc": [ - 1123, - 1124 - ] - }, - { - "teal": 969, - "source": 289, - "pc": [ - 1125 - ] - }, - { - "teal": 970, - "source": 289, - "pc": [ - 1126 - ] - }, - { - "teal": 971, - "source": 289, - "pc": [ - 1127, - 1128, - 1129 - ] - }, - { - "teal": 976, - "source": 291, - "pc": [ - 1130, - 1131 - ] - }, - { - "teal": 977, - "source": 291, - "pc": [ - 1132, - 1133, - 1134 - ] - }, - { - "teal": 978, - "source": 291, - "pc": [ - 1135 - ] - }, - { - "teal": 979, - "source": 291, - "pc": [ - 1136, - 1137 - ] - }, - { - "teal": 985, - "source": 293, - "pc": [ - 1138, - 1139 - ] - }, - { - "teal": 986, - "source": 293, - "pc": [ - 1140, - 1141, - 1142 - ] - }, - { - "teal": 987, - "source": 293, - "pc": [ - 1143 - ] - }, - { - "teal": 988, - "source": 293, - "pc": [ - 1144, - 1145 - ] - }, - { - "teal": 989, - "source": 293, - "pc": [ - 1146 - ] - }, - { - "teal": 990, - "source": 293, - "pc": [ - 1147, - 1148, - 1149 - ] - }, - { - "teal": 994, - "source": 294, - "errorMessage": "Insufficient balance", - "pc": [ - 1150 - ] - }, - { - "teal": 999, - "source": 296, - "pc": [ - 1151, - 1152 - ] - }, - { - "teal": 1000, - "source": 296, - "pc": [ - 1153, - 1154 - ] - }, - { - "teal": 1001, - "source": 296, - "pc": [ - 1155, - 1156 - ] - }, - { - "teal": 1002, - "source": 296, - "pc": [ - 1157, - 1158, - 1159 - ] - }, - { - "teal": 1003, - "source": 296, - "pc": [ - 1160 - ] - }, - { - "teal": 1004, - "source": 296, - "pc": [ - 1161, - 1162 - ] - }, - { - "teal": 1005, - "source": 296, - "pc": [ - 1163 - ] - }, - { - "teal": 1006, - "source": 296, - "pc": [ - 1164 - ] - }, - { - "teal": 1007, - "source": 296, - "pc": [ - 1165 - ] - }, - { - "teal": 1008, - "source": 296, - "pc": [ - 1166, - 1167 - ] - }, - { - "teal": 1012, - "source": 297, - "pc": [ - 1168, - 1169 - ] - }, - { - "teal": 1013, - "source": 297, - "pc": [ - 1170 - ] - }, - { - "teal": 1014, - "source": 297, - "pc": [ - 1171, - 1172 - ] - }, - { - "teal": 1015, - "source": 297, - "pc": [ - 1173 - ] - }, - { - "teal": 1016, - "source": 297, - "pc": [ - 1174, - 1175 - ] - }, - { - "teal": 1017, - "source": 297, - "pc": [ - 1176 - ] - }, - { - "teal": 1018, - "source": 297, - "pc": [ - 1177 - ] - }, - { - "teal": 1022, - "source": 299, - "pc": [ - 1178 - ] - }, - { - "teal": 1023, - "source": 299, - "pc": [ - 1179, - 1180 - ] - }, - { - "teal": 1028, - "source": 300, - "pc": [ - 1181, - 1182 - ] - }, - { - "teal": 1029, - "source": 300, - "pc": [ - 1183, - 1184, - 1185 - ] - }, - { - "teal": 1030, - "source": 300, - "pc": [ - 1186 - ] - }, - { - "teal": 1031, - "source": 300, - "pc": [ - 1187 - ] - }, - { - "teal": 1032, - "source": 300, - "pc": [ - 1188 - ] - }, - { - "teal": 1033, - "source": 300, - "pc": [ - 1189, - 1190, - 1191 - ] - }, - { - "teal": 1039, - "source": 302, - "pc": [ - 1192 - ] - }, - { - "teal": 1040, - "source": 302, - "pc": [ - 1193 - ] - }, - { - "teal": 1041, - "source": 302, - "pc": [ - 1194 - ] - }, - { - "teal": 1042, - "source": 302, - "pc": [ - 1195 - ] - }, - { - "teal": 1043, - "source": 302, - "pc": [ - 1196, - 1197, - 1198 - ] - }, - { - "teal": 1051, - "source": 303, - "pc": [ - 1199 - ] - }, - { - "teal": 1052, - "source": 303, - "pc": [ - 1200 - ] - }, - { - "teal": 1053, - "source": 303, - "pc": [ - 1201, - 1202 - ] - }, - { - "teal": 1054, - "source": 303, - "pc": [ - 1203, - 1204 - ] - }, - { - "teal": 1055, - "source": 303, - "pc": [ - 1205, - 1206 - ] - }, - { - "teal": 1059, - "source": 304, - "pc": [ - 1207 - ] - }, - { - "teal": 1060, - "source": 304, - "pc": [ - 1208 - ] - }, - { - "teal": 1061, - "source": 304, - "pc": [ - 1209, - 1210 - ] - }, - { - "teal": 1065, - "source": 305, - "pc": [ - 1211 - ] - }, - { - "teal": 1066, - "source": 305, - "pc": [ - 1212 - ] - }, - { - "teal": 1067, - "source": 305, - "pc": [ - 1213 - ] - }, - { - "teal": 1068, - "source": 305, - "pc": [ - 1214, - 1215 - ] - }, - { - "teal": 1071, - "source": 303, - "pc": [ - 1216 - ] - }, - { - "teal": 1072, - "source": 303, - "pc": [ - 1217, - 1218 - ] - }, - { - "teal": 1075, - "source": 303, - "pc": [ - 1219 - ] - }, - { - "teal": 1076, - "source": 303, - "pc": [ - 1220, - 1221 - ] - }, - { - "teal": 1077, - "source": 303, - "pc": [ - 1222 - ] - }, - { - "teal": 1078, - "source": 303, - "pc": [ - 1223 - ] - }, - { - "teal": 1079, - "source": 303, - "pc": [ - 1224, - 1225 - ] - }, - { - "teal": 1080, - "source": 303, - "pc": [ - 1226, - 1227, - 1228 - ] - }, - { - "teal": 1081, - "source": 303, - "pc": [ - 1229, - 1230 - ] - }, - { - "teal": 1089, - "source": 311, - "pc": [ - 1231 - ] - }, - { - "teal": 1090, - "source": 311, - "pc": [ - 1232, - 1233 - ] - }, - { - "teal": 1091, - "source": 311, - "pc": [ - 1234, - 1235 - ] - }, - { - "teal": 1095, - "source": 312, - "pc": [ - 1236, - 1237 - ] - }, - { - "teal": 1096, - "source": 312, - "pc": [ - 1238, - 1239, - 1240 - ] - }, - { - "teal": 1097, - "source": 312, - "pc": [ - 1241 - ] - }, - { - "teal": 1098, - "source": 312, - "pc": [ - 1242, - 1243 - ] - }, - { - "teal": 1102, - "source": 313, - "pc": [ - 1244, - 1245 - ] - }, - { - "teal": 1103, - "source": 313, - "pc": [ - 1246, - 1247 - ] - }, - { - "teal": 1107, - "source": 314, - "pc": [ - 1248, - 1249 - ] - }, - { - "teal": 1108, - "source": 314, - "pc": [ - 1250, - 1251, - 1252 - ] - }, - { - "teal": 1109, - "source": 314, - "pc": [ - 1253 - ] - }, - { - "teal": 1110, - "source": 314, - "pc": [ - 1254, - 1255 - ] - }, - { - "teal": 1113, - "source": 311, - "pc": [ - 1256 - ] - }, - { - "teal": 1114, - "source": 311, - "pc": [ - 1257, - 1258 - ] - }, - { - "teal": 1117, - "source": 311, - "pc": [ - 1259 - ] - }, - { - "teal": 1121, - "source": 316, - "pc": [ - 1260, - 1261 - ] - }, - { - "teal": 1122, - "source": 316, - "pc": [ - 1262, - 1263, - 1264 - ] - }, - { - "teal": 1123, - "source": 316, - "pc": [ - 1265 - ] - }, - { - "teal": 1124, - "source": 316, - "pc": [ - 1266, - 1267 - ] - }, - { - "teal": 1128, - "source": 317, - "pc": [ - 1268, - 1269 - ] - }, - { - "teal": 1129, - "source": 317, - "pc": [ - 1270, - 1271 - ] - }, - { - "teal": 1130, - "source": 317, - "pc": [ - 1272, - 1273 - ] - }, - { - "teal": 1131, - "source": 317, - "pc": [ - 1274, - 1275 - ] - }, - { - "teal": 1132, - "source": 302, - "pc": [ - 1276, - 1277, - 1278 - ] - }, - { - "teal": 1137, - "source": 322, - "pc": [ - 1279, - 1280 - ] - }, - { - "teal": 1138, - "source": 322, - "pc": [ - 1281, - 1282, - 1283 - ] - }, - { - "teal": 1139, - "source": 322, - "pc": [ - 1284 - ] - }, - { - "teal": 1140, - "source": 322, - "pc": [ - 1285, - 1286 - ] - }, - { - "teal": 1144, - "source": 323, - "pc": [ - 1287, - 1288 - ] - }, - { - "teal": 1145, - "source": 323, - "pc": [ - 1289, - 1290 - ] - }, - { - "teal": 1146, - "source": 323, - "pc": [ - 1291, - 1292 - ] - }, - { - "teal": 1147, - "source": 323, - "pc": [ - 1293, - 1294 - ] - }, - { - "teal": 1157, - "source": 329, - "pc": [ - 1295, - 1296 - ] - }, - { - "teal": 1158, - "source": 329, - "pc": [ - 1297, - 1298, - 1299 - ] - }, - { - "teal": 1159, - "source": 329, - "pc": [ - 1300 - ] - }, - { - "teal": 1160, - "source": 329, - "pc": [ - 1301 - ] - }, - { - "teal": 1161, - "source": 329, - "pc": [ - 1302 - ] - }, - { - "teal": 1162, - "source": 329, - "pc": [ - 1303 - ] - }, - { - "teal": 1163, - "source": 329, - "pc": [ - 1304, - 1305, - 1306 - ] - }, - { - "teal": 1164, - "source": 329, - "pc": [ - 1307, - 1308 - ] - }, - { - "teal": 1165, - "source": 329, - "pc": [ - 1309, - 1310, - 1311 - ] - }, - { - "teal": 1166, - "source": 329, - "pc": [ - 1312 - ] - }, - { - "teal": 1167, - "source": 329, - "pc": [ - 1313, - 1314 - ] - }, - { - "teal": 1168, - "source": 329, - "pc": [ - 1315 - ] - }, - { - "teal": 1169, - "source": 329, - "pc": [ - 1316 - ] - }, - { - "teal": 1170, - "source": 329, - "pc": [ - 1317 - ] - }, - { - "teal": 1174, - "source": 328, - "errorMessage": "cannot reduce balance below minimum allowed stake unless all is removed", - "pc": [ - 1318 - ] - }, - { - "teal": 1182, - "source": 336, - "pc": [ - 1319 - ] - }, - { - "teal": 1183, - "source": 336, - "pc": [ - 1320 - ] - }, - { - "teal": 1184, - "source": 336, - "pc": [ - 1321, - 1322 - ] - }, - { - "teal": 1188, - "source": 337, - "pc": [ - 1323, - 1324 - ] - }, - { - "teal": 1189, - "source": 337, - "pc": [ - 1325, - 1326 - ] - }, - { - "teal": 1193, - "source": 338, - "pc": [ - 1327, - 1328 - ] - }, - { - "teal": 1194, - "source": 338, - "pc": [ - 1329, - 1330 - ] - }, - { - "teal": 1198, - "source": 339, - "pc": [ - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340 - ] - }, - { - "teal": 1199, - "source": 339, - "pc": [ - 1341, - 1342 - ] - }, - { - "teal": 1202, - "source": 336, - "pc": [ - 1343 - ] - }, - { - "teal": 1203, - "source": 336, - "pc": [ - 1344, - 1345 - ] - }, - { - "teal": 1206, - "source": 336, - "pc": [ - 1346 - ] - }, - { - "teal": 1210, - "source": 341, - "pc": [ - 1347 - ] - }, - { - "teal": 1211, - "source": 341, - "pc": [ - 1348, - 1349 - ] - }, - { - "teal": 1216, - "source": 342, - "pc": [ - 1350, - 1351 - ] - }, - { - "teal": 1217, - "source": 342, - "pc": [ - 1352, - 1353, - 1354 - ] - }, - { - "teal": 1218, - "source": 342, - "pc": [ - 1355 - ] - }, - { - "teal": 1219, - "source": 342, - "pc": [ - 1356 - ] - }, - { - "teal": 1220, - "source": 342, - "pc": [ - 1357 - ] - }, - { - "teal": 1221, - "source": 342, - "pc": [ - 1358, - 1359, - 1360 - ] - }, - { - "teal": 1226, - "source": 344, - "pc": [ - 1361, - 1362 - ] - }, - { - "teal": 1227, - "source": 344, - "pc": [ - 1363 - ] - }, - { - "teal": 1228, - "source": 344, - "pc": [ - 1364 - ] - }, - { - "teal": 1229, - "source": 344, - "pc": [ - 1365 - ] - }, - { - "teal": 1230, - "source": 344, - "pc": [ - 1366, - 1367 - ] - }, - { - "teal": 1231, - "source": 344, - "pc": [ - 1368 - ] - }, - { - "teal": 1232, - "source": 344, - "pc": [ - 1369 - ] - }, - { - "teal": 1236, - "source": 345, - "pc": [ - 1370, - 1371 - ] - }, - { - "teal": 1237, - "source": 345, - "pc": [ - 1372 - ] - }, - { - "teal": 1238, - "source": 345, - "pc": [ - 1373, - 1374 - ] - }, - { - "teal": 1239, - "source": 345, - "pc": [ - 1375 - ] - }, - { - "teal": 1240, - "source": 345, - "pc": [ - 1376, - 1377 - ] - }, - { - "teal": 1244, - "source": 346, - "pc": [ - 1378, - 1379 - ] - }, - { - "teal": 1245, - "source": 346, - "pc": [ - 1380, - 1381 - ] - }, - { - "teal": 1246, - "source": 346, - "pc": [ - 1382, - 1383 - ] - }, - { - "teal": 1247, - "source": 346, - "pc": [ - 1384, - 1385 - ] - }, - { - "teal": 1251, - "source": 347, - "pc": [ - 1386, - 1387 - ] - }, - { - "teal": 1252, - "source": 347, - "pc": [ - 1388, - 1389 - ] - }, - { - "teal": 1253, - "source": 347, - "pc": [ - 1390, - 1391 - ] - }, - { - "teal": 1254, - "source": 347, - "pc": [ - 1392, - 1393 - ] - }, - { - "teal": 1258, - "source": 348, - "pc": [ - 1394 - ] - }, - { - "teal": 1259, - "source": 348, - "pc": [ - 1395, - 1396 - ] - }, - { - "teal": 1264, - "source": 351, - "pc": [ - 1397, - 1398 - ] - }, - { - "teal": 1265, - "source": 351, - "pc": [ - 1399 - ] - }, - { - "teal": 1266, - "source": 351, - "pc": [ - 1400 - ] - }, - { - "teal": 1267, - "source": 351, - "pc": [ - 1401, - 1402 - ] - }, - { - "teal": 1268, - "source": 351, - "pc": [ - 1403 - ] - }, - { - "teal": 1269, - "source": 351, - "pc": [ - 1404, - 1405 - ] - }, - { - "teal": 1270, - "source": 351, - "pc": [ - 1406 - ] - }, - { - "teal": 1274, - "source": 353, - "pc": [ - 1407, - 1408 - ] - }, - { - "teal": 1275, - "source": 353, - "pc": [ - 1409 - ] - }, - { - "teal": 1276, - "source": 353, - "pc": [ - 1410, - 1411 - ] - }, - { - "teal": 1277, - "source": 353, - "pc": [ - 1412 - ] - }, - { - "teal": 1278, - "source": 353, - "pc": [ - 1413 - ] - }, - { - "teal": 1279, - "source": 353, - "pc": [ - 1414, - 1415 - ] - }, - { - "teal": 1280, - "source": 353, - "pc": [ - 1416 - ] - }, - { - "teal": 1281, - "source": 353, - "pc": [ - 1417, - 1418 - ] - }, - { - "teal": 1285, - "source": 354, - "pc": [ - 1419, - 1420 - ] - }, - { - "teal": 1286, - "source": 354, - "pc": [ - 1421 - ] - }, - { - "teal": 1287, - "source": 354, - "pc": [ - 1422, - 1423 - ] - }, - { - "teal": 1288, - "source": 354, - "pc": [ - 1424 - ] - }, - { - "teal": 1289, - "source": 354, - "pc": [ - 1425 - ] - }, - { - "teal": 1290, - "source": 354, - "pc": [ - 1426 - ] - }, - { - "teal": 1291, - "source": 354, - "pc": [ - 1427 - ] - }, - { - "teal": 1292, - "source": 354, - "pc": [ - 1428, - 1429 - ] - }, - { - "teal": 1293, - "source": 354, - "pc": [ - 1430 - ] - }, - { - "teal": 1296, - "source": 354, - "errorMessage": "(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", - "pc": [ - 1431 - ] - }, - { - "teal": 1297, - "source": 354, - "pc": [ - 1432, - 1433 - ] - }, - { - "teal": 1298, - "source": 354, - "pc": [ - 1434 - ] - }, - { - "teal": 1299, - "source": 354, - "pc": [ - 1435 - ] - }, - { - "teal": 1300, - "source": 354, - "pc": [ - 1436 - ] - }, - { - "teal": 1301, - "source": 354, - "pc": [ - 1437 - ] - }, - { - "teal": 1302, - "source": 354, - "pc": [ - 1438, - 1439 - ] - }, - { - "teal": 1303, - "source": 354, - "pc": [ - 1440 - ] - }, - { - "teal": 1304, - "source": 354, - "pc": [ - 1441 - ] - }, - { - "teal": 1305, - "source": 354, - "pc": [ - 1442 - ] - }, - { - "teal": 1306, - "source": 354, - "pc": [ - 1443, - 1444 - ] - }, - { - "teal": 1310, - "source": 355, - "pc": [ - 1445, - 1446 - ] - }, - { - "teal": 1311, - "source": 355, - "pc": [ - 1447 - ] - }, - { - "teal": 1312, - "source": 355, - "pc": [ - 1448 - ] - }, - { - "teal": 1313, - "source": 355, - "pc": [ - 1449, - 1450 - ] - }, - { - "teal": 1314, - "source": 355, - "pc": [ - 1451 - ] - }, - { - "teal": 1315, - "source": 355, - "pc": [ - 1452 - ] - }, - { - "teal": 1316, - "source": 355, - "pc": [ - 1453 - ] - }, - { - "teal": 1317, - "source": 355, - "pc": [ - 1454, - 1455 - ] - }, - { - "teal": 1318, - "source": 355, - "pc": [ - 1456 - ] - }, - { - "teal": 1321, - "source": 355, - "errorMessage": "this.stakeAccumulator.value - subtractAmount overflowed 128 bits", - "pc": [ - 1457 - ] - }, - { - "teal": 1322, - "source": 355, - "pc": [ - 1458, - 1459 - ] - }, - { - "teal": 1323, - "source": 355, - "pc": [ - 1460 - ] - }, - { - "teal": 1324, - "source": 355, - "pc": [ - 1461 - ] - }, - { - "teal": 1325, - "source": 355, - "pc": [ - 1462 - ] - }, - { - "teal": 1326, - "source": 355, - "pc": [ - 1463 - ] - }, - { - "teal": 1327, - "source": 355, - "pc": [ - 1464, - 1465 - ] - }, - { - "teal": 1328, - "source": 355, - "pc": [ - 1466 - ] - }, - { - "teal": 1329, - "source": 355, - "pc": [ - 1467 - ] - }, - { - "teal": 1330, - "source": 355, - "pc": [ - 1468 - ] - }, - { - "teal": 1331, - "source": 355, - "pc": [ - 1469 - ] - }, - { - "teal": 1344, - "source": 360, - "pc": [ - 1470 - ] - }, - { - "teal": 1345, - "source": 360, - "pc": [ - 1471 - ] - }, - { - "teal": 1346, - "source": 360, - "pc": [ - 1472, - 1473 - ] - }, - { - "teal": 1347, - "source": 360, - "pc": [ - 1474, - 1475 - ] - }, - { - "teal": 1348, - "source": 360, - "pc": [ - 1476, - 1477 - ] - }, - { - "teal": 1352, - "source": 361, - "pc": [ - 1478 - ] - }, - { - "teal": 1353, - "source": 361, - "pc": [ - 1479 - ] - }, - { - "teal": 1354, - "source": 361, - "pc": [ - 1480, - 1481 - ] - }, - { - "teal": 1364, - "source": 363, - "pc": [ - 1482 - ] - }, - { - "teal": 1365, - "source": 363, - "pc": [ - 1483 - ] - }, - { - "teal": 1366, - "source": 363, - "pc": [ - 1484 - ] - }, - { - "teal": 1367, - "source": 363, - "pc": [ - 1485 - ] - }, - { - "teal": 1368, - "source": 363, - "pc": [ - 1486 - ] - }, - { - "teal": 1369, - "source": 363, - "pc": [ - 1487 - ] - }, - { - "teal": 1370, - "source": 363, - "pc": [ - 1488 - ] - }, - { - "teal": 1371, - "source": 363, - "pc": [ - 1489, - 1490, - 1491 - ] - }, - { - "teal": 1372, - "source": 363, - "pc": [ - 1492 - ] - }, - { - "teal": 1373, - "source": 363, - "pc": [ - 1493 - ] - }, - { - "teal": 1374, - "source": 363, - "pc": [ - 1494, - 1495 - ] - }, - { - "teal": 1375, - "source": 364, - "pc": [ - 1496, - 1497 - ] - }, - { - "teal": 1376, - "source": 364, - "pc": [ - 1498, - 1499 - ] - }, - { - "teal": 1377, - "source": 365, - "pc": [ - 1500, - 1501 - ] - }, - { - "teal": 1378, - "source": 365, - "pc": [ - 1502 - ] - }, - { - "teal": 1379, - "source": 365, - "pc": [ - 1503, - 1504 - ] - }, - { - "teal": 1380, - "source": 366, - "pc": [ - 1505, - 1506 - ] - }, - { - "teal": 1381, - "source": 366, - "pc": [ - 1507 - ] - }, - { - "teal": 1382, - "source": 366, - "pc": [ - 1508, - 1509 - ] - }, - { - "teal": 1383, - "source": 367, - "pc": [ - 1510, - 1511 - ] - }, - { - "teal": 1384, - "source": 367, - "pc": [ - 1512, - 1513 - ] - }, - { - "teal": 1385, - "source": 367, - "pc": [ - 1514 - ] - }, - { - "teal": 1386, - "source": 367, - "pc": [ - 1515, - 1516 - ] - }, - { - "teal": 1387, - "source": 367, - "pc": [ - 1517 - ] - }, - { - "teal": 1388, - "source": 367, - "pc": [ - 1518, - 1519 - ] - }, - { - "teal": 1391, - "source": 360, - "pc": [ - 1520 - ] - }, - { - "teal": 1392, - "source": 360, - "pc": [ - 1521, - 1522 - ] - }, - { - "teal": 1395, - "source": 360, - "pc": [ - 1523 - ] - }, - { - "teal": 1399, - "source": 370, - "pc": [ - 1524 - ] - }, - { - "teal": 1406, - "source": 283, - "pc": [ - 1525, - 1526 - ] - }, - { - "teal": 1407, - "source": 283, - "pc": [ - 1527 - ] - }, - { - "teal": 1408, - "source": 283, - "pc": [ - 1528 - ] - }, - { - "teal": 1409, - "source": 283, - "pc": [ - 1529, - 1530 - ] - }, - { - "teal": 1410, - "source": 283, - "pc": [ - 1531, - 1532, - 1533 - ] - }, - { - "teal": 1414, - "source": 373, - "errorMessage": "account not found", - "pc": [ - 1534 - ] - }, - { - "teal": 1415, - "source": 271, - "pc": [ - 1535 - ] - }, - { - "teal": 1420, - "source": 381, - "pc": [ - 1536, - 1537, - 1538 - ] - }, - { - "teal": 1421, - "source": 381, - "pc": [ - 1539 - ] - }, - { - "teal": 1422, - "source": 381, - "pc": [ - 1540 - ] - }, - { - "teal": 1430, - "source": 381, - "pc": [ - 1541, - 1542, - 1543 - ] - }, - { - "teal": 1433, - "source": 381, - "pc": [ - 1544, - 1545 - ] - }, - { - "teal": 1434, - "source": 381, - "pc": [ - 1546, - 1547 - ] - }, - { - "teal": 1438, - "source": 385, - "pc": [ - 1548, - 1549 - ] - }, - { - "teal": 1439, - "source": 385, - "pc": [ - 1550, - 1551 - ] - }, - { - "teal": 1443, - "source": 387, - "pc": [ - 1552 - ] - }, - { - "teal": 1444, - "source": 387, - "pc": [ - 1553, - 1554 - ] - }, - { - "teal": 1449, - "source": 387, - "pc": [ - 1555, - 1556 - ] - }, - { - "teal": 1450, - "source": 387, - "pc": [ - 1557, - 1558 - ] - }, - { - "teal": 1451, - "source": 387, - "pc": [ - 1559 - ] - }, - { - "teal": 1452, - "source": 387, - "pc": [ - 1560, - 1561, - 1562 - ] - }, - { - "teal": 1457, - "source": 388, - "pc": [ - 1563, - 1564 - ] - }, - { - "teal": 1458, - "source": 388, - "pc": [ - 1565, - 1566 - ] - }, - { - "teal": 1459, - "source": 388, - "pc": [ - 1567 - ] - }, - { - "teal": 1460, - "source": 388, - "pc": [ - 1568, - 1569, - 1570 - ] - }, - { - "teal": 1465, - "source": 389, - "pc": [ - 1571 - ] - }, - { - "teal": 1466, - "source": 389, - "pc": [ - 1572 - ] - }, - { - "teal": 1467, - "source": 389, - "pc": [ - 1573, - 1574 - ] - }, - { - "teal": 1468, - "source": 389, - "pc": [ - 1575 - ] - }, - { - "teal": 1469, - "source": 389, - "pc": [ - 1576, - 1577 - ] - }, - { - "teal": 1470, - "source": 389, - "pc": [ - 1578, - 1579 - ] - }, - { - "teal": 1471, - "source": 389, - "pc": [ - 1580 - ] - }, - { - "teal": 1472, - "source": 389, - "pc": [ - 1581, - 1582 - ] - }, - { - "teal": 1473, - "source": 389, - "pc": [ - 1583, - 1584 - ] - }, - { - "teal": 1474, - "source": 389, - "pc": [ - 1585, - 1586 - ] - }, - { - "teal": 1475, - "source": 389, - "pc": [ - 1587, - 1588 - ] - }, - { - "teal": 1476, - "source": 389, - "pc": [ - 1589 - ] - }, - { - "teal": 1481, - "source": 391, - "pc": [ - 1590, - 1591 - ] - }, - { - "teal": 1482, - "source": 391, - "pc": [ - 1592 - ] - }, - { - "teal": 1483, - "source": 391, - "pc": [ - 1593 - ] - }, - { - "teal": 1484, - "source": 391, - "pc": [ - 1594 - ] - }, - { - "teal": 1485, - "source": 391, - "pc": [ - 1595 - ] - }, - { - "teal": 1486, - "source": 391, - "pc": [ - 1596, - 1597 - ] - }, - { - "teal": 1487, - "source": 391, - "pc": [ - 1598 - ] - }, - { - "teal": 1488, - "source": 391, - "pc": [ - 1599, - 1600 - ] - }, - { - "teal": 1493, - "source": 392, - "pc": [ - 1601, - 1602 - ] - }, - { - "teal": 1494, - "source": 392, - "pc": [ - 1603, - 1604, - 1605 - ] - }, - { - "teal": 1495, - "source": 392, - "pc": [ - 1606, - 1607 - ] - }, - { - "teal": 1496, - "source": 392, - "pc": [ - 1608 - ] - }, - { - "teal": 1497, - "source": 392, - "pc": [ - 1609, - 1610, - 1611 - ] - }, - { - "teal": 1503, - "source": 393, - "pc": [ - 1612, - 1613 - ] - }, - { - "teal": 1504, - "source": 393, - "pc": [ - 1614, - 1615, - 1616 - ] - }, - { - "teal": 1505, - "source": 393, - "pc": [ - 1617 - ] - }, - { - "teal": 1506, - "source": 393, - "pc": [ - 1618 - ] - }, - { - "teal": 1507, - "source": 393, - "pc": [ - 1619 - ] - }, - { - "teal": 1508, - "source": 393, - "pc": [ - 1620, - 1621, - 1622 - ] - }, - { - "teal": 1513, - "source": 394, - "pc": [ - 1623 - ] - }, - { - "teal": 1518, - "source": 396, - "pc": [ - 1624 - ] - }, - { - "teal": 1519, - "source": 396, - "pc": [ - 1625, - 1626 - ] - }, - { - "teal": 1524, - "source": 398, - "pc": [ - 1627 - ] - }, - { - "teal": 1525, - "source": 398, - "pc": [ - 1628 - ] - }, - { - "teal": 1526, - "source": 398, - "pc": [ - 1629 - ] - }, - { - "teal": 1527, - "source": 398, - "pc": [ - 1630 - ] - }, - { - "teal": 1528, - "source": 398, - "pc": [ - 1631, - 1632, - 1633 - ] - }, - { - "teal": 1536, - "source": 399, - "pc": [ - 1634 - ] - }, - { - "teal": 1537, - "source": 399, - "pc": [ - 1635 - ] - }, - { - "teal": 1538, - "source": 399, - "pc": [ - 1636, - 1637 - ] - }, - { - "teal": 1539, - "source": 399, - "pc": [ - 1638, - 1639 - ] - }, - { - "teal": 1540, - "source": 399, - "pc": [ - 1640, - 1641 - ] - }, - { - "teal": 1544, - "source": 400, - "pc": [ - 1642 - ] - }, - { - "teal": 1545, - "source": 400, - "pc": [ - 1643 - ] - }, - { - "teal": 1546, - "source": 400, - "pc": [ - 1644, - 1645 - ] - }, - { - "teal": 1550, - "source": 401, - "pc": [ - 1646 - ] - }, - { - "teal": 1551, - "source": 401, - "pc": [ - 1647 - ] - }, - { - "teal": 1552, - "source": 401, - "pc": [ - 1648 - ] - }, - { - "teal": 1553, - "source": 401, - "pc": [ - 1649, - 1650 - ] - }, - { - "teal": 1556, - "source": 399, - "pc": [ - 1651 - ] - }, - { - "teal": 1557, - "source": 399, - "pc": [ - 1652, - 1653 - ] - }, - { - "teal": 1560, - "source": 399, - "pc": [ - 1654 - ] - }, - { - "teal": 1561, - "source": 399, - "pc": [ - 1655, - 1656 - ] - }, - { - "teal": 1562, - "source": 399, - "pc": [ - 1657 - ] - }, - { - "teal": 1563, - "source": 399, - "pc": [ - 1658 - ] - }, - { - "teal": 1564, - "source": 399, - "pc": [ - 1659, - 1660 - ] - }, - { - "teal": 1565, - "source": 399, - "pc": [ - 1661, - 1662, - 1663 - ] - }, - { - "teal": 1566, - "source": 399, - "pc": [ - 1664, - 1665 - ] - }, - { - "teal": 1574, - "source": 406, - "pc": [ - 1666 - ] - }, - { - "teal": 1575, - "source": 406, - "pc": [ - 1667, - 1668 - ] - }, - { - "teal": 1576, - "source": 406, - "pc": [ - 1669, - 1670 - ] - }, - { - "teal": 1580, - "source": 407, - "pc": [ - 1671, - 1672 - ] - }, - { - "teal": 1581, - "source": 407, - "pc": [ - 1673, - 1674, - 1675 - ] - }, - { - "teal": 1582, - "source": 407, - "pc": [ - 1676 - ] - }, - { - "teal": 1583, - "source": 407, - "pc": [ - 1677, - 1678 - ] - }, - { - "teal": 1587, - "source": 408, - "pc": [ - 1679, - 1680 - ] - }, - { - "teal": 1588, - "source": 408, - "pc": [ - 1681, - 1682 - ] - }, - { - "teal": 1592, - "source": 409, - "pc": [ - 1683, - 1684 - ] - }, - { - "teal": 1593, - "source": 409, - "pc": [ - 1685, - 1686, - 1687 - ] - }, - { - "teal": 1594, - "source": 409, - "pc": [ - 1688 - ] - }, - { - "teal": 1595, - "source": 409, - "pc": [ - 1689, - 1690 - ] - }, - { - "teal": 1598, - "source": 406, - "pc": [ - 1691 - ] - }, - { - "teal": 1599, - "source": 406, - "pc": [ - 1692, - 1693 - ] - }, - { - "teal": 1602, - "source": 406, - "pc": [ - 1694 - ] - }, - { - "teal": 1606, - "source": 411, - "pc": [ - 1695, - 1696 - ] - }, - { - "teal": 1607, - "source": 411, - "pc": [ - 1697, - 1698, - 1699 - ] - }, - { - "teal": 1608, - "source": 411, - "pc": [ - 1700 - ] - }, - { - "teal": 1609, - "source": 411, - "pc": [ - 1701, - 1702 - ] - }, - { - "teal": 1613, - "source": 412, - "pc": [ - 1703, - 1704 - ] - }, - { - "teal": 1614, - "source": 412, - "pc": [ - 1705, - 1706 - ] - }, - { - "teal": 1615, - "source": 412, - "pc": [ - 1707, - 1708 - ] - }, - { - "teal": 1616, - "source": 412, - "pc": [ - 1709, - 1710 - ] - }, - { - "teal": 1617, - "source": 398, - "pc": [ - 1711, - 1712, - 1713 - ] - }, - { - "teal": 1622, - "source": 417, - "pc": [ - 1714, - 1715 - ] - }, - { - "teal": 1623, - "source": 417, - "pc": [ - 1716, - 1717, - 1718 - ] - }, - { - "teal": 1624, - "source": 417, - "pc": [ - 1719 - ] - }, - { - "teal": 1625, - "source": 417, - "pc": [ - 1720, - 1721 - ] - }, - { - "teal": 1629, - "source": 418, - "pc": [ - 1722, - 1723 - ] - }, - { - "teal": 1630, - "source": 418, - "pc": [ - 1724, - 1725 - ] - }, - { - "teal": 1631, - "source": 418, - "pc": [ - 1726, - 1727 - ] - }, - { - "teal": 1632, - "source": 418, - "pc": [ - 1728, - 1729 - ] - }, - { - "teal": 1637, - "source": 422, - "pc": [ - 1730, - 1731 - ] - }, - { - "teal": 1638, - "source": 422, - "pc": [ - 1732 - ] - }, - { - "teal": 1639, - "source": 422, - "pc": [ - 1733 - ] - }, - { - "teal": 1640, - "source": 422, - "pc": [ - 1734, - 1735 - ] - }, - { - "teal": 1641, - "source": 422, - "pc": [ - 1736 - ] - }, - { - "teal": 1642, - "source": 422, - "pc": [ - 1737, - 1738 - ] - }, - { - "teal": 1643, - "source": 422, - "pc": [ - 1739 - ] - }, - { - "teal": 1656, - "source": 427, - "pc": [ - 1740 - ] - }, - { - "teal": 1657, - "source": 427, - "pc": [ - 1741 - ] - }, - { - "teal": 1658, - "source": 427, - "pc": [ - 1742, - 1743 - ] - }, - { - "teal": 1659, - "source": 427, - "pc": [ - 1744, - 1745 - ] - }, - { - "teal": 1660, - "source": 427, - "pc": [ - 1746, - 1747 - ] - }, - { - "teal": 1664, - "source": 428, - "pc": [ - 1748 - ] - }, - { - "teal": 1665, - "source": 428, - "pc": [ - 1749 - ] - }, - { - "teal": 1666, - "source": 428, - "pc": [ - 1750, - 1751 - ] - }, - { - "teal": 1676, - "source": 430, - "pc": [ - 1752 - ] - }, - { - "teal": 1677, - "source": 430, - "pc": [ - 1753 - ] - }, - { - "teal": 1678, - "source": 430, - "pc": [ - 1754 - ] - }, - { - "teal": 1679, - "source": 430, - "pc": [ - 1755 - ] - }, - { - "teal": 1680, - "source": 430, - "pc": [ - 1756 - ] - }, - { - "teal": 1681, - "source": 430, - "pc": [ - 1757 - ] - }, - { - "teal": 1682, - "source": 430, - "pc": [ - 1758 - ] - }, - { - "teal": 1683, - "source": 430, - "pc": [ - 1759, - 1760, - 1761 - ] - }, - { - "teal": 1684, - "source": 430, - "pc": [ - 1762 - ] - }, - { - "teal": 1685, - "source": 430, - "pc": [ - 1763 - ] - }, - { - "teal": 1686, - "source": 430, - "pc": [ - 1764, - 1765 - ] - }, - { - "teal": 1687, - "source": 431, - "pc": [ - 1766, - 1767 - ] - }, - { - "teal": 1688, - "source": 431, - "pc": [ - 1768, - 1769 - ] - }, - { - "teal": 1689, - "source": 432, - "pc": [ - 1770, - 1771 - ] - }, - { - "teal": 1690, - "source": 432, - "pc": [ - 1772, - 1773 - ] - }, - { - "teal": 1691, - "source": 433, - "pc": [ - 1774, - 1775 - ] - }, - { - "teal": 1692, - "source": 433, - "pc": [ - 1776 - ] - }, - { - "teal": 1693, - "source": 433, - "pc": [ - 1777, - 1778 - ] - }, - { - "teal": 1694, - "source": 434, - "pc": [ - 1779 - ] - }, - { - "teal": 1695, - "source": 434, - "pc": [ - 1780, - 1781 - ] - }, - { - "teal": 1696, - "source": 434, - "pc": [ - 1782 - ] - }, - { - "teal": 1697, - "source": 434, - "pc": [ - 1783, - 1784 - ] - }, - { - "teal": 1698, - "source": 434, - "pc": [ - 1785 - ] - }, - { - "teal": 1699, - "source": 434, - "pc": [ - 1786, - 1787 - ] - }, - { - "teal": 1702, - "source": 427, - "pc": [ - 1788 - ] - }, - { - "teal": 1703, - "source": 427, - "pc": [ - 1789, - 1790 - ] - }, - { - "teal": 1706, - "source": 427, - "pc": [ - 1791 - ] - }, - { - "teal": 1710, - "source": 437, - "pc": [ - 1792 - ] - }, - { - "teal": 1717, - "source": 387, - "pc": [ - 1793, - 1794 - ] - }, - { - "teal": 1718, - "source": 387, - "pc": [ - 1795 - ] - }, - { - "teal": 1719, - "source": 387, - "pc": [ - 1796 - ] - }, - { - "teal": 1720, - "source": 387, - "pc": [ - 1797, - 1798 - ] - }, - { - "teal": 1721, - "source": 387, - "pc": [ - 1799, - 1800, - 1801 - ] - }, - { - "teal": 1725, - "source": 440, - "errorMessage": "account not found", - "pc": [ - 1802 - ] - }, - { - "teal": 1726, - "source": 381, - "pc": [ - 1803 - ] - }, - { - "teal": 1731, - "source": 450, - "pc": [ - 1804, - 1805 - ] - }, - { - "teal": 1734, - "source": 451, - "pc": [ - 1806, - 1807, - 1808 - ] - }, - { - "teal": 1735, - "source": 451, - "pc": [ - 1809 - ] - }, - { - "teal": 1736, - "source": 451, - "pc": [ - 1810 - ] - }, - { - "teal": 1737, - "source": 451, - "pc": [ - 1811, - 1812 - ] - }, - { - "teal": 1738, - "source": 451, - "pc": [ - 1813 - ] - }, - { - "teal": 1741, - "source": 451, - "errorMessage": "argument 0 (staker) for getStakerInfo must be a address", - "pc": [ - 1814 - ] - }, - { - "teal": 1744, - "source": 450, - "pc": [ - 1815, - 1816, - 1817 - ] - }, - { - "teal": 1745, - "source": 450, - "pc": [ - 1818 - ] - }, - { - "teal": 1746, - "source": 450, - "pc": [ - 1819 - ] - }, - { - "teal": 1747, - "source": 450, - "pc": [ - 1820 - ] - }, - { - "teal": 1748, - "source": 450, - "pc": [ - 1821 - ] - }, - { - "teal": 1758, - "source": 450, - "pc": [ - 1822, - 1823, - 1824 - ] - }, - { - "teal": 1761, - "source": 450, - "pc": [ - 1825, - 1826 - ] - }, - { - "teal": 1765, - "source": 452, - "pc": [ - 1827 - ] - }, - { - "teal": 1766, - "source": 452, - "pc": [ - 1828, - 1829 - ] - }, - { - "teal": 1771, - "source": 452, - "pc": [ - 1830, - 1831 - ] - }, - { - "teal": 1772, - "source": 452, - "pc": [ - 1832, - 1833 - ] - }, - { - "teal": 1773, - "source": 452, - "pc": [ - 1834 - ] - }, - { - "teal": 1774, - "source": 452, - "pc": [ - 1835, - 1836, - 1837 - ] - }, - { - "teal": 1779, - "source": 453, - "pc": [ - 1838, - 1839 - ] - }, - { - "teal": 1780, - "source": 453, - "pc": [ - 1840, - 1841 - ] - }, - { - "teal": 1781, - "source": 453, - "pc": [ - 1842 - ] - }, - { - "teal": 1782, - "source": 453, - "pc": [ - 1843, - 1844, - 1845 - ] - }, - { - "teal": 1787, - "source": 454, - "pc": [ - 1846 - ] - }, - { - "teal": 1788, - "source": 454, - "pc": [ - 1847 - ] - }, - { - "teal": 1789, - "source": 454, - "pc": [ - 1848, - 1849 - ] - }, - { - "teal": 1790, - "source": 454, - "pc": [ - 1850 - ] - }, - { - "teal": 1791, - "source": 454, - "pc": [ - 1851, - 1852 - ] - }, - { - "teal": 1792, - "source": 454, - "pc": [ - 1853, - 1854 - ] - }, - { - "teal": 1793, - "source": 454, - "pc": [ - 1855 - ] - }, - { - "teal": 1794, - "source": 454, - "pc": [ - 1856, - 1857 - ] - }, - { - "teal": 1795, - "source": 454, - "pc": [ - 1858, - 1859 - ] - }, - { - "teal": 1796, - "source": 454, - "pc": [ - 1860, - 1861 - ] - }, - { - "teal": 1797, - "source": 454, - "pc": [ - 1862, - 1863 - ] - }, - { - "teal": 1798, - "source": 454, - "pc": [ - 1864 - ] - }, - { - "teal": 1804, - "source": 456, - "pc": [ - 1865, - 1866 - ] - }, - { - "teal": 1805, - "source": 456, - "pc": [ - 1867 - ] - }, - { - "teal": 1806, - "source": 456, - "pc": [ - 1868 - ] - }, - { - "teal": 1807, - "source": 456, - "pc": [ - 1869 - ] - }, - { - "teal": 1808, - "source": 456, - "pc": [ - 1870 - ] - }, - { - "teal": 1809, - "source": 456, - "pc": [ - 1871, - 1872 - ] - }, - { - "teal": 1810, - "source": 456, - "pc": [ - 1873 - ] - }, - { - "teal": 1811, - "source": 456, - "pc": [ - 1874, - 1875 - ] - }, - { - "teal": 1812, - "source": 456, - "pc": [ - 1876 - ] - }, - { - "teal": 1813, - "source": 456, - "pc": [ - 1877, - 1878 - ] - }, - { - "teal": 1814, - "source": 456, - "pc": [ - 1879 - ] - }, - { - "teal": 1815, - "source": 456, - "pc": [ - 1880, - 1881, - 1882 - ] - }, - { - "teal": 1820, - "source": 457, - "pc": [ - 1883, - 1884 - ] - }, - { - "teal": 1821, - "source": 457, - "pc": [ - 1885 - ] - }, - { - "teal": 1822, - "source": 457, - "pc": [ - 1886 - ] - }, - { - "teal": 1823, - "source": 457, - "pc": [ - 1887 - ] - }, - { - "teal": 1824, - "source": 457, - "pc": [ - 1888 - ] - }, - { - "teal": 1825, - "source": 457, - "pc": [ - 1889, - 1890 - ] - }, - { - "teal": 1826, - "source": 457, - "pc": [ - 1891 - ] - }, - { - "teal": 1827, - "source": 457, - "pc": [ - 1892, - 1893, - 1894 - ] - }, - { - "teal": 1834, - "source": 452, - "pc": [ - 1895, - 1896 - ] - }, - { - "teal": 1835, - "source": 452, - "pc": [ - 1897 - ] - }, - { - "teal": 1836, - "source": 452, - "pc": [ - 1898 - ] - }, - { - "teal": 1837, - "source": 452, - "pc": [ - 1899, - 1900 - ] - }, - { - "teal": 1838, - "source": 452, - "pc": [ - 1901, - 1902, - 1903 - ] - }, - { - "teal": 1842, - "source": 460, - "errorMessage": "account not found", - "pc": [ - 1904 - ] - }, - { - "teal": 1846, - "source": 450, - "pc": [ - 1905, - 1906 - ] - }, - { - "teal": 1847, - "source": 450, - "pc": [ - 1907 - ] - }, - { - "teal": 1852, - "source": 473, - "pc": [ - 1908, - 1909, - 1910 - ] - }, - { - "teal": 1853, - "source": 473, - "pc": [ - 1911 - ] - }, - { - "teal": 1856, - "source": 473, - "pc": [ - 1912, - 1913, - 1914 - ] - }, - { - "teal": 1857, - "source": 473, - "pc": [ - 1915 - ] - }, - { - "teal": 1860, - "source": 473, - "pc": [ - 1916, - 1917, - 1918 - ] - }, - { - "teal": 1861, - "source": 473, - "pc": [ - 1919 - ] - }, - { - "teal": 1862, - "source": 473, - "pc": [ - 1920 - ] - }, - { - "teal": 1863, - "source": 473, - "pc": [ - 1921, - 1922 - ] - }, - { - "teal": 1864, - "source": 473, - "pc": [ - 1923 - ] - }, - { - "teal": 1867, - "source": 473, - "errorMessage": "argument 2 (staker) for payTokenReward must be a address", - "pc": [ - 1924 - ] - }, - { - "teal": 1870, - "source": 473, - "pc": [ - 1925, - 1926, - 1927 - ] - }, - { - "teal": 1871, - "source": 473, - "pc": [ - 1928 - ] - }, - { - "teal": 1872, - "source": 473, - "pc": [ - 1929 - ] - }, - { - "teal": 1885, - "source": 473, - "pc": [ - 1930, - 1931, - 1932 - ] - }, - { - "teal": 1892, - "source": 476, - "pc": [ - 1933, - 1934 - ] - }, - { - "teal": 1893, - "source": 476, - "pc": [ - 1935 - ] - }, - { - "teal": 1894, - "source": 476, - "pc": [ - 1936 - ] - }, - { - "teal": 1895, - "source": 476, - "pc": [ - 1937, - 1938 - ] - }, - { - "teal": 1896, - "source": 476, - "pc": [ - 1939 - ] - }, - { - "teal": 1897, - "source": 476, - "pc": [ - 1940 - ] - }, - { - "teal": 1900, - "source": 475, - "errorMessage": "this can only be called via the validator contract", - "pc": [ - 1941 - ] - }, - { - "teal": 1904, - "source": 479, - "pc": [ - 1942 - ] - }, - { - "teal": 1905, - "source": 479, - "pc": [ - 1943 - ] - }, - { - "teal": 1906, - "source": 479, - "pc": [ - 1944 - ] - }, - { - "teal": 1907, - "source": 479, - "pc": [ - 1945 - ] - }, - { - "teal": 1910, - "source": 479, - "errorMessage": "must be pool 1 in order to be called to pay out token rewards", - "pc": [ - 1946 - ] - }, - { - "teal": 1914, - "source": 480, - "pc": [ - 1947, - 1948 - ] - }, - { - "teal": 1915, - "source": 480, - "pc": [ - 1949 - ] - }, - { - "teal": 1916, - "source": 480, - "pc": [ - 1950 - ] - }, - { - "teal": 1919, - "source": 480, - "errorMessage": "can only claim token rewards from validator that has them", - "pc": [ - 1951 - ] - }, - { - "teal": 1927, - "source": 483, - "pc": [ - 1952 - ] - }, - { - "teal": 1928, - "source": 483, - "pc": [ - 1953, - 1954 - ] - }, - { - "teal": 1929, - "source": 483, - "pc": [ - 1955, - 1956 - ] - }, - { - "teal": 1933, - "source": 484, - "pc": [ - 1957, - 1958 - ] - }, - { - "teal": 1934, - "source": 484, - "pc": [ - 1959, - 1960 - ] - }, - { - "teal": 1938, - "source": 485, - "pc": [ - 1961, - 1962 - ] - }, - { - "teal": 1939, - "source": 485, - "pc": [ - 1963, - 1964 - ] - }, - { - "teal": 1943, - "source": 486, - "pc": [ - 1965, - 1966 - ] - }, - { - "teal": 1944, - "source": 486, - "pc": [ - 1967, - 1968 - ] - }, - { - "teal": 1947, - "source": 483, - "pc": [ - 1969 - ] - }, - { - "teal": 1948, - "source": 483, - "pc": [ - 1970, - 1971 - ] - }, - { - "teal": 1951, - "source": 483, - "pc": [ - 1972 - ] - }, - { - "teal": 1952, - "source": 473, - "pc": [ - 1973 - ] - }, - { - "teal": 1957, - "source": 499, - "pc": [ - 1974, - 1975, - 1976 - ] - }, - { - "teal": 1958, - "source": 499, - "pc": [ - 1977, - 1978, - 1979 - ] - }, - { - "teal": 1961, - "source": 499, - "pc": [ - 1980, - 1981, - 1982 - ] - }, - { - "teal": 1962, - "source": 499, - "pc": [ - 1983 - ] - }, - { - "teal": 1963, - "source": 499, - "pc": [ - 1984 - ] - }, - { - "teal": 1975, - "source": 499, - "pc": [ - 1985, - 1986, - 1987 - ] - }, - { - "teal": 1979, - "source": 500, - "pc": [ - 1988, - 1989, - 1990 - ] - }, - { - "teal": 1982, - "source": 500, - "errorMessage": "can only be called by owner or manager of validator", - "pc": [ - 1991 - ] - }, - { - "teal": 1986, - "source": 501, - "pc": [ - 1992, - 1993, - 1994, - 1995, - 1996, - 1997, - 1998, - 1999, - 2000, - 2001 - ] - }, - { - "teal": 1987, - "source": 501, - "pc": [ - 2002, - 2003 - ] - }, - { - "teal": 1988, - "source": 501, - "pc": [ - 2004 - ] - }, - { - "teal": 1989, - "source": 499, - "pc": [ - 2005 - ] - }, - { - "teal": 1994, - "source": 512, - "pc": [ - 2006, - 2007, - 2008 - ] - }, - { - "teal": 1995, - "source": 512, - "pc": [ - 2009 - ] - }, - { - "teal": 1996, - "source": 512, - "pc": [ - 2010 - ] - }, - { - "teal": 2007, - "source": 512, - "pc": [ - 2011, - 2012, - 2013 - ] - }, - { - "teal": 2010, - "source": 512, - "pc": [ - 2014, - 2015 - ] - }, - { - "teal": 2011, - "source": 512, - "pc": [ - 2016, - 2017 - ] - }, - { - "teal": 2018, - "source": 514, - "pc": [ - 2018 - ] - }, - { - "teal": 2019, - "source": 514, - "pc": [ - 2019 - ] - }, - { - "teal": 2020, - "source": 514, - "pc": [ - 2020, - 2021 - ] - }, - { - "teal": 2021, - "source": 514, - "pc": [ - 2022, - 2023 - ] - }, - { - "teal": 2022, - "source": 514, - "pc": [ - 2024, - 2025 - ] - }, - { - "teal": 2026, - "source": 515, - "pc": [ - 2026 - ] - }, - { - "teal": 2027, - "source": 515, - "pc": [ - 2027 - ] - }, - { - "teal": 2028, - "source": 515, - "pc": [ - 2028, - 2029 - ] - }, - { - "teal": 2032, - "source": 516, - "pc": [ - 2030 - ] - }, - { - "teal": 2033, - "source": 516, - "pc": [ - 2031 - ] - }, - { - "teal": 2034, - "source": 516, - "pc": [ - 2032 - ] - }, - { - "teal": 2035, - "source": 516, - "pc": [ - 2033, - 2034 - ] - }, - { - "teal": 2038, - "source": 514, - "pc": [ - 2035 - ] - }, - { - "teal": 2039, - "source": 514, - "pc": [ - 2036, - 2037 - ] - }, - { - "teal": 2042, - "source": 514, - "pc": [ - 2038 - ] - }, - { - "teal": 2043, - "source": 514, - "pc": [ - 2039, - 2040 - ] - }, - { - "teal": 2044, - "source": 514, - "pc": [ - 2041 - ] - }, - { - "teal": 2045, - "source": 514, - "pc": [ - 2042 - ] - }, - { - "teal": 2046, - "source": 514, - "pc": [ - 2043, - 2044 - ] - }, - { - "teal": 2047, - "source": 514, - "pc": [ - 2045, - 2046, - 2047 - ] - }, - { - "teal": 2048, - "source": 514, - "pc": [ - 2048, - 2049 - ] - }, - { - "teal": 2052, - "source": 523, - "pc": [ - 2050, - 2051 - ] - }, - { - "teal": 2053, - "source": 523, - "pc": [ - 2052, - 2053, - 2054 - ] - }, - { - "teal": 2054, - "source": 523, - "pc": [ - 2055 - ] - }, - { - "teal": 2055, - "source": 523, - "pc": [ - 2056, - 2057 - ] - }, - { - "teal": 2059, - "source": 524, - "pc": [ - 2058, - 2059 - ] - }, - { - "teal": 2060, - "source": 524, - "pc": [ - 2060, - 2061 - ] - }, - { - "teal": 2064, - "source": 525, - "pc": [ - 2062, - 2063 - ] - }, - { - "teal": 2065, - "source": 525, - "pc": [ - 2064, - 2065 - ] - }, - { - "teal": 2066, - "source": 525, - "pc": [ - 2066, - 2067 - ] - }, - { - "teal": 2067, - "source": 525, - "pc": [ - 2068 - ] - }, - { - "teal": 2068, - "source": 525, - "pc": [ - 2069 - ] - }, - { - "teal": 2069, - "source": 525, - "pc": [ - 2070, - 2071 - ] - }, - { - "teal": 2073, - "source": 528, - "pc": [ - 2072, - 2073 - ] - }, - { - "teal": 2074, - "source": 528, - "pc": [ - 2074 - ] - }, - { - "teal": 2075, - "source": 528, - "pc": [ - 2075, - 2076 - ] - }, - { - "teal": 2076, - "source": 528, - "pc": [ - 2077 - ] - }, - { - "teal": 2077, - "source": 528, - "pc": [ - 2078, - 2079 - ] - }, - { - "teal": 2078, - "source": 528, - "pc": [ - 2080 - ] - }, - { - "teal": 2079, - "source": 528, - "pc": [ - 2081 - ] - }, - { - "teal": 2080, - "source": 528, - "pc": [ - 2082, - 2083 - ] - }, - { - "teal": 2084, - "source": 530, - "pc": [ - 2084, - 2085 - ] - }, - { - "teal": 2085, - "source": 530, - "pc": [ - 2086, - 2087 - ] - }, - { - "teal": 2086, - "source": 530, - "pc": [ - 2088 - ] - }, - { - "teal": 2089, - "source": 530, - "errorMessage": "can't call epochBalanceUpdate in same epoch as prior call", - "pc": [ - 2089 - ] - }, - { - "teal": 2093, - "source": 532, - "pc": [ - 2090, - 2091, - 2092 - ] - }, - { - "teal": 2097, - "source": 535, - "pc": [ - 2093, - 2094 - ] - }, - { - "teal": 2098, - "source": 535, - "pc": [ - 2095, - 2096 - ] - }, - { - "teal": 2099, - "source": 535, - "pc": [ - 2097 - ] - }, - { - "teal": 2103, - "source": 536, - "pc": [ - 2098, - 2099 - ] - }, - { - "teal": 2104, - "source": 536, - "pc": [ - 2100 - ] - }, - { - "teal": 2105, - "source": 536, - "pc": [ - 2101 - ] - }, - { - "teal": 2106, - "source": 536, - "pc": [ - 2102 - ] - }, - { - "teal": 2107, - "source": 536, - "pc": [ - 2103, - 2104 - ] - }, - { - "teal": 2108, - "source": 536, - "pc": [ - 2105 - ] - }, - { - "teal": 2109, - "source": 536, - "pc": [ - 2106 - ] - }, - { - "teal": 2113, - "source": 541, - "pc": [ - 2107, - 2108 - ] - }, - { - "teal": 2114, - "source": 541, - "pc": [ - 2109, - 2110, - 2111 - ] - }, - { - "teal": 2115, - "source": 541, - "pc": [ - 2112 - ] - }, - { - "teal": 2116, - "source": 541, - "pc": [ - 2113 - ] - }, - { - "teal": 2117, - "source": 541, - "pc": [ - 2114 - ] - }, - { - "teal": 2118, - "source": 541, - "pc": [ - 2115, - 2116 - ] - }, - { - "teal": 2122, - "source": 542, - "pc": [ - 2117, - 2118, - 2119 - ] - }, - { - "teal": 2123, - "source": 542, - "pc": [ - 2120, - 2121 - ] - }, - { - "teal": 2127, - "source": 543, - "pc": [ - 2122, - 2123 - ] - }, - { - "teal": 2128, - "source": 543, - "pc": [ - 2124, - 2125 - ] - }, - { - "teal": 2133, - "source": 548, - "pc": [ - 2126, - 2127 - ] - }, - { - "teal": 2134, - "source": 548, - "pc": [ - 2128, - 2129, - 2130 - ] - }, - { - "teal": 2140, - "source": 549, - "pc": [ - 2131 - ] - }, - { - "teal": 2141, - "source": 549, - "pc": [ - 2132 - ] - }, - { - "teal": 2142, - "source": 549, - "pc": [ - 2133 - ] - }, - { - "teal": 2143, - "source": 549, - "pc": [ - 2134 - ] - }, - { - "teal": 2144, - "source": 549, - "pc": [ - 2135, - 2136, - 2137 - ] - }, - { - "teal": 2152, - "source": 551, - "pc": [ - 2138 - ] - }, - { - "teal": 2153, - "source": 551, - "pc": [ - 2139 - ] - }, - { - "teal": 2154, - "source": 551, - "pc": [ - 2140, - 2141 - ] - }, - { - "teal": 2155, - "source": 551, - "pc": [ - 2142, - 2143 - ] - }, - { - "teal": 2156, - "source": 551, - "pc": [ - 2144, - 2145 - ] - }, - { - "teal": 2160, - "source": 552, - "pc": [ - 2146 - ] - }, - { - "teal": 2161, - "source": 552, - "pc": [ - 2147 - ] - }, - { - "teal": 2162, - "source": 552, - "pc": [ - 2148, - 2149 - ] - }, - { - "teal": 2166, - "source": 553, - "pc": [ - 2150 - ] - }, - { - "teal": 2167, - "source": 553, - "pc": [ - 2151 - ] - }, - { - "teal": 2168, - "source": 553, - "pc": [ - 2152 - ] - }, - { - "teal": 2169, - "source": 553, - "pc": [ - 2153, - 2154 - ] - }, - { - "teal": 2170, - "source": 553, - "pc": [ - 2155, - 2156, - 2157, - 2158, - 2159, - 2160, - 2161, - 2162, - 2163, - 2164 - ] - }, - { - "teal": 2171, - "source": 553, - "pc": [ - 2165, - 2166 - ] - }, - { - "teal": 2174, - "source": 551, - "pc": [ - 2167 - ] - }, - { - "teal": 2175, - "source": 551, - "pc": [ - 2168, - 2169 - ] - }, - { - "teal": 2178, - "source": 551, - "pc": [ - 2170 - ] - }, - { - "teal": 2179, - "source": 551, - "pc": [ - 2171, - 2172 - ] - }, - { - "teal": 2180, - "source": 551, - "pc": [ - 2173 - ] - }, - { - "teal": 2181, - "source": 551, - "pc": [ - 2174 - ] - }, - { - "teal": 2182, - "source": 551, - "pc": [ - 2175, - 2176 - ] - }, - { - "teal": 2183, - "source": 551, - "pc": [ - 2177, - 2178, - 2179 - ] - }, - { - "teal": 2184, - "source": 551, - "pc": [ - 2180 - ] - }, - { - "teal": 2185, - "source": 551, - "pc": [ - 2181, - 2182 - ] - }, - { - "teal": 2189, - "source": 555, - "pc": [ - 2183, - 2184 - ] - }, - { - "teal": 2190, - "source": 555, - "pc": [ - 2185, - 2186 - ] - }, - { - "teal": 2191, - "source": 555, - "pc": [ - 2187 - ] - }, - { - "teal": 2192, - "source": 555, - "pc": [ - 2188, - 2189 - ] - }, - { - "teal": 2198, - "source": 560, - "pc": [ - 2190 - ] - }, - { - "teal": 2199, - "source": 560, - "pc": [ - 2191 - ] - }, - { - "teal": 2200, - "source": 560, - "pc": [ - 2192 - ] - }, - { - "teal": 2201, - "source": 560, - "pc": [ - 2193 - ] - }, - { - "teal": 2202, - "source": 560, - "pc": [ - 2194, - 2195, - 2196 - ] - }, - { - "teal": 2210, - "source": 561, - "pc": [ - 2197 - ] - }, - { - "teal": 2211, - "source": 561, - "pc": [ - 2198 - ] - }, - { - "teal": 2212, - "source": 561, - "pc": [ - 2199, - 2200 - ] - }, - { - "teal": 2213, - "source": 561, - "pc": [ - 2201, - 2202 - ] - }, - { - "teal": 2214, - "source": 561, - "pc": [ - 2203, - 2204 - ] - }, - { - "teal": 2218, - "source": 562, - "pc": [ - 2205 - ] - }, - { - "teal": 2219, - "source": 562, - "pc": [ - 2206 - ] - }, - { - "teal": 2220, - "source": 562, - "pc": [ - 2207, - 2208 - ] - }, - { - "teal": 2224, - "source": 563, - "pc": [ - 2209 - ] - }, - { - "teal": 2225, - "source": 563, - "pc": [ - 2210 - ] - }, - { - "teal": 2226, - "source": 563, - "pc": [ - 2211 - ] - }, - { - "teal": 2227, - "source": 563, - "pc": [ - 2212, - 2213 - ] - }, - { - "teal": 2230, - "source": 561, - "pc": [ - 2214 - ] - }, - { - "teal": 2231, - "source": 561, - "pc": [ - 2215, - 2216 - ] - }, - { - "teal": 2234, - "source": 561, - "pc": [ - 2217 - ] - }, - { - "teal": 2235, - "source": 561, - "pc": [ - 2218, - 2219 - ] - }, - { - "teal": 2236, - "source": 561, - "pc": [ - 2220 - ] - }, - { - "teal": 2237, - "source": 561, - "pc": [ - 2221 - ] - }, - { - "teal": 2238, - "source": 561, - "pc": [ - 2222, - 2223 - ] - }, - { - "teal": 2239, - "source": 561, - "pc": [ - 2224, - 2225, - 2226 - ] - }, - { - "teal": 2240, - "source": 561, - "pc": [ - 2227, - 2228 - ] - }, - { - "teal": 2241, - "source": 560, - "pc": [ - 2229, - 2230, - 2231 - ] - }, - { - "teal": 2249, - "source": 567, - "pc": [ - 2232 - ] - }, - { - "teal": 2250, - "source": 567, - "pc": [ - 2233 - ] - }, - { - "teal": 2251, - "source": 567, - "pc": [ - 2234, - 2235 - ] - }, - { - "teal": 2252, - "source": 567, - "pc": [ - 2236, - 2237 - ] - }, - { - "teal": 2253, - "source": 567, - "pc": [ - 2238, - 2239 - ] - }, - { - "teal": 2257, - "source": 568, - "pc": [ - 2240, - 2241 - ] - }, - { - "teal": 2258, - "source": 568, - "pc": [ - 2242, - 2243 - ] - }, - { - "teal": 2262, - "source": 569, - "pc": [ - 2244 - ] - }, - { - "teal": 2263, - "source": 569, - "pc": [ - 2245 - ] - }, - { - "teal": 2264, - "source": 569, - "pc": [ - 2246 - ] - }, - { - "teal": 2265, - "source": 569, - "pc": [ - 2247 - ] - }, - { - "teal": 2266, - "source": 569, - "pc": [ - 2248 - ] - }, - { - "teal": 2267, - "source": 569, - "pc": [ - 2249 - ] - }, - { - "teal": 2268, - "source": 569, - "pc": [ - 2250 - ] - }, - { - "teal": 2269, - "source": 569, - "pc": [ - 2251, - 2252, - 2253 - ] - }, - { - "teal": 2270, - "source": 569, - "pc": [ - 2254 - ] - }, - { - "teal": 2271, - "source": 569, - "pc": [ - 2255 - ] - }, - { - "teal": 2272, - "source": 569, - "pc": [ - 2256, - 2257 - ] - }, - { - "teal": 2275, - "source": 567, - "pc": [ - 2258 - ] - }, - { - "teal": 2276, - "source": 567, - "pc": [ - 2259, - 2260 - ] - }, - { - "teal": 2279, - "source": 567, - "pc": [ - 2261 - ] - }, - { - "teal": 2280, - "source": 567, - "pc": [ - 2262, - 2263 - ] - }, - { - "teal": 2281, - "source": 567, - "pc": [ - 2264 - ] - }, - { - "teal": 2282, - "source": 567, - "pc": [ - 2265 - ] - }, - { - "teal": 2283, - "source": 567, - "pc": [ - 2266, - 2267 - ] - }, - { - "teal": 2284, - "source": 567, - "pc": [ - 2268, - 2269, - 2270 - ] - }, - { - "teal": 2285, - "source": 567, - "pc": [ - 2271, - 2272 - ] - }, - { - "teal": 2295, - "source": 576, - "pc": [ - 2273 - ] - }, - { - "teal": 2296, - "source": 576, - "pc": [ - 2274 - ] - }, - { - "teal": 2297, - "source": 576, - "pc": [ - 2275, - 2276 - ] - }, - { - "teal": 2298, - "source": 576, - "pc": [ - 2277, - 2278, - 2279, - 2280, - 2281, - 2282 - ] - }, - { - "teal": 2299, - "source": 576, - "pc": [ - 2283, - 2284 - ] - }, - { - "teal": 2303, - "source": 577, - "pc": [ - 2285 - ] - }, - { - "teal": 2304, - "source": 577, - "pc": [ - 2286 - ] - }, - { - "teal": 2305, - "source": 577, - "pc": [ - 2287, - 2288 - ] - }, - { - "teal": 2309, - "source": 578, - "pc": [ - 2289 - ] - }, - { - "teal": 2310, - "source": 578, - "pc": [ - 2290 - ] - }, - { - "teal": 2311, - "source": 578, - "pc": [ - 2291 - ] - }, - { - "teal": 2312, - "source": 578, - "pc": [ - 2292, - 2293 - ] - }, - { - "teal": 2315, - "source": 576, - "pc": [ - 2294 - ] - }, - { - "teal": 2316, - "source": 576, - "pc": [ - 2295, - 2296 - ] - }, - { - "teal": 2319, - "source": 576, - "pc": [ - 2297 - ] - }, - { - "teal": 2320, - "source": 576, - "pc": [ - 2298, - 2299 - ] - }, - { - "teal": 2321, - "source": 576, - "pc": [ - 2300 - ] - }, - { - "teal": 2322, - "source": 576, - "pc": [ - 2301 - ] - }, - { - "teal": 2323, - "source": 576, - "pc": [ - 2302, - 2303 - ] - }, - { - "teal": 2324, - "source": 576, - "pc": [ - 2304, - 2305, - 2306 - ] - }, - { - "teal": 2325, - "source": 576, - "pc": [ - 2307, - 2308 - ] - }, - { - "teal": 2329, - "source": 580, - "pc": [ - 2309, - 2310 - ] - }, - { - "teal": 2330, - "source": 580, - "pc": [ - 2311, - 2312, - 2313 - ] - }, - { - "teal": 2331, - "source": 580, - "pc": [ - 2314 - ] - }, - { - "teal": 2332, - "source": 580, - "pc": [ - 2315, - 2316 - ] - }, - { - "teal": 2336, - "source": 586, - "pc": [ - 2317, - 2318 - ] - }, - { - "teal": 2337, - "source": 586, - "pc": [ - 2319, - 2320 - ] - }, - { - "teal": 2338, - "source": 586, - "pc": [ - 2321 - ] - }, - { - "teal": 2339, - "source": 586, - "pc": [ - 2322, - 2323 - ] - }, - { - "teal": 2340, - "source": 586, - "pc": [ - 2324 - ] - }, - { - "teal": 2341, - "source": 586, - "pc": [ - 2325 - ] - }, - { - "teal": 2342, - "source": 586, - "pc": [ - 2326, - 2327 - ] - }, - { - "teal": 2343, - "source": 586, - "pc": [ - 2328, - 2329 - ] - }, - { - "teal": 2344, - "source": 586, - "pc": [ - 2330 - ] - }, - { - "teal": 2345, - "source": 586, - "pc": [ - 2331 - ] - }, - { - "teal": 2346, - "source": 586, - "pc": [ - 2332, - 2333 - ] - }, - { - "teal": 2350, - "source": 587, - "pc": [ - 2334 - ] - }, - { - "teal": 2351, - "source": 587, - "pc": [ - 2335, - 2336 - ] - }, - { - "teal": 2355, - "source": 588, - "pc": [ - 2337, - 2338, - 2339 - ] - }, - { - "teal": 2356, - "source": 588, - "pc": [ - 2340, - 2341 - ] - }, - { - "teal": 2361, - "source": 596, - "pc": [ - 2342, - 2343 - ] - }, - { - "teal": 2362, - "source": 596, - "pc": [ - 2344, - 2345, - 2346 - ] - }, - { - "teal": 2363, - "source": 596, - "pc": [ - 2347 - ] - }, - { - "teal": 2364, - "source": 596, - "pc": [ - 2348, - 2349 - ] - }, - { - "teal": 2365, - "source": 596, - "pc": [ - 2350 - ] - }, - { - "teal": 2366, - "source": 596, - "pc": [ - 2351, - 2352, - 2353 - ] - }, - { - "teal": 2371, - "source": 597, - "pc": [ - 2354 - ] - }, - { - "teal": 2372, - "source": 597, - "pc": [ - 2355, - 2356 - ] - }, - { - "teal": 2377, - "source": 603, - "pc": [ - 2357 - ] - }, - { - "teal": 2378, - "source": 603, - "pc": [ - 2358, - 2359 - ] - }, - { - "teal": 2382, - "source": 604, - "pc": [ - 2360 - ] - }, - { - "teal": 2383, - "source": 604, - "pc": [ - 2361, - 2362 - ] - }, - { - "teal": 2387, - "source": 605, - "pc": [ - 2363 - ] - }, - { - "teal": 2388, - "source": 605, - "pc": [ - 2364, - 2365 - ] - }, - { - "teal": 2392, - "source": 606, - "pc": [ - 2366 - ] - }, - { - "teal": 2393, - "source": 606, - "pc": [ - 2367, - 2368 - ] - }, - { - "teal": 2398, - "source": 607, - "pc": [ - 2369, - 2370 - ] - }, - { - "teal": 2399, - "source": 607, - "pc": [ - 2371, - 2372, - 2373 - ] - }, - { - "teal": 2405, - "source": 609, - "pc": [ - 2374, - 2375 - ] - }, - { - "teal": 2406, - "source": 609, - "pc": [ - 2376, - 2377 - ] - }, - { - "teal": 2407, - "source": 609, - "pc": [ - 2378, - 2379, - 2380 - ] - }, - { - "teal": 2408, - "source": 609, - "pc": [ - 2381 - ] - }, - { - "teal": 2409, - "source": 609, - "pc": [ - 2382, - 2383 - ] - }, - { - "teal": 2410, - "source": 609, - "pc": [ - 2384 - ] - }, - { - "teal": 2411, - "source": 609, - "pc": [ - 2385, - 2386 - ] - }, - { - "teal": 2412, - "source": 609, - "pc": [ - 2387 - ] - }, - { - "teal": 2413, - "source": 608, - "pc": [ - 2388, - 2389 - ] - }, - { - "teal": 2418, - "source": 613, - "pc": [ - 2390, - 2391 - ] - }, - { - "teal": 2419, - "source": 613, - "pc": [ - 2392, - 2393 - ] - }, - { - "teal": 2420, - "source": 613, - "pc": [ - 2394, - 2395, - 2396 - ] - }, - { - "teal": 2421, - "source": 613, - "pc": [ - 2397 - ] - }, - { - "teal": 2422, - "source": 613, - "pc": [ - 2398 - ] - }, - { - "teal": 2423, - "source": 613, - "pc": [ - 2399, - 2400, - 2401 - ] - }, - { - "teal": 2428, - "source": 619, - "pc": [ - 2402, - 2403 - ] - }, - { - "teal": 2429, - "source": 619, - "pc": [ - 2404 - ] - }, - { - "teal": 2430, - "source": 619, - "pc": [ - 2405 - ] - }, - { - "teal": 2431, - "source": 619, - "pc": [ - 2406 - ] - }, - { - "teal": 2432, - "source": 619, - "pc": [ - 2407 - ] - }, - { - "teal": 2433, - "source": 619, - "pc": [ - 2408 - ] - }, - { - "teal": 2434, - "source": 619, - "pc": [ - 2409, - 2410 - ] - }, - { - "teal": 2435, - "source": 619, - "pc": [ - 2411 - ] - }, - { - "teal": 2436, - "source": 619, - "pc": [ - 2412 - ] - }, - { - "teal": 2437, - "source": 619, - "pc": [ - 2413, - 2414 - ] - }, - { - "teal": 2438, - "source": 619, - "pc": [ - 2415 - ] - }, - { - "teal": 2439, - "source": 619, - "pc": [ - 2416 - ] - }, - { - "teal": 2440, - "source": 619, - "pc": [ - 2417, - 2418 - ] - }, - { - "teal": 2444, - "source": 622, - "pc": [ - 2419, - 2420 - ] - }, - { - "teal": 2445, - "source": 622, - "pc": [ - 2421, - 2422, - 2423 - ] - }, - { - "teal": 2446, - "source": 622, - "pc": [ - 2424 - ] - }, - { - "teal": 2447, - "source": 622, - "pc": [ - 2425, - 2426 - ] - }, - { - "teal": 2448, - "source": 622, - "pc": [ - 2427 - ] - }, - { - "teal": 2449, - "source": 622, - "pc": [ - 2428 - ] - }, - { - "teal": 2450, - "source": 622, - "pc": [ - 2429, - 2430 - ] - }, - { - "teal": 2451, - "source": 622, - "pc": [ - 2431 - ] - }, - { - "teal": 2452, - "source": 622, - "pc": [ - 2432 - ] - }, - { - "teal": 2453, - "source": 622, - "pc": [ - 2433 - ] - }, - { - "teal": 2454, - "source": 622, - "pc": [ - 2434 - ] - }, - { - "teal": 2455, - "source": 622, - "pc": [ - 2435 - ] - }, - { - "teal": 2458, - "source": 622, - "errorMessage": "wideRatio failed", - "pc": [ - 2436 - ] - }, - { - "teal": 2459, - "source": 622, - "pc": [ - 2437, - 2438 - ] - }, - { - "teal": 2467, - "source": 625, - "pc": [ - 2439, - 2440 - ] - }, - { - "teal": 2468, - "source": 625, - "pc": [ - 2441 - ] - }, - { - "teal": 2469, - "source": 625, - "pc": [ - 2442 - ] - }, - { - "teal": 2470, - "source": 625, - "pc": [ - 2443, - 2444, - 2445 - ] - }, - { - "teal": 2476, - "source": 630, - "pc": [ - 2446, - 2447 - ] - }, - { - "teal": 2477, - "source": 630, - "pc": [ - 2448, - 2449 - ] - }, - { - "teal": 2478, - "source": 630, - "pc": [ - 2450 - ] - }, - { - "teal": 2479, - "source": 630, - "pc": [ - 2451, - 2452, - 2453 - ] - }, - { - "teal": 2484, - "source": 631, - "pc": [ - 2454, - 2455, - 2456, - 2457, - 2458, - 2459, - 2460, - 2461, - 2462, - 2463, - 2464, - 2465, - 2466, - 2467, - 2468, - 2469, - 2470, - 2471, - 2472, - 2473, - 2474, - 2475, - 2476, - 2477 - ] - }, - { - "teal": 2485, - "source": 631, - "pc": [ - 2478 - ] - }, - { - "teal": 2489, - "source": 632, - "pc": [ - 2479 - ] - }, - { - "teal": 2497, - "source": 636, - "pc": [ - 2480, - 2481 - ] - }, - { - "teal": 2498, - "source": 636, - "pc": [ - 2482, - 2483, - 2484 - ] - }, - { - "teal": 2506, - "source": 643, - "pc": [ - 2485, - 2486 - ] - }, - { - "teal": 2507, - "source": 643, - "pc": [ - 2487, - 2488 - ] - }, - { - "teal": 2508, - "source": 643, - "pc": [ - 2489, - 2490, - 2491 - ] - }, - { - "teal": 2509, - "source": 643, - "pc": [ - 2492 - ] - }, - { - "teal": 2510, - "source": 642, - "pc": [ - 2493 - ] - }, - { - "teal": 2511, - "source": 642, - "pc": [ - 2494 - ] - }, - { - "teal": 2512, - "source": 644, - "pc": [ - 2495, - 2496 - ] - }, - { - "teal": 2513, - "source": 642, - "pc": [ - 2497 - ] - }, - { - "teal": 2514, - "source": 642, - "pc": [ - 2498 - ] - }, - { - "teal": 2515, - "source": 642, - "pc": [ - 2499 - ] - }, - { - "teal": 2516, - "source": 642, - "pc": [ - 2500 - ] - }, - { - "teal": 2517, - "source": 642, - "pc": [ - 2501 - ] - }, - { - "teal": 2520, - "source": 642, - "errorMessage": "wideRatio failed", - "pc": [ - 2502 - ] - }, - { - "teal": 2521, - "source": 642, - "pc": [ - 2503, - 2504 - ] - }, - { - "teal": 2525, - "source": 647, - "pc": [ - 2505, - 2506 - ] - }, - { - "teal": 2526, - "source": 647, - "pc": [ - 2507, - 2508 - ] - }, - { - "teal": 2527, - "source": 647, - "pc": [ - 2509 - ] - }, - { - "teal": 2528, - "source": 647, - "pc": [ - 2510 - ] - }, - { - "teal": 2529, - "source": 647, - "pc": [ - 2511, - 2512 - ] - }, - { - "teal": 2530, - "source": 647, - "pc": [ - 2513, - 2514, - 2515 - ] - }, - { - "teal": 2531, - "source": 647, - "pc": [ - 2516 - ] - }, - { - "teal": 2532, - "source": 647, - "pc": [ - 2517 - ] - }, - { - "teal": 2533, - "source": 647, - "pc": [ - 2518 - ] - }, - { - "teal": 2534, - "source": 647, - "pc": [ - 2519 - ] - }, - { - "teal": 2535, - "source": 647, - "pc": [ - 2520 - ] - }, - { - "teal": 2536, - "source": 647, - "pc": [ - 2521 - ] - }, - { - "teal": 2539, - "source": 647, - "errorMessage": "wideRatio failed", - "pc": [ - 2522 - ] - }, - { - "teal": 2540, - "source": 647, - "pc": [ - 2523, - 2524 - ] - }, - { - "teal": 2545, - "source": 649, - "pc": [ - 2525, - 2526 - ] - }, - { - "teal": 2546, - "source": 649, - "pc": [ - 2527, - 2528 - ] - }, - { - "teal": 2547, - "source": 649, - "pc": [ - 2529, - 2530 - ] - }, - { - "teal": 2548, - "source": 649, - "pc": [ - 2531 - ] - }, - { - "teal": 2549, - "source": 649, - "pc": [ - 2532 - ] - }, - { - "teal": 2550, - "source": 649, - "pc": [ - 2533, - 2534, - 2535 - ] - }, - { - "teal": 2555, - "source": 650, - "pc": [ - 2536, - 2537 - ] - }, - { - "teal": 2556, - "source": 650, - "pc": [ - 2538, - 2539 - ] - }, - { - "teal": 2557, - "source": 650, - "pc": [ - 2540 - ] - }, - { - "teal": 2558, - "source": 650, - "pc": [ - 2541, - 2542 - ] - }, - { - "teal": 2563, - "source": 653, - "pc": [ - 2543, - 2544 - ] - }, - { - "teal": 2564, - "source": 653, - "pc": [ - 2545, - 2546 - ] - }, - { - "teal": 2565, - "source": 653, - "pc": [ - 2547 - ] - }, - { - "teal": 2566, - "source": 653, - "pc": [ - 2548, - 2549 - ] - }, - { - "teal": 2574, - "source": 654, - "pc": [ - 2550 - ] - }, - { - "teal": 2575, - "source": 654, - "pc": [ - 2551 - ] - }, - { - "teal": 2576, - "source": 654, - "pc": [ - 2552, - 2553 - ] - }, - { - "teal": 2580, - "source": 655, - "pc": [ - 2554, - 2555 - ] - }, - { - "teal": 2581, - "source": 655, - "pc": [ - 2556, - 2557 - ] - }, - { - "teal": 2585, - "source": 656, - "pc": [ - 2558, - 2559 - ] - }, - { - "teal": 2586, - "source": 656, - "pc": [ - 2560 - ] - }, - { - "teal": 2587, - "source": 656, - "pc": [ - 2561 - ] - }, - { - "teal": 2588, - "source": 656, - "pc": [ - 2562, - 2563 - ] - }, - { - "teal": 2589, - "source": 656, - "pc": [ - 2564, - 2565 - ] - }, - { - "teal": 2593, - "source": 657, - "pc": [ - 2566, - 2567, - 2568, - 2569, - 2570, - 2571, - 2572, - 2573, - 2574, - 2575, - 2576, - 2577, - 2578, - 2579, - 2580, - 2581, - 2582, - 2583, - 2584, - 2585, - 2586, - 2587, - 2588, - 2589, - 2590, - 2591, - 2592, - 2593, - 2594, - 2595, - 2596, - 2597, - 2598, - 2599, - 2600, - 2601 - ] - }, - { - "teal": 2594, - "source": 657, - "pc": [ - 2602, - 2603 - ] - }, - { - "teal": 2597, - "source": 654, - "pc": [ - 2604 - ] - }, - { - "teal": 2598, - "source": 654, - "pc": [ - 2605, - 2606 - ] - }, - { - "teal": 2601, - "source": 654, - "pc": [ - 2607 - ] - }, - { - "teal": 2605, - "source": 660, - "pc": [ - 2608, - 2609 - ] - }, - { - "teal": 2606, - "source": 660, - "pc": [ - 2610, - 2611 - ] - }, - { - "teal": 2607, - "source": 636, - "pc": [ - 2612, - 2613, - 2614 - ] - }, - { - "teal": 2612, - "source": 661, - "pc": [ - 2615, - 2616 - ] - }, - { - "teal": 2613, - "source": 661, - "pc": [ - 2617, - 2618, - 2619 - ] - }, - { - "teal": 2614, - "source": 661, - "pc": [ - 2620 - ] - }, - { - "teal": 2615, - "source": 661, - "pc": [ - 2621 - ] - }, - { - "teal": 2616, - "source": 661, - "pc": [ - 2622 - ] - }, - { - "teal": 2617, - "source": 661, - "pc": [ - 2623, - 2624, - 2625 - ] - }, - { - "teal": 2625, - "source": 665, - "pc": [ - 2626, - 2627 - ] - }, - { - "teal": 2626, - "source": 665, - "pc": [ - 2628, - 2629 - ] - }, - { - "teal": 2627, - "source": 665, - "pc": [ - 2630, - 2631, - 2632 - ] - }, - { - "teal": 2628, - "source": 665, - "pc": [ - 2633 - ] - }, - { - "teal": 2629, - "source": 664, - "pc": [ - 2634 - ] - }, - { - "teal": 2630, - "source": 664, - "pc": [ - 2635 - ] - }, - { - "teal": 2631, - "source": 666, - "pc": [ - 2636, - 2637 - ] - }, - { - "teal": 2632, - "source": 664, - "pc": [ - 2638 - ] - }, - { - "teal": 2633, - "source": 664, - "pc": [ - 2639 - ] - }, - { - "teal": 2634, - "source": 664, - "pc": [ - 2640 - ] - }, - { - "teal": 2635, - "source": 664, - "pc": [ - 2641 - ] - }, - { - "teal": 2636, - "source": 664, - "pc": [ - 2642 - ] - }, - { - "teal": 2639, - "source": 664, - "errorMessage": "wideRatio failed", - "pc": [ - 2643 - ] - }, - { - "teal": 2640, - "source": 664, - "pc": [ - 2644, - 2645 - ] - }, - { - "teal": 2644, - "source": 670, - "pc": [ - 2646, - 2647 - ] - }, - { - "teal": 2645, - "source": 670, - "pc": [ - 2648, - 2649 - ] - }, - { - "teal": 2646, - "source": 670, - "pc": [ - 2650 - ] - }, - { - "teal": 2647, - "source": 670, - "pc": [ - 2651, - 2652 - ] - }, - { - "teal": 2652, - "source": 677, - "pc": [ - 2653, - 2654 - ] - }, - { - "teal": 2653, - "source": 677, - "pc": [ - 2655 - ] - }, - { - "teal": 2654, - "source": 677, - "pc": [ - 2656 - ] - }, - { - "teal": 2655, - "source": 677, - "pc": [ - 2657, - 2658, - 2659 - ] - }, - { - "teal": 2660, - "source": 680, - "pc": [ - 2660 - ] - }, - { - "teal": 2661, - "source": 680, - "pc": [ - 2661, - 2662 - ] - }, - { - "teal": 2667, - "source": 682, - "pc": [ - 2663, - 2664 - ] - }, - { - "teal": 2668, - "source": 682, - "pc": [ - 2665, - 2666, - 2667 - ] - }, - { - "teal": 2669, - "source": 682, - "pc": [ - 2668, - 2669 - ] - }, - { - "teal": 2670, - "source": 682, - "pc": [ - 2670, - 2671, - 2672 - ] - }, - { - "teal": 2671, - "source": 682, - "pc": [ - 2673 - ] - }, - { - "teal": 2672, - "source": 682, - "pc": [ - 2674 - ] - }, - { - "teal": 2673, - "source": 682, - "pc": [ - 2675, - 2676, - 2677 - ] - }, - { - "teal": 2674, - "source": 683, - "pc": [ - 2678, - 2679 - ] - }, - { - "teal": 2675, - "source": 683, - "pc": [ - 2680, - 2681, - 2682 - ] - }, - { - "teal": 2676, - "source": 683, - "pc": [ - 2683, - 2684 - ] - }, - { - "teal": 2677, - "source": 683, - "pc": [ - 2685 - ] - }, - { - "teal": 2678, - "source": 683, - "pc": [ - 2686, - 2687 - ] - }, - { - "teal": 2679, - "source": 683, - "pc": [ - 2688, - 2689, - 2690 - ] - }, - { - "teal": 2680, - "source": 683, - "pc": [ - 2691, - 2692 - ] - }, - { - "teal": 2681, - "source": 683, - "pc": [ - 2693 - ] - }, - { - "teal": 2682, - "source": 683, - "pc": [ - 2694 - ] - }, - { - "teal": 2683, - "source": 683, - "pc": [ - 2695, - 2696 - ] - }, - { - "teal": 2684, - "source": 683, - "pc": [ - 2697 - ] - }, - { - "teal": 2685, - "source": 682, - "pc": [ - 2698 - ] - }, - { - "teal": 2688, - "source": 681, - "pc": [ - 2699, - 2700, - 2701 - ] - }, - { - "teal": 2693, - "source": 685, - "pc": [ - 2702, - 2703 - ] - }, - { - "teal": 2694, - "source": 685, - "pc": [ - 2704, - 2705 - ] - }, - { - "teal": 2695, - "source": 685, - "pc": [ - 2706 - ] - }, - { - "teal": 2696, - "source": 685, - "pc": [ - 2707, - 2708, - 2709 - ] - }, - { - "teal": 2697, - "source": 685, - "pc": [ - 2710, - 2711 - ] - }, - { - "teal": 2698, - "source": 685, - "pc": [ - 2712, - 2713, - 2714 - ] - }, - { - "teal": 2701, - "source": 685, - "pc": [ - 2715, - 2716 - ] - }, - { - "teal": 2704, - "source": 685, - "pc": [ - 2717, - 2718 - ] - }, - { - "teal": 2712, - "source": 686, - "pc": [ - 2719 - ] - }, - { - "teal": 2713, - "source": 686, - "pc": [ - 2720 - ] - }, - { - "teal": 2714, - "source": 686, - "pc": [ - 2721, - 2722 - ] - }, - { - "teal": 2718, - "source": 687, - "pc": [ - 2723, - 2724 - ] - }, - { - "teal": 2719, - "source": 687, - "pc": [ - 2725, - 2726 - ] - }, - { - "teal": 2723, - "source": 688, - "pc": [ - 2727, - 2728 - ] - }, - { - "teal": 2724, - "source": 688, - "pc": [ - 2729, - 2730, - 2731 - ] - }, - { - "teal": 2725, - "source": 688, - "pc": [ - 2732, - 2733 - ] - }, - { - "teal": 2729, - "source": 689, - "pc": [ - 2734, - 2735, - 2736, - 2737, - 2738, - 2739, - 2740, - 2741, - 2742, - 2743, - 2744, - 2745, - 2746, - 2747, - 2748, - 2749, - 2750, - 2751, - 2752, - 2753, - 2754, - 2755, - 2756, - 2757, - 2758, - 2759, - 2760, - 2761, - 2762, - 2763, - 2764, - 2765, - 2766, - 2767, - 2768, - 2769, - 2770, - 2771, - 2772, - 2773, - 2774, - 2775, - 2776, - 2777, - 2778, - 2779, - 2780, - 2781, - 2782, - 2783, - 2784, - 2785, - 2786, - 2787, - 2788 - ] - }, - { - "teal": 2730, - "source": 689, - "pc": [ - 2789, - 2790 - ] - }, - { - "teal": 2733, - "source": 686, - "pc": [ - 2791 - ] - }, - { - "teal": 2734, - "source": 686, - "pc": [ - 2792, - 2793 - ] - }, - { - "teal": 2737, - "source": 686, - "pc": [ - 2794 - ] - }, - { - "teal": 2743, - "source": 692, - "pc": [ - 2795, - 2796 - ] - }, - { - "teal": 2744, - "source": 692, - "pc": [ - 2797, - 2798 - ] - }, - { - "teal": 2745, - "source": 692, - "pc": [ - 2799 - ] - }, - { - "teal": 2746, - "source": 692, - "pc": [ - 2800 - ] - }, - { - "teal": 2747, - "source": 692, - "pc": [ - 2801 - ] - }, - { - "teal": 2748, - "source": 692, - "pc": [ - 2802, - 2803, - 2804 - ] - }, - { - "teal": 2757, - "source": 693, - "pc": [ - 2805 - ] - }, - { - "teal": 2758, - "source": 693, - "pc": [ - 2806 - ] - }, - { - "teal": 2759, - "source": 693, - "pc": [ - 2807, - 2808 - ] - }, - { - "teal": 2763, - "source": 694, - "pc": [ - 2809, - 2810 - ] - }, - { - "teal": 2764, - "source": 694, - "pc": [ - 2811, - 2812 - ] - }, - { - "teal": 2765, - "source": 694, - "pc": [ - 2813 - ] - }, - { - "teal": 2766, - "source": 694, - "pc": [ - 2814, - 2815 - ] - }, - { - "teal": 2770, - "source": 695, - "pc": [ - 2816, - 2817 - ] - }, - { - "teal": 2771, - "source": 695, - "pc": [ - 2818, - 2819, - 2820 - ] - }, - { - "teal": 2772, - "source": 695, - "pc": [ - 2821, - 2822 - ] - }, - { - "teal": 2776, - "source": 696, - "pc": [ - 2823, - 2824, - 2825, - 2826, - 2827, - 2828, - 2829, - 2830, - 2831, - 2832, - 2833, - 2834, - 2835, - 2836, - 2837, - 2838, - 2839, - 2840 - ] - }, - { - "teal": 2777, - "source": 696, - "pc": [ - 2841, - 2842 - ] - }, - { - "teal": 2780, - "source": 693, - "pc": [ - 2843 - ] - }, - { - "teal": 2781, - "source": 693, - "pc": [ - 2844, - 2845 - ] - }, - { - "teal": 2784, - "source": 693, - "pc": [ - 2846 - ] - }, - { - "teal": 2793, - "source": 708, - "pc": [ - 2847 - ] - }, - { - "teal": 2794, - "source": 708, - "pc": [ - 2848, - 2849 - ] - }, - { - "teal": 2799, - "source": 732, - "pc": [ - 2850, - 2851 - ] - }, - { - "teal": 2800, - "source": 732, - "pc": [ - 2852 - ] - }, - { - "teal": 2801, - "source": 732, - "pc": [ - 2853 - ] - }, - { - "teal": 2802, - "source": 732, - "pc": [ - 2854 - ] - }, - { - "teal": 2803, - "source": 732, - "pc": [ - 2855, - 2856, - 2857 - ] - }, - { - "teal": 2804, - "source": 732, - "pc": [ - 2858, - 2859 - ] - }, - { - "teal": 2805, - "source": 732, - "pc": [ - 2860 - ] - }, - { - "teal": 2806, - "source": 732, - "pc": [ - 2861 - ] - }, - { - "teal": 2807, - "source": 732, - "pc": [ - 2862 - ] - }, - { - "teal": 2810, - "source": 732, - "pc": [ - 2863, - 2864, - 2865 - ] - }, - { - "teal": 2815, - "source": 733, - "pc": [ - 2866 - ] - }, - { - "teal": 2816, - "source": 733, - "pc": [ - 2867, - 2868 - ] - }, - { - "teal": 2820, - "source": 734, - "pc": [ - 2869, - 2870 - ] - }, - { - "teal": 2821, - "source": 734, - "pc": [ - 2871, - 2872 - ] - }, - { - "teal": 2825, - "source": 736, - "pc": [ - 2873, - 2874 - ] - }, - { - "teal": 2826, - "source": 736, - "pc": [ - 2875, - 2876 - ] - }, - { - "teal": 2830, - "source": 737, - "pc": [ - 2877 - ] - }, - { - "teal": 2831, - "source": 737, - "pc": [ - 2878, - 2879 - ] - }, - { - "teal": 2836, - "source": 737, - "pc": [ - 2880, - 2881 - ] - }, - { - "teal": 2837, - "source": 737, - "pc": [ - 2882, - 2883 - ] - }, - { - "teal": 2838, - "source": 737, - "pc": [ - 2884 - ] - }, - { - "teal": 2839, - "source": 737, - "pc": [ - 2885, - 2886, - 2887 - ] - }, - { - "teal": 2844, - "source": 738, - "pc": [ - 2888, - 2889 - ] - }, - { - "teal": 2845, - "source": 738, - "pc": [ - 2890, - 2891 - ] - }, - { - "teal": 2846, - "source": 738, - "pc": [ - 2892 - ] - }, - { - "teal": 2847, - "source": 738, - "pc": [ - 2893, - 2894, - 2895 - ] - }, - { - "teal": 2852, - "source": 739, - "pc": [ - 2896 - ] - }, - { - "teal": 2853, - "source": 739, - "pc": [ - 2897 - ] - }, - { - "teal": 2854, - "source": 739, - "pc": [ - 2898, - 2899 - ] - }, - { - "teal": 2855, - "source": 739, - "pc": [ - 2900 - ] - }, - { - "teal": 2856, - "source": 739, - "pc": [ - 2901, - 2902 - ] - }, - { - "teal": 2857, - "source": 739, - "pc": [ - 2903, - 2904 - ] - }, - { - "teal": 2858, - "source": 739, - "pc": [ - 2905 - ] - }, - { - "teal": 2859, - "source": 739, - "pc": [ - 2906, - 2907 - ] - }, - { - "teal": 2860, - "source": 739, - "pc": [ - 2908, - 2909 - ] - }, - { - "teal": 2861, - "source": 739, - "pc": [ - 2910, - 2911 - ] - }, - { - "teal": 2862, - "source": 739, - "pc": [ - 2912, - 2913 - ] - }, - { - "teal": 2863, - "source": 739, - "pc": [ - 2914 - ] - }, - { - "teal": 2868, - "source": 741, - "pc": [ - 2915, - 2916 - ] - }, - { - "teal": 2869, - "source": 741, - "pc": [ - 2917 - ] - }, - { - "teal": 2870, - "source": 741, - "pc": [ - 2918 - ] - }, - { - "teal": 2871, - "source": 741, - "pc": [ - 2919 - ] - }, - { - "teal": 2872, - "source": 741, - "pc": [ - 2920 - ] - }, - { - "teal": 2873, - "source": 741, - "pc": [ - 2921, - 2922 - ] - }, - { - "teal": 2874, - "source": 741, - "pc": [ - 2923 - ] - }, - { - "teal": 2875, - "source": 741, - "pc": [ - 2924, - 2925 - ] - }, - { - "teal": 2880, - "source": 742, - "pc": [ - 2926, - 2927 - ] - }, - { - "teal": 2881, - "source": 742, - "pc": [ - 2928, - 2929, - 2930 - ] - }, - { - "teal": 2882, - "source": 742, - "pc": [ - 2931, - 2932 - ] - }, - { - "teal": 2883, - "source": 742, - "pc": [ - 2933 - ] - }, - { - "teal": 2884, - "source": 742, - "pc": [ - 2934, - 2935, - 2936 - ] - }, - { - "teal": 2890, - "source": 743, - "pc": [ - 2937, - 2938 - ] - }, - { - "teal": 2891, - "source": 743, - "pc": [ - 2939, - 2940, - 2941 - ] - }, - { - "teal": 2892, - "source": 743, - "pc": [ - 2942 - ] - }, - { - "teal": 2893, - "source": 743, - "pc": [ - 2943, - 2944 - ] - }, - { - "teal": 2894, - "source": 743, - "pc": [ - 2945 - ] - }, - { - "teal": 2895, - "source": 743, - "pc": [ - 2946, - 2947, - 2948 - ] - }, - { - "teal": 2900, - "source": 746, - "pc": [ - 2949, - 2950 - ] - }, - { - "teal": 2901, - "source": 746, - "pc": [ - 2951, - 2952 - ] - }, - { - "teal": 2902, - "source": 746, - "pc": [ - 2953, - 2954, - 2955 - ] - }, - { - "teal": 2903, - "source": 746, - "pc": [ - 2956 - ] - }, - { - "teal": 2904, - "source": 746, - "pc": [ - 2957 - ] - }, - { - "teal": 2905, - "source": 746, - "pc": [ - 2958, - 2959 - ] - }, - { - "teal": 2906, - "source": 743, - "pc": [ - 2960, - 2961, - 2962 - ] - }, - { - "teal": 2911, - "source": 750, - "pc": [ - 2963, - 2964 - ] - }, - { - "teal": 2912, - "source": 750, - "pc": [ - 2965, - 2966 - ] - }, - { - "teal": 2913, - "source": 750, - "pc": [ - 2967, - 2968, - 2969 - ] - }, - { - "teal": 2914, - "source": 750, - "pc": [ - 2970 - ] - }, - { - "teal": 2915, - "source": 750, - "pc": [ - 2971 - ] - }, - { - "teal": 2916, - "source": 750, - "pc": [ - 2972, - 2973 - ] - }, - { - "teal": 2921, - "source": 754, - "pc": [ - 2974, - 2975 - ] - }, - { - "teal": 2922, - "source": 754, - "pc": [ - 2976, - 2977 - ] - }, - { - "teal": 2923, - "source": 754, - "pc": [ - 2978 - ] - }, - { - "teal": 2924, - "source": 754, - "pc": [ - 2979, - 2980, - 2981 - ] - }, - { - "teal": 2929, - "source": 755, - "pc": [ - 2982, - 2983 - ] - }, - { - "teal": 2930, - "source": 755, - "pc": [ - 2984, - 2985 - ] - }, - { - "teal": 2931, - "source": 755, - "pc": [ - 2986, - 2987, - 2988 - ] - }, - { - "teal": 2932, - "source": 755, - "pc": [ - 2989 - ] - }, - { - "teal": 2933, - "source": 755, - "pc": [ - 2990 - ] - }, - { - "teal": 2934, - "source": 755, - "pc": [ - 2991, - 2992 - ] - }, - { - "teal": 2938, - "source": 756, - "pc": [ - 2993, - 2994 - ] - }, - { - "teal": 2939, - "source": 756, - "pc": [ - 2995, - 2996 - ] - }, - { - "teal": 2940, - "source": 756, - "pc": [ - 2997 - ] - }, - { - "teal": 2941, - "source": 756, - "pc": [ - 2998, - 2999 - ] - }, - { - "teal": 2942, - "source": 756, - "pc": [ - 3000 - ] - }, - { - "teal": 2943, - "source": 756, - "pc": [ - 3001, - 3002 - ] - }, - { - "teal": 2948, - "source": 758, - "pc": [ - 3003, - 3004 - ] - }, - { - "teal": 2949, - "source": 758, - "pc": [ - 3005 - ] - }, - { - "teal": 2950, - "source": 758, - "pc": [ - 3006 - ] - }, - { - "teal": 2951, - "source": 758, - "pc": [ - 3007, - 3008, - 3009 - ] - }, - { - "teal": 2959, - "source": 761, - "pc": [ - 3010, - 3011 - ] - }, - { - "teal": 2960, - "source": 761, - "pc": [ - 3012, - 3013, - 3014 - ] - }, - { - "teal": 2961, - "source": 761, - "pc": [ - 3015 - ] - }, - { - "teal": 2962, - "source": 761, - "pc": [ - 3016, - 3017 - ] - }, - { - "teal": 2963, - "source": 760, - "pc": [ - 3018 - ] - }, - { - "teal": 2964, - "source": 761, - "pc": [ - 3019, - 3020 - ] - }, - { - "teal": 2965, - "source": 760, - "pc": [ - 3021, - 3022 - ] - }, - { - "teal": 2966, - "source": 760, - "pc": [ - 3023, - 3024 - ] - }, - { - "teal": 2967, - "source": 760, - "pc": [ - 3025 - ] - }, - { - "teal": 2968, - "source": 760, - "pc": [ - 3026, - 3027 - ] - }, - { - "teal": 2969, - "source": 760, - "pc": [ - 3028 - ] - }, - { - "teal": 2970, - "source": 760, - "pc": [ - 3029, - 3030 - ] - }, - { - "teal": 2971, - "source": 760, - "pc": [ - 3031 - ] - }, - { - "teal": 2972, - "source": 760, - "pc": [ - 3032 - ] - }, - { - "teal": 2973, - "source": 762, - "pc": [ - 3033, - 3034 - ] - }, - { - "teal": 2974, - "source": 762, - "pc": [ - 3035 - ] - }, - { - "teal": 2975, - "source": 762, - "pc": [ - 3036, - 3037 - ] - }, - { - "teal": 2976, - "source": 760, - "pc": [ - 3038 - ] - }, - { - "teal": 2977, - "source": 760, - "pc": [ - 3039 - ] - }, - { - "teal": 2978, - "source": 760, - "pc": [ - 3040 - ] - }, - { - "teal": 2979, - "source": 760, - "pc": [ - 3041 - ] - }, - { - "teal": 2980, - "source": 760, - "pc": [ - 3042 - ] - }, - { - "teal": 2981, - "source": 760, - "pc": [ - 3043 - ] - }, - { - "teal": 2984, - "source": 760, - "errorMessage": "wideRatio failed", - "pc": [ - 3044 - ] - }, - { - "teal": 2985, - "source": 760, - "pc": [ - 3045, - 3046 - ] - }, - { - "teal": 2989, - "source": 767, - "pc": [ - 3047, - 3048 - ] - }, - { - "teal": 2990, - "source": 767, - "pc": [ - 3049, - 3050 - ] - }, - { - "teal": 2991, - "source": 767, - "pc": [ - 3051 - ] - }, - { - "teal": 2992, - "source": 767, - "pc": [ - 3052, - 3053 - ] - }, - { - "teal": 2996, - "source": 768, - "pc": [ - 3054, - 3055 - ] - }, - { - "teal": 2997, - "source": 768, - "pc": [ - 3056, - 3057 - ] - }, - { - "teal": 2998, - "source": 768, - "pc": [ - 3058, - 3059 - ] - }, - { - "teal": 2999, - "source": 768, - "pc": [ - 3060, - 3061, - 3062 - ] - }, - { - "teal": 3000, - "source": 768, - "pc": [ - 3063 - ] - }, - { - "teal": 3001, - "source": 768, - "pc": [ - 3064, - 3065 - ] - }, - { - "teal": 3002, - "source": 768, - "pc": [ - 3066 - ] - }, - { - "teal": 3003, - "source": 768, - "pc": [ - 3067 - ] - }, - { - "teal": 3004, - "source": 768, - "pc": [ - 3068 - ] - }, - { - "teal": 3005, - "source": 768, - "pc": [ - 3069, - 3070 - ] - }, - { - "teal": 3009, - "source": 769, - "pc": [ - 3071, - 3072 - ] - }, - { - "teal": 3010, - "source": 769, - "pc": [ - 3073, - 3074 - ] - }, - { - "teal": 3011, - "source": 769, - "pc": [ - 3075 - ] - }, - { - "teal": 3012, - "source": 769, - "pc": [ - 3076, - 3077 - ] - }, - { - "teal": 3020, - "source": 773, - "pc": [ - 3078, - 3079 - ] - }, - { - "teal": 3021, - "source": 773, - "pc": [ - 3080, - 3081, - 3082 - ] - }, - { - "teal": 3022, - "source": 773, - "pc": [ - 3083 - ] - }, - { - "teal": 3023, - "source": 773, - "pc": [ - 3084, - 3085 - ] - }, - { - "teal": 3024, - "source": 772, - "pc": [ - 3086 - ] - }, - { - "teal": 3025, - "source": 773, - "pc": [ - 3087, - 3088 - ] - }, - { - "teal": 3026, - "source": 772, - "pc": [ - 3089, - 3090 - ] - }, - { - "teal": 3027, - "source": 772, - "pc": [ - 3091, - 3092 - ] - }, - { - "teal": 3028, - "source": 772, - "pc": [ - 3093 - ] - }, - { - "teal": 3029, - "source": 772, - "pc": [ - 3094, - 3095 - ] - }, - { - "teal": 3030, - "source": 772, - "pc": [ - 3096 - ] - }, - { - "teal": 3031, - "source": 772, - "pc": [ - 3097, - 3098 - ] - }, - { - "teal": 3032, - "source": 772, - "pc": [ - 3099 - ] - }, - { - "teal": 3033, - "source": 772, - "pc": [ - 3100 - ] - }, - { - "teal": 3034, - "source": 774, - "pc": [ - 3101, - 3102 - ] - }, - { - "teal": 3035, - "source": 774, - "pc": [ - 3103 - ] - }, - { - "teal": 3036, - "source": 774, - "pc": [ - 3104, - 3105 - ] - }, - { - "teal": 3037, - "source": 772, - "pc": [ - 3106 - ] - }, - { - "teal": 3038, - "source": 772, - "pc": [ - 3107 - ] - }, - { - "teal": 3039, - "source": 772, - "pc": [ - 3108 - ] - }, - { - "teal": 3040, - "source": 772, - "pc": [ - 3109 - ] - }, - { - "teal": 3041, - "source": 772, - "pc": [ - 3110 - ] - }, - { - "teal": 3042, - "source": 772, - "pc": [ - 3111 - ] - }, - { - "teal": 3045, - "source": 772, - "errorMessage": "wideRatio failed", - "pc": [ - 3112 - ] - }, - { - "teal": 3046, - "source": 772, - "pc": [ - 3113, - 3114 - ] - }, - { - "teal": 3050, - "source": 778, - "pc": [ - 3115, - 3116 - ] - }, - { - "teal": 3051, - "source": 778, - "pc": [ - 3117, - 3118 - ] - }, - { - "teal": 3052, - "source": 778, - "pc": [ - 3119 - ] - }, - { - "teal": 3053, - "source": 778, - "pc": [ - 3120, - 3121 - ] - }, - { - "teal": 3057, - "source": 781, - "pc": [ - 3122, - 3123 - ] - }, - { - "teal": 3058, - "source": 781, - "pc": [ - 3124, - 3125 - ] - }, - { - "teal": 3059, - "source": 781, - "pc": [ - 3126, - 3127 - ] - }, - { - "teal": 3060, - "source": 781, - "pc": [ - 3128, - 3129, - 3130 - ] - }, - { - "teal": 3061, - "source": 781, - "pc": [ - 3131 - ] - }, - { - "teal": 3062, - "source": 781, - "pc": [ - 3132, - 3133 - ] - }, - { - "teal": 3063, - "source": 781, - "pc": [ - 3134 - ] - }, - { - "teal": 3064, - "source": 781, - "pc": [ - 3135 - ] - }, - { - "teal": 3065, - "source": 781, - "pc": [ - 3136 - ] - }, - { - "teal": 3066, - "source": 781, - "pc": [ - 3137, - 3138 - ] - }, - { - "teal": 3070, - "source": 782, - "pc": [ - 3139, - 3140 - ] - }, - { - "teal": 3071, - "source": 782, - "pc": [ - 3141, - 3142 - ] - }, - { - "teal": 3072, - "source": 782, - "pc": [ - 3143, - 3144 - ] - }, - { - "teal": 3073, - "source": 782, - "pc": [ - 3145, - 3146, - 3147 - ] - }, - { - "teal": 3074, - "source": 782, - "pc": [ - 3148 - ] - }, - { - "teal": 3075, - "source": 782, - "pc": [ - 3149, - 3150 - ] - }, - { - "teal": 3076, - "source": 782, - "pc": [ - 3151 - ] - }, - { - "teal": 3077, - "source": 782, - "pc": [ - 3152 - ] - }, - { - "teal": 3078, - "source": 782, - "pc": [ - 3153 - ] - }, - { - "teal": 3079, - "source": 782, - "pc": [ - 3154, - 3155 - ] - }, - { - "teal": 3083, - "source": 783, - "pc": [ - 3156, - 3157 - ] - }, - { - "teal": 3084, - "source": 783, - "pc": [ - 3158, - 3159 - ] - }, - { - "teal": 3085, - "source": 783, - "pc": [ - 3160 - ] - }, - { - "teal": 3086, - "source": 783, - "pc": [ - 3161, - 3162 - ] - }, - { - "teal": 3090, - "source": 785, - "pc": [ - 3163, - 3164 - ] - }, - { - "teal": 3091, - "source": 785, - "pc": [ - 3165 - ] - }, - { - "teal": 3092, - "source": 785, - "pc": [ - 3166 - ] - }, - { - "teal": 3093, - "source": 785, - "pc": [ - 3167, - 3168 - ] - }, - { - "teal": 3094, - "source": 785, - "pc": [ - 3169 - ] - }, - { - "teal": 3095, - "source": 785, - "pc": [ - 3170, - 3171 - ] - }, - { - "teal": 3096, - "source": 785, - "pc": [ - 3172 - ] - }, - { - "teal": 3107, - "source": 737, - "pc": [ - 3173, - 3174 - ] - }, - { - "teal": 3108, - "source": 737, - "pc": [ - 3175 - ] - }, - { - "teal": 3109, - "source": 737, - "pc": [ - 3176 - ] - }, - { - "teal": 3110, - "source": 737, - "pc": [ - 3177, - 3178 - ] - }, - { - "teal": 3111, - "source": 737, - "pc": [ - 3179, - 3180, - 3181 - ] - }, - { - "teal": 3116, - "source": 793, - "pc": [ - 3182, - 3183 - ] - }, - { - "teal": 3117, - "source": 793, - "pc": [ - 3184 - ] - }, - { - "teal": 3118, - "source": 793, - "pc": [ - 3185, - 3186 - ] - }, - { - "teal": 3119, - "source": 793, - "pc": [ - 3187 - ] - }, - { - "teal": 3120, - "source": 793, - "pc": [ - 3188, - 3189 - ] - }, - { - "teal": 3125, - "source": 797, - "pc": [ - 3190, - 3191 - ] - }, - { - "teal": 3126, - "source": 797, - "pc": [ - 3192 - ] - }, - { - "teal": 3127, - "source": 797, - "pc": [ - 3193 - ] - }, - { - "teal": 3128, - "source": 797, - "pc": [ - 3194, - 3195, - 3196 - ] - }, - { - "teal": 3133, - "source": 799, - "pc": [ - 3197 - ] - }, - { - "teal": 3134, - "source": 799, - "pc": [ - 3198, - 3199 - ] - }, - { - "teal": 3139, - "source": 799, - "pc": [ - 3200, - 3201 - ] - }, - { - "teal": 3140, - "source": 799, - "pc": [ - 3202, - 3203 - ] - }, - { - "teal": 3141, - "source": 799, - "pc": [ - 3204 - ] - }, - { - "teal": 3142, - "source": 799, - "pc": [ - 3205, - 3206, - 3207 - ] - }, - { - "teal": 3147, - "source": 800, - "pc": [ - 3208, - 3209 - ] - }, - { - "teal": 3148, - "source": 800, - "pc": [ - 3210, - 3211 - ] - }, - { - "teal": 3149, - "source": 800, - "pc": [ - 3212 - ] - }, - { - "teal": 3150, - "source": 800, - "pc": [ - 3213, - 3214, - 3215 - ] - }, - { - "teal": 3155, - "source": 801, - "pc": [ - 3216 - ] - }, - { - "teal": 3156, - "source": 801, - "pc": [ - 3217 - ] - }, - { - "teal": 3157, - "source": 801, - "pc": [ - 3218, - 3219 - ] - }, - { - "teal": 3158, - "source": 801, - "pc": [ - 3220 - ] - }, - { - "teal": 3159, - "source": 801, - "pc": [ - 3221, - 3222 - ] - }, - { - "teal": 3160, - "source": 801, - "pc": [ - 3223, - 3224 - ] - }, - { - "teal": 3161, - "source": 801, - "pc": [ - 3225 - ] - }, - { - "teal": 3162, - "source": 801, - "pc": [ - 3226, - 3227 - ] - }, - { - "teal": 3163, - "source": 801, - "pc": [ - 3228, - 3229 - ] - }, - { - "teal": 3164, - "source": 801, - "pc": [ - 3230, - 3231 - ] - }, - { - "teal": 3165, - "source": 801, - "pc": [ - 3232, - 3233 - ] - }, - { - "teal": 3166, - "source": 801, - "pc": [ - 3234 - ] - }, - { - "teal": 3171, - "source": 803, - "pc": [ - 3235, - 3236 - ] - }, - { - "teal": 3172, - "source": 803, - "pc": [ - 3237 - ] - }, - { - "teal": 3173, - "source": 803, - "pc": [ - 3238 - ] - }, - { - "teal": 3174, - "source": 803, - "pc": [ - 3239 - ] - }, - { - "teal": 3175, - "source": 803, - "pc": [ - 3240 - ] - }, - { - "teal": 3176, - "source": 803, - "pc": [ - 3241, - 3242 - ] - }, - { - "teal": 3177, - "source": 803, - "pc": [ - 3243 - ] - }, - { - "teal": 3178, - "source": 803, - "pc": [ - 3244, - 3245 - ] - }, - { - "teal": 3183, - "source": 804, - "pc": [ - 3246, - 3247 - ] - }, - { - "teal": 3184, - "source": 804, - "pc": [ - 3248, - 3249, - 3250 - ] - }, - { - "teal": 3185, - "source": 804, - "pc": [ - 3251, - 3252 - ] - }, - { - "teal": 3186, - "source": 804, - "pc": [ - 3253 - ] - }, - { - "teal": 3187, - "source": 804, - "pc": [ - 3254 - ] - }, - { - "teal": 3188, - "source": 804, - "pc": [ - 3255, - 3256, - 3257 - ] - }, - { - "teal": 3189, - "source": 804, - "pc": [ - 3258, - 3259 - ] - }, - { - "teal": 3190, - "source": 804, - "pc": [ - 3260, - 3261, - 3262 - ] - }, - { - "teal": 3191, - "source": 804, - "pc": [ - 3263 - ] - }, - { - "teal": 3192, - "source": 804, - "pc": [ - 3264, - 3265 - ] - }, - { - "teal": 3193, - "source": 804, - "pc": [ - 3266 - ] - }, - { - "teal": 3194, - "source": 804, - "pc": [ - 3267 - ] - }, - { - "teal": 3197, - "source": 804, - "pc": [ - 3268, - 3269, - 3270 - ] - }, - { - "teal": 3202, - "source": 805, - "pc": [ - 3271, - 3272 - ] - }, - { - "teal": 3203, - "source": 805, - "pc": [ - 3273, - 3274 - ] - }, - { - "teal": 3204, - "source": 805, - "pc": [ - 3275, - 3276, - 3277 - ] - }, - { - "teal": 3205, - "source": 805, - "pc": [ - 3278 - ] - }, - { - "teal": 3206, - "source": 805, - "pc": [ - 3279 - ] - }, - { - "teal": 3207, - "source": 805, - "pc": [ - 3280, - 3281 - ] - }, - { - "teal": 3212, - "source": 807, - "pc": [ - 3282, - 3283 - ] - }, - { - "teal": 3213, - "source": 807, - "pc": [ - 3284, - 3285 - ] - }, - { - "teal": 3214, - "source": 807, - "pc": [ - 3286 - ] - }, - { - "teal": 3215, - "source": 807, - "pc": [ - 3287, - 3288, - 3289 - ] - }, - { - "teal": 3221, - "source": 812, - "pc": [ - 3290, - 3291 - ] - }, - { - "teal": 3222, - "source": 812, - "pc": [ - 3292 - ] - }, - { - "teal": 3223, - "source": 812, - "pc": [ - 3293 - ] - }, - { - "teal": 3224, - "source": 812, - "pc": [ - 3294, - 3295, - 3296 - ] - }, - { - "teal": 3232, - "source": 814, - "pc": [ - 3297, - 3298 - ] - }, - { - "teal": 3233, - "source": 814, - "pc": [ - 3299, - 3300, - 3301 - ] - }, - { - "teal": 3234, - "source": 814, - "pc": [ - 3302 - ] - }, - { - "teal": 3235, - "source": 814, - "pc": [ - 3303, - 3304 - ] - }, - { - "teal": 3236, - "source": 813, - "pc": [ - 3305 - ] - }, - { - "teal": 3237, - "source": 813, - "pc": [ - 3306 - ] - }, - { - "teal": 3238, - "source": 815, - "pc": [ - 3307, - 3308 - ] - }, - { - "teal": 3239, - "source": 813, - "pc": [ - 3309 - ] - }, - { - "teal": 3240, - "source": 813, - "pc": [ - 3310 - ] - }, - { - "teal": 3241, - "source": 813, - "pc": [ - 3311 - ] - }, - { - "teal": 3242, - "source": 813, - "pc": [ - 3312 - ] - }, - { - "teal": 3243, - "source": 813, - "pc": [ - 3313 - ] - }, - { - "teal": 3246, - "source": 813, - "errorMessage": "wideRatio failed", - "pc": [ - 3314 - ] - }, - { - "teal": 3247, - "source": 813, - "pc": [ - 3315, - 3316 - ] - }, - { - "teal": 3251, - "source": 818, - "pc": [ - 3317, - 3318 - ] - }, - { - "teal": 3252, - "source": 818, - "pc": [ - 3319, - 3320 - ] - }, - { - "teal": 3253, - "source": 818, - "pc": [ - 3321, - 3322 - ] - }, - { - "teal": 3254, - "source": 818, - "pc": [ - 3323, - 3324, - 3325 - ] - }, - { - "teal": 3255, - "source": 818, - "pc": [ - 3326 - ] - }, - { - "teal": 3256, - "source": 818, - "pc": [ - 3327, - 3328 - ] - }, - { - "teal": 3257, - "source": 818, - "pc": [ - 3329 - ] - }, - { - "teal": 3258, - "source": 818, - "pc": [ - 3330 - ] - }, - { - "teal": 3259, - "source": 818, - "pc": [ - 3331 - ] - }, - { - "teal": 3260, - "source": 818, - "pc": [ - 3332, - 3333 - ] - }, - { - "teal": 3264, - "source": 819, - "pc": [ - 3334, - 3335 - ] - }, - { - "teal": 3265, - "source": 819, - "pc": [ - 3336, - 3337 - ] - }, - { - "teal": 3266, - "source": 819, - "pc": [ - 3338 - ] - }, - { - "teal": 3267, - "source": 819, - "pc": [ - 3339, - 3340 - ] - }, - { - "teal": 3273, - "source": 821, - "pc": [ - 3341, - 3342 - ] - }, - { - "teal": 3274, - "source": 821, - "pc": [ - 3343 - ] - }, - { - "teal": 3275, - "source": 821, - "pc": [ - 3344 - ] - }, - { - "teal": 3276, - "source": 821, - "pc": [ - 3345, - 3346, - 3347 - ] - }, - { - "teal": 3284, - "source": 823, - "pc": [ - 3348, - 3349 - ] - }, - { - "teal": 3285, - "source": 823, - "pc": [ - 3350, - 3351, - 3352 - ] - }, - { - "teal": 3286, - "source": 823, - "pc": [ - 3353 - ] - }, - { - "teal": 3287, - "source": 823, - "pc": [ - 3354, - 3355 - ] - }, - { - "teal": 3288, - "source": 822, - "pc": [ - 3356 - ] - }, - { - "teal": 3289, - "source": 822, - "pc": [ - 3357 - ] - }, - { - "teal": 3290, - "source": 824, - "pc": [ - 3358, - 3359 - ] - }, - { - "teal": 3291, - "source": 822, - "pc": [ - 3360 - ] - }, - { - "teal": 3292, - "source": 822, - "pc": [ - 3361 - ] - }, - { - "teal": 3293, - "source": 822, - "pc": [ - 3362 - ] - }, - { - "teal": 3294, - "source": 822, - "pc": [ - 3363 - ] - }, - { - "teal": 3295, - "source": 822, - "pc": [ - 3364 - ] - }, - { - "teal": 3298, - "source": 822, - "errorMessage": "wideRatio failed", - "pc": [ - 3365 - ] - }, - { - "teal": 3299, - "source": 822, - "pc": [ - 3366, - 3367 - ] - }, - { - "teal": 3303, - "source": 828, - "pc": [ - 3368, - 3369 - ] - }, - { - "teal": 3304, - "source": 828, - "pc": [ - 3370, - 3371 - ] - }, - { - "teal": 3305, - "source": 828, - "pc": [ - 3372, - 3373 - ] - }, - { - "teal": 3306, - "source": 828, - "pc": [ - 3374, - 3375, - 3376 - ] - }, - { - "teal": 3307, - "source": 828, - "pc": [ - 3377 - ] - }, - { - "teal": 3308, - "source": 828, - "pc": [ - 3378, - 3379 - ] - }, - { - "teal": 3309, - "source": 828, - "pc": [ - 3380 - ] - }, - { - "teal": 3310, - "source": 828, - "pc": [ - 3381 - ] - }, - { - "teal": 3311, - "source": 828, - "pc": [ - 3382 - ] - }, - { - "teal": 3312, - "source": 828, - "pc": [ - 3383, - 3384 - ] - }, - { - "teal": 3316, - "source": 829, - "pc": [ - 3385, - 3386 - ] - }, - { - "teal": 3317, - "source": 829, - "pc": [ - 3387, - 3388 - ] - }, - { - "teal": 3318, - "source": 829, - "pc": [ - 3389, - 3390 - ] - }, - { - "teal": 3319, - "source": 829, - "pc": [ - 3391, - 3392, - 3393 - ] - }, - { - "teal": 3320, - "source": 829, - "pc": [ - 3394 - ] - }, - { - "teal": 3321, - "source": 829, - "pc": [ - 3395, - 3396 - ] - }, - { - "teal": 3322, - "source": 829, - "pc": [ - 3397 - ] - }, - { - "teal": 3323, - "source": 829, - "pc": [ - 3398 - ] - }, - { - "teal": 3324, - "source": 829, - "pc": [ - 3399 - ] - }, - { - "teal": 3325, - "source": 829, - "pc": [ - 3400, - 3401 - ] - }, - { - "teal": 3329, - "source": 830, - "pc": [ - 3402, - 3403 - ] - }, - { - "teal": 3330, - "source": 830, - "pc": [ - 3404, - 3405 - ] - }, - { - "teal": 3331, - "source": 830, - "pc": [ - 3406 - ] - }, - { - "teal": 3332, - "source": 830, - "pc": [ - 3407, - 3408 - ] - }, - { - "teal": 3337, - "source": 834, - "pc": [ - 3409, - 3410 - ] - }, - { - "teal": 3338, - "source": 834, - "pc": [ - 3411 - ] - }, - { - "teal": 3339, - "source": 834, - "pc": [ - 3412 - ] - }, - { - "teal": 3340, - "source": 834, - "pc": [ - 3413, - 3414 - ] - }, - { - "teal": 3341, - "source": 834, - "pc": [ - 3415 - ] - }, - { - "teal": 3342, - "source": 834, - "pc": [ - 3416, - 3417 - ] - }, - { - "teal": 3343, - "source": 834, - "pc": [ - 3418 - ] - }, - { - "teal": 3352, - "source": 799, - "pc": [ - 3419, - 3420 - ] - }, - { - "teal": 3353, - "source": 799, - "pc": [ - 3421 - ] - }, - { - "teal": 3354, - "source": 799, - "pc": [ - 3422 - ] - }, - { - "teal": 3355, - "source": 799, - "pc": [ - 3423, - 3424 - ] - }, - { - "teal": 3356, - "source": 799, - "pc": [ - 3425, - 3426, - 3427 - ] - }, - { - "teal": 3365, - "source": 844, - "pc": [ - 3428, - 3429 - ] - }, - { - "teal": 3366, - "source": 844, - "pc": [ - 3430 - ] - }, - { - "teal": 3367, - "source": 844, - "pc": [ - 3431, - 3432 - ] - }, - { - "teal": 3368, - "source": 844, - "pc": [ - 3433 - ] - }, - { - "teal": 3369, - "source": 844, - "pc": [ - 3434 - ] - }, - { - "teal": 3370, - "source": 844, - "pc": [ - 3435, - 3436 - ] - }, - { - "teal": 3371, - "source": 844, - "pc": [ - 3437 - ] - }, - { - "teal": 3372, - "source": 844, - "pc": [ - 3438, - 3439 - ] - }, - { - "teal": 3376, - "source": 845, - "pc": [ - 3440, - 3441 - ] - }, - { - "teal": 3377, - "source": 845, - "pc": [ - 3442 - ] - }, - { - "teal": 3378, - "source": 845, - "pc": [ - 3443, - 3444 - ] - }, - { - "teal": 3379, - "source": 845, - "pc": [ - 3445 - ] - }, - { - "teal": 3380, - "source": 845, - "pc": [ - 3446, - 3447 - ] - }, - { - "teal": 3381, - "source": 845, - "pc": [ - 3448 - ] - }, - { - "teal": 3382, - "source": 845, - "pc": [ - 3449 - ] - }, - { - "teal": 3387, - "source": 846, - "pc": [ - 3450, - 3451 - ] - }, - { - "teal": 3388, - "source": 846, - "pc": [ - 3452 - ] - }, - { - "teal": 3389, - "source": 847, - "pc": [ - 3453 - ] - }, - { - "teal": 3390, - "source": 847, - "pc": [ - 3454, - 3455 - ] - }, - { - "teal": 3391, - "source": 847, - "pc": [ - 3456 - ] - }, - { - "teal": 3392, - "source": 847, - "pc": [ - 3457, - 3458 - ] - }, - { - "teal": 3393, - "source": 847, - "pc": [ - 3459 - ] - }, - { - "teal": 3394, - "source": 847, - "pc": [ - 3460 - ] - }, - { - "teal": 3395, - "source": 847, - "pc": [ - 3461 - ] - }, - { - "teal": 3396, - "source": 847, - "pc": [ - 3462 - ] - }, - { - "teal": 3397, - "source": 847, - "pc": [ - 3463 - ] - }, - { - "teal": 3398, - "source": 847, - "pc": [ - 3464, - 3465 - ] - }, - { - "teal": 3399, - "source": 847, - "pc": [ - 3466 - ] - }, - { - "teal": 3402, - "source": 847, - "errorMessage": "this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", - "pc": [ - 3467 - ] - }, - { - "teal": 3403, - "source": 847, - "pc": [ - 3468, - 3469 - ] - }, - { - "teal": 3404, - "source": 847, - "pc": [ - 3470 - ] - }, - { - "teal": 3405, - "source": 847, - "pc": [ - 3471 - ] - }, - { - "teal": 3406, - "source": 847, - "pc": [ - 3472 - ] - }, - { - "teal": 3407, - "source": 847, - "pc": [ - 3473 - ] - }, - { - "teal": 3408, - "source": 847, - "pc": [ - 3474, - 3475 - ] - }, - { - "teal": 3409, - "source": 847, - "pc": [ - 3476 - ] - }, - { - "teal": 3410, - "source": 847, - "pc": [ - 3477 - ] - }, - { - "teal": 3411, - "source": 847, - "pc": [ - 3478 - ] - }, - { - "teal": 3412, - "source": 846, - "pc": [ - 3479 - ] - }, - { - "teal": 3416, - "source": 848, - "pc": [ - 3480, - 3481 - ] - }, - { - "teal": 3417, - "source": 848, - "pc": [ - 3482 - ] - }, - { - "teal": 3418, - "source": 848, - "pc": [ - 3483 - ] - }, - { - "teal": 3419, - "source": 848, - "pc": [ - 3484, - 3485 - ] - }, - { - "teal": 3420, - "source": 848, - "pc": [ - 3486 - ] - }, - { - "teal": 3421, - "source": 848, - "pc": [ - 3487 - ] - }, - { - "teal": 3434, - "source": 854, - "pc": [ - 3488 - ] - }, - { - "teal": 3435, - "source": 854, - "pc": [ - 3489 - ] - }, - { - "teal": 3436, - "source": 854, - "pc": [ - 3490, - 3491 - ] - }, - { - "teal": 3437, - "source": 854, - "pc": [ - 3492, - 3493, - 3494, - 3495, - 3496, - 3497 - ] - }, - { - "teal": 3438, - "source": 854, - "pc": [ - 3498, - 3499 - ] - }, - { - "teal": 3442, - "source": 855, - "pc": [ - 3500 - ] - }, - { - "teal": 3443, - "source": 855, - "pc": [ - 3501 - ] - }, - { - "teal": 3444, - "source": 855, - "pc": [ - 3502, - 3503 - ] - }, - { - "teal": 3454, - "source": 857, - "pc": [ - 3504 - ] - }, - { - "teal": 3455, - "source": 857, - "pc": [ - 3505 - ] - }, - { - "teal": 3456, - "source": 857, - "pc": [ - 3506 - ] - }, - { - "teal": 3457, - "source": 857, - "pc": [ - 3507 - ] - }, - { - "teal": 3458, - "source": 857, - "pc": [ - 3508 - ] - }, - { - "teal": 3459, - "source": 857, - "pc": [ - 3509 - ] - }, - { - "teal": 3460, - "source": 857, - "pc": [ - 3510 - ] - }, - { - "teal": 3461, - "source": 857, - "pc": [ - 3511, - 3512, - 3513 - ] - }, - { - "teal": 3462, - "source": 857, - "pc": [ - 3514 - ] - }, - { - "teal": 3463, - "source": 857, - "pc": [ - 3515 - ] - }, - { - "teal": 3464, - "source": 857, - "pc": [ - 3516, - 3517 - ] - }, - { - "teal": 3465, - "source": 858, - "pc": [ - 3518, - 3519 - ] - }, - { - "teal": 3466, - "source": 858, - "pc": [ - 3520 - ] - }, - { - "teal": 3467, - "source": 858, - "pc": [ - 3521, - 3522 - ] - }, - { - "teal": 3468, - "source": 859, - "pc": [ - 3523, - 3524 - ] - }, - { - "teal": 3469, - "source": 859, - "pc": [ - 3525 - ] - }, - { - "teal": 3470, - "source": 859, - "pc": [ - 3526, - 3527 - ] - }, - { - "teal": 3471, - "source": 860, - "pc": [ - 3528, - 3529 - ] - }, - { - "teal": 3472, - "source": 860, - "pc": [ - 3530 - ] - }, - { - "teal": 3473, - "source": 860, - "pc": [ - 3531, - 3532 - ] - }, - { - "teal": 3474, - "source": 861, - "pc": [ - 3533, - 3534 - ] - }, - { - "teal": 3475, - "source": 861, - "pc": [ - 3535 - ] - }, - { - "teal": 3476, - "source": 861, - "pc": [ - 3536, - 3537 - ] - }, - { - "teal": 3479, - "source": 854, - "pc": [ - 3538 - ] - }, - { - "teal": 3480, - "source": 854, - "pc": [ - 3539, - 3540 - ] - }, - { - "teal": 3483, - "source": 854, - "pc": [ - 3541 - ] - }, - { - "teal": 3484, - "source": 512, - "pc": [ - 3542 - ] - }, - { - "teal": 3489, - "source": 886, - "pc": [ - 3543, - 3544, - 3545 - ] - }, - { - "teal": 3490, - "source": 886, - "pc": [ - 3546 - ] - }, - { - "teal": 3493, - "source": 885, - "pc": [ - 3547, - 3548, - 3549 - ] - }, - { - "teal": 3494, - "source": 885, - "pc": [ - 3550 - ] - }, - { - "teal": 3497, - "source": 884, - "pc": [ - 3551, - 3552, - 3553 - ] - }, - { - "teal": 3498, - "source": 884, - "pc": [ - 3554 - ] - }, - { - "teal": 3501, - "source": 883, - "pc": [ - 3555, - 3556, - 3557 - ] - }, - { - "teal": 3502, - "source": 883, - "pc": [ - 3558, - 3559, - 3560 - ] - }, - { - "teal": 3505, - "source": 882, - "pc": [ - 3561, - 3562, - 3563 - ] - }, - { - "teal": 3506, - "source": 882, - "pc": [ - 3564, - 3565, - 3566 - ] - }, - { - "teal": 3509, - "source": 881, - "pc": [ - 3567, - 3568, - 3569 - ] - }, - { - "teal": 3510, - "source": 881, - "pc": [ - 3570, - 3571, - 3572 - ] - }, - { - "teal": 3513, - "source": 880, - "pc": [ - 3573, - 3574 - ] - }, - { - "teal": 3514, - "source": 880, - "pc": [ - 3575 - ] - }, - { - "teal": 3515, - "source": 880, - "pc": [ - 3576 - ] - }, - { - "teal": 3516, - "source": 880, - "pc": [ - 3577 - ] - }, - { - "teal": 3517, - "source": 880, - "pc": [ - 3578, - 3579 - ] - }, - { - "teal": 3518, - "source": 880, - "pc": [ - 3580 - ] - }, - { - "teal": 3519, - "source": 880, - "pc": [ - 3581 - ] - }, - { - "teal": 3522, - "source": 880, - "errorMessage": "argument 6 (feePayment) for goOnline must be a pay transaction", - "pc": [ - 3582 - ] - }, - { - "teal": 3525, - "source": 879, - "pc": [ - 3583, - 3584, - 3585 - ] - }, - { - "teal": 3526, - "source": 879, - "pc": [ - 3586 - ] - }, - { - "teal": 3527, - "source": 879, - "pc": [ - 3587 - ] - }, - { - "teal": 3543, - "source": 879, - "pc": [ - 3588, - 3589, - 3590 - ] - }, - { - "teal": 3546, - "source": 879, - "pc": [ - 3591, - 3592 - ] - }, - { - "teal": 3550, - "source": 888, - "pc": [ - 3593, - 3594, - 3595 - ] - }, - { - "teal": 3553, - "source": 888, - "errorMessage": "can only be called by owner or manager of validator", - "pc": [ - 3596 - ] - }, - { - "teal": 3557, - "source": 889, - "pc": [ - 3597, - 3598, - 3599 - ] - }, - { - "teal": 3558, - "source": 889, - "pc": [ - 3600, - 3601 - ] - }, - { - "teal": 3563, - "source": 890, - "pc": [ - 3602, - 3603 - ] - }, - { - "teal": 3564, - "source": 890, - "pc": [ - 3604, - 3605 - ] - }, - { - "teal": 3565, - "source": 890, - "pc": [ - 3606, - 3607 - ] - }, - { - "teal": 3566, - "source": 890, - "pc": [ - 3608 - ] - }, - { - "teal": 3569, - "source": 890, - "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 3609 - ] - }, - { - "teal": 3572, - "source": 890, - "pc": [ - 3610, - 3611 - ] - }, - { - "teal": 3573, - "source": 890, - "pc": [ - 3612, - 3613 - ] - }, - { - "teal": 3574, - "source": 890, - "pc": [ - 3614, - 3615 - ] - }, - { - "teal": 3575, - "source": 890, - "pc": [ - 3616 - ] - }, - { - "teal": 3578, - "source": 890, - "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}", - "pc": [ - 3617 - ] - }, - { - "teal": 3590, - "source": 891, - "pc": [ - 3618 - ] - }, - { - "teal": 3591, - "source": 891, - "pc": [ - 3619, - 3620 - ] - }, - { - "teal": 3592, - "source": 891, - "pc": [ - 3621, - 3622 - ] - }, - { - "teal": 3596, - "source": 892, - "pc": [ - 3623, - 3624 - ] - }, - { - "teal": 3597, - "source": 892, - "pc": [ - 3625, - 3626 - ] - }, - { - "teal": 3601, - "source": 893, - "pc": [ - 3627, - 3628 - ] - }, - { - "teal": 3602, - "source": 893, - "pc": [ - 3629, - 3630 - ] - }, - { - "teal": 3606, - "source": 894, - "pc": [ - 3631, - 3632 - ] - }, - { - "teal": 3607, - "source": 894, - "pc": [ - 3633, - 3634 - ] - }, - { - "teal": 3611, - "source": 895, - "pc": [ - 3635, - 3636 - ] - }, - { - "teal": 3612, - "source": 895, - "pc": [ - 3637, - 3638 - ] - }, - { - "teal": 3616, - "source": 896, - "pc": [ - 3639, - 3640 - ] - }, - { - "teal": 3617, - "source": 896, - "pc": [ - 3641, - 3642 - ] - }, - { - "teal": 3621, - "source": 897, - "pc": [ - 3643, - 3644 - ] - }, - { - "teal": 3622, - "source": 897, - "pc": [ - 3645, - 3646 - ] - }, - { - "teal": 3626, - "source": 898, - "pc": [ - 3647, - 3648 - ] - }, - { - "teal": 3627, - "source": 898, - "pc": [ - 3649, - 3650 - ] - }, - { - "teal": 3630, - "source": 891, - "pc": [ - 3651 - ] - }, - { - "teal": 3631, - "source": 879, - "pc": [ - 3652 - ] - }, - { - "teal": 3636, - "source": 907, - "pc": [ - 3653, - 3654, - 3655 - ] - }, - { - "teal": 3637, - "source": 907, - "pc": [ - 3656 - ] - }, - { - "teal": 3638, - "source": 907, - "pc": [ - 3657 - ] - }, - { - "teal": 3645, - "source": 907, - "pc": [ - 3658, - 3659, - 3660 - ] - }, - { - "teal": 3650, - "source": 910, - "pc": [ - 3661, - 3662 - ] - }, - { - "teal": 3651, - "source": 910, - "pc": [ - 3663 - ] - }, - { - "teal": 3652, - "source": 910, - "pc": [ - 3664 - ] - }, - { - "teal": 3653, - "source": 910, - "pc": [ - 3665, - 3666 - ] - }, - { - "teal": 3654, - "source": 910, - "pc": [ - 3667 - ] - }, - { - "teal": 3655, - "source": 910, - "pc": [ - 3668 - ] - }, - { - "teal": 3656, - "source": 910, - "pc": [ - 3669, - 3670, - 3671 - ] - }, - { - "teal": 3661, - "source": 911, - "pc": [ - 3672, - 3673, - 3674 - ] - }, - { - "teal": 3664, - "source": 911, - "errorMessage": "can only be called by owner or manager of validator", - "pc": [ - 3675 - ] - }, - { - "teal": 3669, - "source": 914, - "pc": [ - 3676 - ] - }, - { - "teal": 3670, - "source": 914, - "pc": [ - 3677, - 3678 - ] - }, - { - "teal": 3671, - "source": 914, - "pc": [ - 3679, - 3680 - ] - }, - { - "teal": 3674, - "source": 914, - "pc": [ - 3681 - ] - }, - { - "teal": 3675, - "source": 914, - "pc": [ - 3682, - 3683 - ] - }, - { - "teal": 3678, - "source": 914, - "pc": [ - 3684 - ] - }, - { - "teal": 3679, - "source": 907, - "pc": [ - 3685 - ] - }, - { - "teal": 3684, - "source": 920, - "pc": [ - 3686, - 3687, - 3688 - ] - }, - { - "teal": 3685, - "source": 920, - "pc": [ - 3689, - 3690, - 3691 - ] - }, - { - "teal": 3688, - "source": 920, - "pc": [ - 3692, - 3693, - 3694 - ] - }, - { - "teal": 3689, - "source": 920, - "pc": [ - 3695 - ] - }, - { - "teal": 3692, - "source": 920, - "pc": [ - 3696, - 3697, - 3698 - ] - }, - { - "teal": 3693, - "source": 920, - "pc": [ - 3699 - ] - }, - { - "teal": 3694, - "source": 920, - "pc": [ - 3700 - ] - }, - { - "teal": 3698, - "source": 920, - "pc": [ - 3701, - 3702, - 3703 - ] - }, - { - "teal": 3702, - "source": 921, - "pc": [ - 3704, - 3705, - 3706 - ] - }, - { - "teal": 3705, - "source": 921, - "errorMessage": "can only be called by owner or manager of validator", - "pc": [ - 3707 - ] - }, - { - "teal": 3713, - "source": 923, - "pc": [ - 3708 - ] - }, - { - "teal": 3714, - "source": 923, - "pc": [ - 3709 - ] - }, - { - "teal": 3715, - "source": 923, - "pc": [ - 3710, - 3711 - ] - }, - { - "teal": 3719, - "source": 924, - "pc": [ - 3712, - 3713 - ] - }, - { - "teal": 3720, - "source": 924, - "pc": [ - 3714, - 3715 - ] - }, - { - "teal": 3724, - "source": 925, - "pc": [ - 3716, - 3717, - 3718, - 3719, - 3720, - 3721, - 3722, - 3723, - 3724, - 3725, - 3726, - 3727, - 3728, - 3729, - 3730, - 3731, - 3732 - ] - }, - { - "teal": 3725, - "source": 925, - "pc": [ - 3733, - 3734 - ] - }, - { - "teal": 3726, - "source": 925, - "pc": [ - 3735, - 3736 - ] - }, - { - "teal": 3727, - "source": 925, - "pc": [ - 3737, - 3738 - ] - }, - { - "teal": 3728, - "source": 925, - "pc": [ - 3739, - 3740 - ] - }, - { - "teal": 3729, - "source": 925, - "pc": [ - 3741 - ] - }, - { - "teal": 3730, - "source": 925, - "pc": [ - 3742, - 3743 - ] - }, - { - "teal": 3731, - "source": 925, - "pc": [ - 3744, - 3745 - ] - }, - { - "teal": 3732, - "source": 925, - "pc": [ - 3746, - 3747 - ] - }, - { - "teal": 3736, - "source": 926, - "pc": [ - 3748, - 3749 - ] - }, - { - "teal": 3737, - "source": 926, - "pc": [ - 3750, - 3751 - ] - }, - { - "teal": 3740, - "source": 923, - "pc": [ - 3752 - ] - }, - { - "teal": 3741, - "source": 923, - "pc": [ - 3753, - 3754 - ] - }, - { - "teal": 3744, - "source": 923, - "pc": [ - 3755 - ] - }, - { - "teal": 3745, - "source": 920, - "pc": [ - 3756 - ] - }, - { - "teal": 3750, - "source": 936, - "pc": [ - 3757, - 3758 - ] - }, - { - "teal": 3753, - "source": 936, - "pc": [ - 3759, - 3760, - 3761 - ] - }, - { - "teal": 3754, - "source": 936, - "pc": [ - 3762 - ] - }, - { - "teal": 3755, - "source": 936, - "pc": [ - 3763 - ] - }, - { - "teal": 3756, - "source": 936, - "pc": [ - 3764, - 3765 - ] - }, - { - "teal": 3757, - "source": 936, - "pc": [ - 3766 - ] - }, - { - "teal": 3760, - "source": 936, - "errorMessage": "argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)", - "pc": [ - 3767 - ] - }, - { - "teal": 3763, - "source": 936, - "pc": [ - 3768, - 3769, - 3770 - ] - }, - { - "teal": 3764, - "source": 936, - "pc": [ - 3771 - ] - }, - { - "teal": 3765, - "source": 936, - "pc": [ - 3772 - ] - }, - { - "teal": 3766, - "source": 936, - "pc": [ - 3773 - ] - }, - { - "teal": 3767, - "source": 936, - "pc": [ - 3774 - ] - }, - { - "teal": 3776, - "source": 936, - "pc": [ - 3775, - 3776, - 3777 - ] - }, - { - "teal": 3779, - "source": 936, - "pc": [ - 3778, - 3779 - ] - }, - { - "teal": 3783, - "source": 937, - "pc": [ - 3780 - ] - }, - { - "teal": 3784, - "source": 937, - "pc": [ - 3781 - ] - }, - { - "teal": 3785, - "source": 937, - "pc": [ - 3782, - 3783 - ] - }, - { - "teal": 3786, - "source": 937, - "pc": [ - 3784, - 3785, - 3786 - ] - }, - { - "teal": 3787, - "source": 937, - "pc": [ - 3787 - ] - }, - { - "teal": 3788, - "source": 937, - "pc": [ - 3788 - ] - }, - { - "teal": 3791, - "source": 937, - "errorMessage": "caller must be part of same validator set!", - "pc": [ - 3789 - ] - }, - { - "teal": 3795, - "source": 938, - "pc": [ - 3790 - ] - }, - { - "teal": 3796, - "source": 938, - "pc": [ - 3791 - ] - }, - { - "teal": 3797, - "source": 938, - "pc": [ - 3792 - ] - }, - { - "teal": 3798, - "source": 938, - "pc": [ - 3793 - ] - }, - { - "teal": 3801, - "source": 938, - "errorMessage": "callee must be pool 1", - "pc": [ - 3794 - ] - }, - { - "teal": 3805, - "source": 939, - "pc": [ - 3795, - 3796 - ] - }, - { - "teal": 3806, - "source": 939, - "pc": [ - 3797, - 3798, - 3799 - ] - }, - { - "teal": 3807, - "source": 939, - "pc": [ - 3800 - ] - }, - { - "teal": 3808, - "source": 939, - "pc": [ - 3801 - ] - }, - { - "teal": 3809, - "source": 939, - "pc": [ - 3802 - ] - }, - { - "teal": 3812, - "source": 939, - "errorMessage": "caller must NOT be pool 1", - "pc": [ - 3803 - ] - }, - { - "teal": 3819, - "source": 941, - "pc": [ - 3804 - ] - }, - { - "teal": 3820, - "source": 941, - "pc": [ - 3805 - ] - }, - { - "teal": 3821, - "source": 941, - "pc": [ - 3806, - 3807 - ] - }, - { - "teal": 3822, - "source": 941, - "pc": [ - 3808, - 3809 - ] - }, - { - "teal": 3823, - "source": 941, - "pc": [ - 3810, - 3811 - ] - }, - { - "teal": 3827, - "source": 942, - "pc": [ - 3812 - ] - }, - { - "teal": 3828, - "source": 942, - "pc": [ - 3813 - ] - }, - { - "teal": 3829, - "source": 942, - "pc": [ - 3814, - 3815 - ] - }, - { - "teal": 3833, - "source": 943, - "pc": [ - 3816, - 3817 - ] - }, - { - "teal": 3834, - "source": 943, - "pc": [ - 3818, - 3819, - 3820 - ] - }, - { - "teal": 3835, - "source": 943, - "pc": [ - 3821 - ] - }, - { - "teal": 3836, - "source": 943, - "pc": [ - 3822 - ] - }, - { - "teal": 3837, - "source": 943, - "pc": [ - 3823, - 3824 - ] - }, - { - "teal": 3838, - "source": 943, - "pc": [ - 3825, - 3826 - ] - }, - { - "teal": 3839, - "source": 943, - "pc": [ - 3827, - 3828, - 3829 - ] - }, - { - "teal": 3840, - "source": 943, - "pc": [ - 3830 - ] - }, - { - "teal": 3841, - "source": 943, - "pc": [ - 3831 - ] - }, - { - "teal": 3842, - "source": 943, - "pc": [ - 3832, - 3833 - ] - }, - { - "teal": 3845, - "source": 941, - "pc": [ - 3834 - ] - }, - { - "teal": 3846, - "source": 941, - "pc": [ - 3835, - 3836 - ] - }, - { - "teal": 3849, - "source": 941, - "pc": [ - 3837 - ] - }, - { - "teal": 3850, - "source": 941, - "pc": [ - 3838, - 3839 - ] - }, - { - "teal": 3851, - "source": 941, - "pc": [ - 3840 - ] - }, - { - "teal": 3852, - "source": 941, - "pc": [ - 3841 - ] - }, - { - "teal": 3853, - "source": 941, - "pc": [ - 3842, - 3843 - ] - }, - { - "teal": 3854, - "source": 941, - "pc": [ - 3844, - 3845, - 3846 - ] - }, - { - "teal": 3855, - "source": 941, - "pc": [ - 3847 - ] - }, - { - "teal": 3856, - "source": 941, - "pc": [ - 3848, - 3849 - ] - }, - { - "teal": 3860, - "source": 945, - "pc": [ - 3850, - 3851 - ] - }, - { - "teal": 3861, - "source": 945, - "pc": [ - 3852, - 3853 - ] - }, - { - "teal": 3862, - "source": 945, - "pc": [ - 3854, - 3855, - 3856 - ] - }, - { - "teal": 3863, - "source": 945, - "pc": [ - 3857 - ] - }, - { - "teal": 3864, - "source": 945, - "pc": [ - 3858 - ] - }, - { - "teal": 3865, - "source": 945, - "pc": [ - 3859 - ] - }, - { - "teal": 3869, - "source": 946, - "pc": [ - 3860, - 3861 - ] - }, - { - "teal": 3870, - "source": 946, - "pc": [ - 3862, - 3863 - ] - }, - { - "teal": 3871, - "source": 946, - "pc": [ - 3864, - 3865, - 3866 - ] - }, - { - "teal": 3872, - "source": 946, - "pc": [ - 3867 - ] - }, - { - "teal": 3873, - "source": 946, - "pc": [ - 3868, - 3869 - ] - }, - { - "teal": 3874, - "source": 946, - "pc": [ - 3870 - ] - }, - { - "teal": 3875, - "source": 946, - "pc": [ - 3871 - ] - }, - { - "teal": 3876, - "source": 946, - "pc": [ - 3872 - ] - }, - { - "teal": 3883, - "source": 948, - "pc": [ - 3873 - ] - }, - { - "teal": 3884, - "source": 948, - "pc": [ - 3874 - ] - }, - { - "teal": 3885, - "source": 948, - "pc": [ - 3875, - 3876 - ] - }, - { - "teal": 3886, - "source": 948, - "pc": [ - 3877, - 3878 - ] - }, - { - "teal": 3887, - "source": 948, - "pc": [ - 3879, - 3880 - ] - }, - { - "teal": 3891, - "source": 949, - "pc": [ - 3881 - ] - }, - { - "teal": 3892, - "source": 949, - "pc": [ - 3882 - ] - }, - { - "teal": 3893, - "source": 949, - "pc": [ - 3883, - 3884 - ] - }, - { - "teal": 3897, - "source": 950, - "pc": [ - 3885 - ] - }, - { - "teal": 3898, - "source": 950, - "pc": [ - 3886 - ] - }, - { - "teal": 3899, - "source": 950, - "pc": [ - 3887 - ] - }, - { - "teal": 3900, - "source": 950, - "pc": [ - 3888, - 3889 - ] - }, - { - "teal": 3903, - "source": 948, - "pc": [ - 3890 - ] - }, - { - "teal": 3904, - "source": 948, - "pc": [ - 3891, - 3892 - ] - }, - { - "teal": 3907, - "source": 948, - "pc": [ - 3893 - ] - }, - { - "teal": 3908, - "source": 948, - "pc": [ - 3894, - 3895 - ] - }, - { - "teal": 3909, - "source": 948, - "pc": [ - 3896 - ] - }, - { - "teal": 3910, - "source": 948, - "pc": [ - 3897 - ] - }, - { - "teal": 3911, - "source": 948, - "pc": [ - 3898, - 3899 - ] - }, - { - "teal": 3912, - "source": 948, - "pc": [ - 3900, - 3901, - 3902 - ] - }, - { - "teal": 3915, - "source": 936, - "pc": [ - 3903, - 3904 - ] - }, - { - "teal": 3916, - "source": 936, - "pc": [ - 3905 - ] - }, - { - "teal": 3920, - "source": 954, - "pc": [ - 3906, - 3907, - 3908 - ] - }, - { - "teal": 3923, - "source": 954, - "pc": [ - 3909, - 3910 - ] - }, - { - "teal": 3930, - "source": 955, - "pc": [ - 3911 - ] - }, - { - "teal": 3931, - "source": 955, - "pc": [ - 3912 - ] - }, - { - "teal": 3932, - "source": 955, - "pc": [ - 3913, - 3914 - ] - }, - { - "teal": 3933, - "source": 955, - "pc": [ - 3915, - 3916, - 3917, - 3918, - 3919, - 3920 - ] - }, - { - "teal": 3934, - "source": 955, - "pc": [ - 3921, - 3922 - ] - }, - { - "teal": 3938, - "source": 956, - "pc": [ - 3923 - ] - }, - { - "teal": 3939, - "source": 956, - "pc": [ - 3924 - ] - }, - { - "teal": 3940, - "source": 956, - "pc": [ - 3925, - 3926 - ] - }, - { - "teal": 3944, - "source": 957, - "pc": [ - 3927 - ] - }, - { - "teal": 3945, - "source": 957, - "pc": [ - 3928 - ] - }, - { - "teal": 3946, - "source": 957, - "pc": [ - 3929 - ] - }, - { - "teal": 3947, - "source": 957, - "pc": [ - 3930, - 3931 - ] - }, - { - "teal": 3950, - "source": 955, - "pc": [ - 3932 - ] - }, - { - "teal": 3951, - "source": 955, - "pc": [ - 3933, - 3934 - ] - }, - { - "teal": 3954, - "source": 955, - "pc": [ - 3935 - ] - }, - { - "teal": 3955, - "source": 955, - "pc": [ - 3936, - 3937 - ] - }, - { - "teal": 3956, - "source": 955, - "pc": [ - 3938 - ] - }, - { - "teal": 3957, - "source": 955, - "pc": [ - 3939 - ] - }, - { - "teal": 3958, - "source": 955, - "pc": [ - 3940, - 3941 - ] - }, - { - "teal": 3959, - "source": 955, - "pc": [ - 3942, - 3943, - 3944 - ] - }, - { - "teal": 3960, - "source": 955, - "pc": [ - 3945, - 3946 - ] - }, - { - "teal": 3964, - "source": 959, - "pc": [ - 3947, - 3948 - ] - }, - { - "teal": 3965, - "source": 959, - "pc": [ - 3949, - 3950 - ] - }, - { - "teal": 3966, - "source": 959, - "pc": [ - 3951, - 3952, - 3953 - ] - }, - { - "teal": 3967, - "source": 959, - "pc": [ - 3954 - ] - }, - { - "teal": 3968, - "source": 959, - "pc": [ - 3955 - ] - }, - { - "teal": 3969, - "source": 959, - "pc": [ - 3956, - 3957, - 3958 - ] - }, - { - "teal": 3970, - "source": 959, - "pc": [ - 3959, - 3960 - ] - }, - { - "teal": 3971, - "source": 959, - "pc": [ - 3961, - 3962 - ] - }, - { - "teal": 3972, - "source": 959, - "pc": [ - 3963, - 3964, - 3965 - ] - }, - { - "teal": 3973, - "source": 959, - "pc": [ - 3966 - ] - }, - { - "teal": 3974, - "source": 959, - "pc": [ - 3967 - ] - }, - { - "teal": 3978, - "source": 954, - "pc": [ - 3968, - 3969 - ] - }, - { - "teal": 3979, - "source": 954, - "pc": [ - 3970 - ] - }, - { - "teal": 3986, - "source": 966, - "pc": [ - 3971, - 3972, - 3973 - ] - }, - { - "teal": 3989, - "source": 966, - "pc": [ - 3974, - 3975 - ] - }, - { - "teal": 3993, - "source": 967, - "pc": [ - 3976, - 3977, - 3978 - ] - }, - { - "teal": 3994, - "source": 967, - "pc": [ - 3979, - 3980 - ] - }, - { - "teal": 3998, - "source": 969, - "pc": [ - 3981, - 3982 - ] - }, - { - "teal": 3999, - "source": 969, - "pc": [ - 3983, - 3984 - ] - }, - { - "teal": 4000, - "source": 969, - "pc": [ - 3985 - ] - }, - { - "teal": 4001, - "source": 969, - "pc": [ - 3986 - ] - }, - { - "teal": 4002, - "source": 969, - "pc": [ - 3987, - 3988 - ] - }, - { - "teal": 4003, - "source": 969, - "pc": [ - 3989 - ] - }, - { - "teal": 4004, - "source": 969, - "pc": [ - 3990 - ] - }, - { - "teal": 4005, - "source": 969, - "pc": [ - 3991 - ] - }, - { - "teal": 4006, - "source": 969, - "pc": [ - 3992 - ] - }, - { - "teal": 4007, - "source": 969, - "pc": [ - 3993 - ] - }, - { - "teal": 4010, - "source": 969, - "errorMessage": "wideRatio failed", - "pc": [ - 3994 - ] - }, - { - "teal": 4013, - "source": 966, - "pc": [ - 3995, - 3996 - ] - }, - { - "teal": 4014, - "source": 966, - "pc": [ - 3997 - ] - }, - { - "teal": 4018, - "source": 972, - "pc": [ - 3998, - 3999, - 4000 - ] - }, - { - "teal": 4023, - "source": 974, - "pc": [ - 4001, - 4002 - ] - }, - { - "teal": 4024, - "source": 974, - "pc": [ - 4003, - 4004 - ] - }, - { - "teal": 4025, - "source": 974, - "pc": [ - 4005 - ] - }, - { - "teal": 4026, - "source": 974, - "pc": [ - 4006 - ] - }, - { - "teal": 4027, - "source": 974, - "pc": [ - 4007, - 4008, - 4009 - ] - }, - { - "teal": 4032, - "source": 975, - "pc": [ - 4010, - 4011 - ] - }, - { - "teal": 4033, - "source": 975, - "pc": [ - 4012 - ] - }, - { - "teal": 4038, - "source": 977, - "pc": [ - 4013 - ] - }, - { - "teal": 4039, - "source": 972, - "pc": [ - 4014 - ] - }, - { - "teal": 4043, - "source": 980, - "pc": [ - 4015, - 4016, - 4017 - ] - }, - { - "teal": 4047, - "source": 981, - "pc": [ - 4018 - ] - }, - { - "teal": 4048, - "source": 980, - "pc": [ - 4019 - ] - }, - { - "teal": 4054, - "source": 987, - "pc": [ - 4020, - 4021, - 4022 - ] - }, - { - "teal": 4057, - "source": 987, - "pc": [ - 4023, - 4024 - ] - }, - { - "teal": 4058, - "source": 987, - "pc": [ - 4025, - 4026 - ] - }, - { - "teal": 4062, - "source": 988, - "pc": [ - 4027, - 4028 - ] - }, - { - "teal": 4063, - "source": 988, - "pc": [ - 4029 - ] - }, - { - "teal": 4064, - "source": 988, - "pc": [ - 4030 - ] - }, - { - "teal": 4065, - "source": 988, - "pc": [ - 4031, - 4032 - ] - }, - { - "teal": 4070, - "source": 989, - "pc": [ - 4033, - 4034 - ] - }, - { - "teal": 4071, - "source": 989, - "pc": [ - 4035, - 4036 - ] - }, - { - "teal": 4072, - "source": 989, - "pc": [ - 4037 - ] - }, - { - "teal": 4073, - "source": 989, - "pc": [ - 4038, - 4039 - ] - }, - { - "teal": 4074, - "source": 989, - "pc": [ - 4040 - ] - }, - { - "teal": 4075, - "source": 989, - "pc": [ - 4041 - ] - }, - { - "teal": 4076, - "source": 989, - "pc": [ - 4042 - ] - }, - { - "teal": 4077, - "source": 989, - "pc": [ - 4043 - ] - }, - { - "teal": 4080, - "source": 989, - "errorMessage": "currentBinSize as uint64 overflowed 64 bits", - "pc": [ - 4044 - ] - }, - { - "teal": 4081, - "source": 989, - "pc": [ - 4045, - 4046, - 4047, - 4048, - 4049, - 4050, - 4051, - 4052, - 4053, - 4054 - ] - }, - { - "teal": 4082, - "source": 989, - "pc": [ - 4055 - ] - }, - { - "teal": 4083, - "source": 989, - "pc": [ - 4056 - ] - }, - { - "teal": 4084, - "source": 989, - "pc": [ - 4057 - ] - }, - { - "teal": 4085, - "source": 989, - "pc": [ - 4058 - ] - }, - { - "teal": 4086, - "source": 989, - "pc": [ - 4059, - 4060 - ] - }, - { - "teal": 4087, - "source": 989, - "pc": [ - 4061 - ] - }, - { - "teal": 4088, - "source": 989, - "pc": [ - 4062 - ] - }, - { - "teal": 4089, - "source": 989, - "pc": [ - 4063 - ] - }, - { - "teal": 4090, - "source": 989, - "pc": [ - 4064 - ] - }, - { - "teal": 4091, - "source": 989, - "pc": [ - 4065 - ] - }, - { - "teal": 4092, - "source": 989, - "pc": [ - 4066 - ] - }, - { - "teal": 4093, - "source": 989, - "pc": [ - 4067, - 4068, - 4069 - ] - }, - { - "teal": 4099, - "source": 990, - "pc": [ - 4070, - 4071 - ] - }, - { - "teal": 4100, - "source": 990, - "pc": [ - 4072, - 4073 - ] - }, - { - "teal": 4101, - "source": 990, - "pc": [ - 4074 - ] - }, - { - "teal": 4102, - "source": 990, - "pc": [ - 4075, - 4076, - 4077 - ] - }, - { - "teal": 4107, - "source": 991, - "pc": [ - 4078 - ] - }, - { - "teal": 4108, - "source": 991, - "pc": [ - 4079 - ] - }, - { - "teal": 4109, - "source": 991, - "pc": [ - 4080, - 4081 - ] - }, - { - "teal": 4110, - "source": 991, - "pc": [ - 4082 - ] - }, - { - "teal": 4111, - "source": 991, - "pc": [ - 4083, - 4084 - ] - }, - { - "teal": 4112, - "source": 991, - "pc": [ - 4085, - 4086 - ] - }, - { - "teal": 4113, - "source": 991, - "pc": [ - 4087 - ] - }, - { - "teal": 4114, - "source": 991, - "pc": [ - 4088, - 4089 - ] - }, - { - "teal": 4115, - "source": 991, - "pc": [ - 4090, - 4091 - ] - }, - { - "teal": 4116, - "source": 991, - "pc": [ - 4092, - 4093 - ] - }, - { - "teal": 4117, - "source": 991, - "pc": [ - 4094, - 4095 - ] - }, - { - "teal": 4118, - "source": 991, - "pc": [ - 4096 - ] - }, - { - "teal": 4123, - "source": 993, - "pc": [ - 4097, - 4098 - ] - }, - { - "teal": 4124, - "source": 993, - "pc": [ - 4099, - 4100, - 4101, - 4102, - 4103, - 4104, - 4105, - 4106, - 4107, - 4108, - 4109, - 4110, - 4111, - 4112, - 4113, - 4114, - 4115, - 4116 - ] - }, - { - "teal": 4125, - "source": 993, - "pc": [ - 4117 - ] - }, - { - "teal": 4126, - "source": 993, - "pc": [ - 4118 - ] - }, - { - "teal": 4127, - "source": 993, - "pc": [ - 4119 - ] - }, - { - "teal": 4128, - "source": 993, - "pc": [ - 4120, - 4121 - ] - }, - { - "teal": 4129, - "source": 993, - "pc": [ - 4122 - ] - }, - { - "teal": 4132, - "source": 993, - "errorMessage": "currentBinSize * (365 as uint128) overflowed 128 bits", - "pc": [ - 4123 - ] - }, - { - "teal": 4133, - "source": 993, - "pc": [ - 4124, - 4125 - ] - }, - { - "teal": 4134, - "source": 993, - "pc": [ - 4126 - ] - }, - { - "teal": 4135, - "source": 993, - "pc": [ - 4127 - ] - }, - { - "teal": 4136, - "source": 993, - "pc": [ - 4128 - ] - }, - { - "teal": 4137, - "source": 993, - "pc": [ - 4129 - ] - }, - { - "teal": 4138, - "source": 993, - "pc": [ - 4130, - 4131 - ] - }, - { - "teal": 4139, - "source": 993, - "pc": [ - 4132 - ] - }, - { - "teal": 4140, - "source": 993, - "pc": [ - 4133 - ] - }, - { - "teal": 4141, - "source": 993, - "pc": [ - 4134 - ] - }, - { - "teal": 4142, - "source": 993, - "pc": [ - 4135, - 4136 - ] - }, - { - "teal": 4146, - "source": 994, - "pc": [ - 4137, - 4138 - ] - }, - { - "teal": 4147, - "source": 994, - "pc": [ - 4139 - ] - }, - { - "teal": 4148, - "source": 994, - "pc": [ - 4140, - 4141 - ] - }, - { - "teal": 4149, - "source": 994, - "pc": [ - 4142 - ] - }, - { - "teal": 4150, - "source": 994, - "pc": [ - 4143 - ] - }, - { - "teal": 4151, - "source": 994, - "pc": [ - 4144 - ] - }, - { - "teal": 4152, - "source": 994, - "pc": [ - 4145, - 4146 - ] - }, - { - "teal": 4153, - "source": 994, - "pc": [ - 4147 - ] - }, - { - "teal": 4156, - "source": 994, - "errorMessage": "this.stakeAccumulator.value / currentBinSize overflowed 128 bits", - "pc": [ - 4148 - ] - }, - { - "teal": 4157, - "source": 994, - "pc": [ - 4149, - 4150 - ] - }, - { - "teal": 4158, - "source": 994, - "pc": [ - 4151 - ] - }, - { - "teal": 4159, - "source": 994, - "pc": [ - 4152 - ] - }, - { - "teal": 4160, - "source": 994, - "pc": [ - 4153 - ] - }, - { - "teal": 4161, - "source": 994, - "pc": [ - 4154 - ] - }, - { - "teal": 4162, - "source": 994, - "pc": [ - 4155, - 4156 - ] - }, - { - "teal": 4163, - "source": 994, - "pc": [ - 4157 - ] - }, - { - "teal": 4164, - "source": 994, - "pc": [ - 4158 - ] - }, - { - "teal": 4165, - "source": 994, - "pc": [ - 4159 - ] - }, - { - "teal": 4166, - "source": 994, - "pc": [ - 4160, - 4161 - ] - }, - { - "teal": 4171, - "source": 995, - "pc": [ - 4162, - 4163 - ] - }, - { - "teal": 4172, - "source": 995, - "pc": [ - 4164, - 4165 - ] - }, - { - "teal": 4173, - "source": 995, - "pc": [ - 4166 - ] - }, - { - "teal": 4174, - "source": 995, - "pc": [ - 4167, - 4168, - 4169 - ] - }, - { - "teal": 4181, - "source": 1000, - "pc": [ - 4170, - 4171 - ] - }, - { - "teal": 4182, - "source": 1000, - "pc": [ - 4172 - ] - }, - { - "teal": 4183, - "source": 1000, - "pc": [ - 4173 - ] - }, - { - "teal": 4184, - "source": 1000, - "pc": [ - 4174, - 4175, - 4176, - 4177, - 4178, - 4179, - 4180, - 4181, - 4182, - 4183, - 4184, - 4185, - 4186, - 4187, - 4188, - 4189, - 4190, - 4191 - ] - }, - { - "teal": 4185, - "source": 1000, - "pc": [ - 4192 - ] - }, - { - "teal": 4186, - "source": 1000, - "pc": [ - 4193, - 4194 - ] - }, - { - "teal": 4187, - "source": 1000, - "pc": [ - 4195 - ] - }, - { - "teal": 4188, - "source": 1001, - "pc": [ - 4196, - 4197 - ] - }, - { - "teal": 4189, - "source": 1001, - "pc": [ - 4198, - 4199 - ] - }, - { - "teal": 4190, - "source": 1001, - "pc": [ - 4200 - ] - }, - { - "teal": 4191, - "source": 1000, - "pc": [ - 4201 - ] - }, - { - "teal": 4192, - "source": 1000, - "pc": [ - 4202 - ] - }, - { - "teal": 4193, - "source": 1000, - "pc": [ - 4203 - ] - }, - { - "teal": 4194, - "source": 1000, - "pc": [ - 4204, - 4205 - ] - }, - { - "teal": 4195, - "source": 1000, - "pc": [ - 4206 - ] - }, - { - "teal": 4198, - "source": 1000, - "errorMessage": "(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits", - "pc": [ - 4207 - ] - }, - { - "teal": 4199, - "source": 1000, - "pc": [ - 4208, - 4209 - ] - }, - { - "teal": 4200, - "source": 1000, - "pc": [ - 4210 - ] - }, - { - "teal": 4201, - "source": 1000, - "pc": [ - 4211 - ] - }, - { - "teal": 4202, - "source": 1000, - "pc": [ - 4212 - ] - }, - { - "teal": 4203, - "source": 1000, - "pc": [ - 4213 - ] - }, - { - "teal": 4204, - "source": 1000, - "pc": [ - 4214, - 4215 - ] - }, - { - "teal": 4205, - "source": 1000, - "pc": [ - 4216 - ] - }, - { - "teal": 4206, - "source": 1000, - "pc": [ - 4217 - ] - }, - { - "teal": 4207, - "source": 1000, - "pc": [ - 4218 - ] - }, - { - "teal": 4208, - "source": 999, - "pc": [ - 4219, - 4220 - ] - }, - { - "teal": 4212, - "source": 1003, - "pc": [ - 4221, - 4222, - 4223, - 4224, - 4225, - 4226, - 4227, - 4228, - 4229, - 4230, - 4231, - 4232, - 4233, - 4234, - 4235, - 4236, - 4237, - 4238 - ] - }, - { - "teal": 4213, - "source": 1003, - "pc": [ - 4239, - 4240 - ] - }, - { - "teal": 4218, - "source": 1005, - "pc": [ - 4241, - 4242 - ] - }, - { - "teal": 4219, - "source": 1005, - "pc": [ - 4243, - 4244, - 4245, - 4246, - 4247, - 4248, - 4249, - 4250, - 4251, - 4252, - 4253, - 4254, - 4255, - 4256, - 4257, - 4258, - 4259, - 4260 - ] - }, - { - "teal": 4220, - "source": 1005, - "pc": [ - 4261 - ] - }, - { - "teal": 4221, - "source": 1005, - "pc": [ - 4262, - 4263, - 4264 - ] - }, - { - "teal": 4226, - "source": 1006, - "pc": [ - 4265, - 4266, - 4267, - 4268, - 4269, - 4270, - 4271, - 4272, - 4273, - 4274, - 4275, - 4276, - 4277, - 4278, - 4279, - 4280, - 4281, - 4282 - ] - }, - { - "teal": 4227, - "source": 1006, - "pc": [ - 4283, - 4284 - ] - }, - { - "teal": 4234, - "source": 1008, - "pc": [ - 4285, - 4286 - ] - }, - { - "teal": 4235, - "source": 1008, - "pc": [ - 4287 - ] - }, - { - "teal": 4236, - "source": 1009, - "pc": [ - 4288 - ] - }, - { - "teal": 4237, - "source": 1009, - "pc": [ - 4289, - 4290 - ] - }, - { - "teal": 4238, - "source": 1009, - "pc": [ - 4291, - 4292 - ] - }, - { - "teal": 4239, - "source": 1009, - "pc": [ - 4293 - ] - }, - { - "teal": 4240, - "source": 1009, - "pc": [ - 4294 - ] - }, - { - "teal": 4241, - "source": 1009, - "pc": [ - 4295, - 4296 - ] - }, - { - "teal": 4242, - "source": 1009, - "pc": [ - 4297 - ] - }, - { - "teal": 4243, - "source": 1010, - "pc": [ - 4298, - 4299 - ] - }, - { - "teal": 4244, - "source": 1010, - "pc": [ - 4300, - 4301 - ] - }, - { - "teal": 4245, - "source": 1010, - "pc": [ - 4302 - ] - }, - { - "teal": 4246, - "source": 1010, - "pc": [ - 4303, - 4304 - ] - }, - { - "teal": 4247, - "source": 1010, - "pc": [ - 4305 - ] - }, - { - "teal": 4248, - "source": 1009, - "pc": [ - 4306 - ] - }, - { - "teal": 4249, - "source": 1009, - "pc": [ - 4307 - ] - }, - { - "teal": 4250, - "source": 1009, - "pc": [ - 4308 - ] - }, - { - "teal": 4251, - "source": 1009, - "pc": [ - 4309, - 4310 - ] - }, - { - "teal": 4252, - "source": 1009, - "pc": [ - 4311 - ] - }, - { - "teal": 4255, - "source": 1009, - "errorMessage": "(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits", - "pc": [ - 4312 - ] - }, - { - "teal": 4256, - "source": 1009, - "pc": [ - 4313, - 4314 - ] - }, - { - "teal": 4257, - "source": 1009, - "pc": [ - 4315 - ] - }, - { - "teal": 4258, - "source": 1009, - "pc": [ - 4316 - ] - }, - { - "teal": 4259, - "source": 1009, - "pc": [ - 4317 - ] - }, - { - "teal": 4260, - "source": 1009, - "pc": [ - 4318 - ] - }, - { - "teal": 4261, - "source": 1009, - "pc": [ - 4319, - 4320 - ] - }, - { - "teal": 4262, - "source": 1009, - "pc": [ - 4321 - ] - }, - { - "teal": 4263, - "source": 1009, - "pc": [ - 4322 - ] - }, - { - "teal": 4264, - "source": 1009, - "pc": [ - 4323 - ] - }, - { - "teal": 4265, - "source": 1008, - "pc": [ - 4324 - ] - }, - { - "teal": 4270, - "source": 1014, - "pc": [ - 4325, - 4326, - 4327 - ] - }, - { - "teal": 4274, - "source": 1015, - "pc": [ - 4328, - 4329 - ] - }, - { - "teal": 4275, - "source": 1015, - "pc": [ - 4330, - 4331 - ] - }, - { - "teal": 4276, - "source": 1015, - "pc": [ - 4332 - ] - }, - { - "teal": 4277, - "source": 1015, - "pc": [ - 4333 - ] - }, - { - "teal": 4278, - "source": 1015, - "pc": [ - 4334, - 4335 - ] - }, - { - "teal": 4279, - "source": 1015, - "pc": [ - 4336 - ] - }, - { - "teal": 4280, - "source": 1015, - "pc": [ - 4337 - ] - }, - { - "teal": 4281, - "source": 1015, - "pc": [ - 4338 - ] - }, - { - "teal": 4282, - "source": 1015, - "pc": [ - 4339 - ] - }, - { - "teal": 4283, - "source": 1015, - "pc": [ - 4340 - ] - }, - { - "teal": 4284, - "source": 1015, - "pc": [ - 4341, - 4342 - ] - }, - { - "teal": 4285, - "source": 1015, - "pc": [ - 4343 - ] - }, - { - "teal": 4288, - "source": 1015, - "errorMessage": "(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits", - "pc": [ - 4344 - ] - }, - { - "teal": 4289, - "source": 1015, - "pc": [ - 4345, - 4346 - ] - }, - { - "teal": 4290, - "source": 1015, - "pc": [ - 4347 - ] - }, - { - "teal": 4291, - "source": 1015, - "pc": [ - 4348 - ] - }, - { - "teal": 4292, - "source": 1015, - "pc": [ - 4349 - ] - }, - { - "teal": 4293, - "source": 1015, - "pc": [ - 4350 - ] - }, - { - "teal": 4294, - "source": 1015, - "pc": [ - 4351, - 4352 - ] - }, - { - "teal": 4295, - "source": 1015, - "pc": [ - 4353 - ] - }, - { - "teal": 4296, - "source": 1015, - "pc": [ - 4354 - ] - }, - { - "teal": 4297, - "source": 1015, - "pc": [ - 4355 - ] - }, - { - "teal": 4298, - "source": 1015, - "pc": [ - 4356 - ] - }, - { - "teal": 4302, - "source": 1016, - "pc": [ - 4357, - 4358 - ] - }, - { - "teal": 4303, - "source": 1016, - "pc": [ - 4359 - ] - }, - { - "teal": 4304, - "source": 1016, - "pc": [ - 4360 - ] - }, - { - "teal": 4308, - "source": 1017, - "pc": [ - 4361, - 4362 - ] - }, - { - "teal": 4309, - "source": 1017, - "pc": [ - 4363, - 4364 - ] - }, - { - "teal": 4310, - "source": 1017, - "pc": [ - 4365, - 4366 - ] - }, - { - "teal": 4311, - "source": 1017, - "pc": [ - 4367, - 4368 - ] - }, - { - "teal": 4312, - "source": 1017, - "pc": [ - 4369 - ] - }, - { - "teal": 4313, - "source": 1017, - "pc": [ - 4370 - ] - }, - { - "teal": 4314, - "source": 1017, - "pc": [ - 4371 - ] - }, - { - "teal": 4315, - "source": 1017, - "pc": [ - 4372 - ] - }, - { - "teal": 4318, - "source": 987, - "pc": [ - 4373 - ] - }, - { - "teal": 4322, - "source": 1021, - "pc": [ - 4374, - 4375, - 4376 - ] - }, - { - "teal": 4325, - "source": 1021, - "pc": [ - 4377, - 4378 - ] - }, - { - "teal": 4330, - "source": 1026, - "pc": [ - 4379, - 4380 - ] - }, - { - "teal": 4331, - "source": 1026, - "pc": [ - 4381, - 4382 - ] - }, - { - "teal": 4332, - "source": 1026, - "pc": [ - 4383 - ] - }, - { - "teal": 4333, - "source": 1026, - "pc": [ - 4384, - 4385, - 4386 - ] - }, - { - "teal": 4338, - "source": 1028, - "pc": [ - 4387, - 4388 - ] - }, - { - "teal": 4339, - "source": 1028, - "pc": [ - 4389, - 4390 - ] - }, - { - "teal": 4340, - "source": 1028, - "pc": [ - 4391 - ] - }, - { - "teal": 4344, - "source": 1029, - "pc": [ - 4392 - ] - }, - { - "teal": 4350, - "source": 1033, - "pc": [ - 4393, - 4394 - ] - }, - { - "teal": 4351, - "source": 1033, - "pc": [ - 4395 - ] - }, - { - "teal": 4352, - "source": 1033, - "pc": [ - 4396 - ] - }, - { - "teal": 4353, - "source": 1033, - "pc": [ - 4397, - 4398 - ] - }, - { - "teal": 4354, - "source": 1033, - "pc": [ - 4399, - 4400 - ] - }, - { - "teal": 4355, - "source": 1033, - "pc": [ - 4401, - 4402 - ] - }, - { - "teal": 4356, - "source": 1033, - "pc": [ - 4403 - ] - }, - { - "teal": 4357, - "source": 1033, - "pc": [ - 4404, - 4405 - ] - }, - { - "teal": 4358, - "source": 1033, - "pc": [ - 4406 - ] - }, - { - "teal": 4359, - "source": 1032, - "pc": [ - 4407, - 4408 - ] - }, - { - "teal": 4364, - "source": 1034, - "pc": [ - 4409, - 4410 - ] - }, - { - "teal": 4365, - "source": 1034, - "pc": [ - 4411 - ] - }, - { - "teal": 4366, - "source": 1034, - "pc": [ - 4412 - ] - }, - { - "teal": 4367, - "source": 1034, - "pc": [ - 4413, - 4414, - 4415 - ] - }, - { - "teal": 4372, - "source": 1036, - "pc": [ - 4416, - 4417 - ] - }, - { - "teal": 4373, - "source": 1036, - "pc": [ - 4418, - 4419 - ] - }, - { - "teal": 4374, - "source": 1036, - "pc": [ - 4420 - ] - }, - { - "teal": 4378, - "source": 1037, - "pc": [ - 4421 - ] - }, - { - "teal": 4383, - "source": 1042, - "pc": [ - 4422, - 4423 - ] - }, - { - "teal": 4384, - "source": 1042, - "pc": [ - 4424, - 4425, - 4426, - 4427 - ] - }, - { - "teal": 4385, - "source": 1042, - "pc": [ - 4428, - 4429 - ] - }, - { - "teal": 4386, - "source": 1042, - "pc": [ - 4430 - ] - }, - { - "teal": 4387, - "source": 1042, - "pc": [ - 4431 - ] - }, - { - "teal": 4388, - "source": 1021, - "pc": [ - 4432 - ] - }, - { - "teal": 4391, - "source": 37, - "pc": [ - 4433, - 4434, - 4435, - 4436, - 4437, - 4438 - ] - }, - { - "teal": 4392, - "source": 37, - "pc": [ - 4439, - 4440, - 4441 - ] - }, - { - "teal": 4393, - "source": 37, - "pc": [ - 4442, - 4443, - 4444, - 4445 - ] - }, - { - "teal": 4396, - "source": 37, - "errorMessage": "this contract does not implement the given ABI method for create NoOp", - "pc": [ - 4446 - ] - }, - { - "teal": 4399, - "source": 37, - "pc": [ - 4447, - 4448, - 4449, - 4450, - 4451, - 4452 - ] - }, - { - "teal": 4400, - "source": 37, - "pc": [ - 4453, - 4454, - 4455, - 4456, - 4457, - 4458 - ] - }, - { - "teal": 4401, - "source": 37, - "pc": [ - 4459, - 4460, - 4461, - 4462, - 4463, - 4464 - ] - }, - { - "teal": 4402, - "source": 37, - "pc": [ - 4465, - 4466, - 4467, - 4468, - 4469, - 4470 - ] - }, - { - "teal": 4403, - "source": 37, - "pc": [ - 4471, - 4472, - 4473, - 4474, - 4475, - 4476 - ] - }, - { - "teal": 4404, - "source": 37, - "pc": [ - 4477, - 4478, - 4479, - 4480, - 4481, - 4482 - ] - }, - { - "teal": 4405, - "source": 37, - "pc": [ - 4483, - 4484, - 4485, - 4486, - 4487, - 4488 - ] - }, - { - "teal": 4406, - "source": 37, - "pc": [ - 4489, - 4490, - 4491, - 4492, - 4493, - 4494 - ] - }, - { - "teal": 4407, - "source": 37, - "pc": [ - 4495, - 4496, - 4497, - 4498, - 4499, - 4500 - ] - }, - { - "teal": 4408, - "source": 37, - "pc": [ - 4501, - 4502, - 4503, - 4504, - 4505, - 4506 - ] - }, - { - "teal": 4409, - "source": 37, - "pc": [ - 4507, - 4508, - 4509, - 4510, - 4511, - 4512 - ] - }, - { - "teal": 4410, - "source": 37, - "pc": [ - 4513, - 4514, - 4515, - 4516, - 4517, - 4518 - ] - }, - { - "teal": 4411, - "source": 37, - "pc": [ - 4519, - 4520 - ] - }, - { - "teal": 4412, - "source": 37, - "pc": [ - 4521, - 4522, - 4523 - ] - }, - { - "teal": 4413, - "source": 37, - "pc": [ - 4524, - 4525, - 4526, - 4527, - 4528, - 4529, - 4530, - 4531, - 4532, - 4533, - 4534, - 4535, - 4536, - 4537, - 4538, - 4539, - 4540, - 4541, - 4542, - 4543, - 4544, - 4545, - 4546, - 4547, - 4548, - 4549, - 4550, - 4551 - ] - }, - { - "teal": 4416, - "source": 37, - "errorMessage": "this contract does not implement the given ABI method for call NoOp", - "pc": [ - 4552 - ] - } - ], - "clear": [] + "approval": { + "sourceInfo": [ + { + "teal": 15, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 1, + 2 + ] + }, + { + "teal": 16, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 3 + ] + }, + { + "teal": 17, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4 + ] + }, + { + "teal": 18, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 5 + ] + }, + { + "teal": 19, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 6, + 7 + ] + }, + { + "teal": 20, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 8 + ] + }, + { + "teal": 21, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] + }, + { + "teal": 25, + "source": "contracts/stakingPool.algo.ts:37", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 35 + ] + }, + { + "teal": 30, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 36, + 37, + 38 + ] + }, + { + "teal": 31, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 39 + ] + }, + { + "teal": 34, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 40, + 41, + 42 + ] + }, + { + "teal": 35, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 43 + ] + }, + { + "teal": 38, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 44, + 45, + 46 + ] + }, + { + "teal": 39, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 47 + ] + }, + { + "teal": 42, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 48, + 49, + 50 + ] + }, + { + "teal": 43, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 51 + ] + }, + { + "teal": 46, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 52, + 53, + 54 + ] + }, + { + "teal": 47, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 55 + ] + }, + { + "teal": 48, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 56 + ] + }, + { + "teal": 58, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 57, + 58, + 59 + ] + }, + { + "teal": 63, + "source": "contracts/stakingPool.algo.ts:102", + "pc": [ + 60, + 61 + ] + }, + { + "teal": 64, + "source": "contracts/stakingPool.algo.ts:102", + "pc": [ + 62 + ] + }, + { + "teal": 65, + "source": "contracts/stakingPool.algo.ts:102", + "pc": [ + 63 + ] + }, + { + "teal": 66, + "source": "contracts/stakingPool.algo.ts:102", + "pc": [ + 64, + 65, + 66 + ] + }, + { + "teal": 71, + "source": "contracts/stakingPool.algo.ts:104", + "pc": [ + 67, + 68 + ] + }, + { + "teal": 72, + "source": "contracts/stakingPool.algo.ts:104", + "pc": [ + 69 + ] + }, + { + "teal": 73, + "source": "contracts/stakingPool.algo.ts:104", + "pc": [ + 70 + ] + }, + { + "teal": 74, + "source": "contracts/stakingPool.algo.ts:104", + "pc": [ + 71 + ] + }, + { + "teal": 78, + "source": "contracts/stakingPool.algo.ts:105", + "pc": [ + 72, + 73 + ] + }, + { + "teal": 79, + "source": "contracts/stakingPool.algo.ts:105", + "pc": [ + 74 + ] + }, + { + "teal": 80, + "source": "contracts/stakingPool.algo.ts:105", + "pc": [ + 75 + ] + }, + { + "teal": 81, + "source": "contracts/stakingPool.algo.ts:105", + "pc": [ + 76 + ] + }, + { + "teal": 82, + "source": "contracts/stakingPool.algo.ts:102", + "pc": [ + 77, + 78, + 79 + ] + }, + { + "teal": 87, + "source": "contracts/stakingPool.algo.ts:107", + "pc": [ + 80, + 81 + ] + }, + { + "teal": 88, + "source": "contracts/stakingPool.algo.ts:107", + "pc": [ + 82 + ] + }, + { + "teal": 89, + "source": "contracts/stakingPool.algo.ts:107", + "pc": [ + 83 + ] + }, + { + "teal": 90, + "source": "contracts/stakingPool.algo.ts:107", + "pc": [ + 84 + ] + }, + { + "teal": 94, + "source": "contracts/stakingPool.algo.ts:108", + "pc": [ + 85, + 86 + ] + }, + { + "teal": 95, + "source": "contracts/stakingPool.algo.ts:108", + "pc": [ + 87 + ] + }, + { + "teal": 96, + "source": "contracts/stakingPool.algo.ts:108", + "pc": [ + 88 + ] + }, + { + "teal": 97, + "source": "contracts/stakingPool.algo.ts:108", + "pc": [ + 89 + ] + }, + { + "teal": 102, + "source": "contracts/stakingPool.algo.ts:110", + "pc": [ + 90, + 91 + ] + }, + { + "teal": 103, + "source": "contracts/stakingPool.algo.ts:110", + "pc": [ + 92, + 93, + 94, + 95 + ] + }, + { + "teal": 104, + "source": "contracts/stakingPool.algo.ts:110", + "pc": [ + 96 + ] + }, + { + "teal": 107, + "source": "contracts/stakingPool.algo.ts:110", + "errorMessage": "staking pool must have minimum entry of 1 algo", + "pc": [ + 97 + ] + }, + { + "teal": 111, + "source": "contracts/stakingPool.algo.ts:111", + "pc": [ + 98 + ] + }, + { + "teal": 112, + "source": "contracts/stakingPool.algo.ts:111", + "pc": [ + 99, + 100 + ] + }, + { + "teal": 113, + "source": "contracts/stakingPool.algo.ts:111", + "pc": [ + 101 + ] + }, + { + "teal": 117, + "source": "contracts/stakingPool.algo.ts:112", + "pc": [ + 102 + ] + }, + { + "teal": 118, + "source": "contracts/stakingPool.algo.ts:112", + "pc": [ + 103, + 104 + ] + }, + { + "teal": 119, + "source": "contracts/stakingPool.algo.ts:112", + "pc": [ + 105 + ] + }, + { + "teal": 123, + "source": "contracts/stakingPool.algo.ts:113", + "pc": [ + 106, + 107 + ] + }, + { + "teal": 124, + "source": "contracts/stakingPool.algo.ts:113", + "pc": [ + 108, + 109 + ] + }, + { + "teal": 125, + "source": "contracts/stakingPool.algo.ts:113", + "pc": [ + 110 + ] + }, + { + "teal": 129, + "source": "contracts/stakingPool.algo.ts:114", + "pc": [ + 111, + 112 + ] + }, + { + "teal": 130, + "source": "contracts/stakingPool.algo.ts:114", + "pc": [ + 113 + ] + }, + { + "teal": 131, + "source": "contracts/stakingPool.algo.ts:114", + "pc": [ + 114 + ] + }, + { + "teal": 135, + "source": "contracts/stakingPool.algo.ts:115", + "pc": [ + 115, + 116 + ] + }, + { + "teal": 136, + "source": "contracts/stakingPool.algo.ts:115", + "pc": [ + 117 + ] + }, + { + "teal": 137, + "source": "contracts/stakingPool.algo.ts:115", + "pc": [ + 118 + ] + }, + { + "teal": 141, + "source": "contracts/stakingPool.algo.ts:116", + "pc": [ + 119, + 120 + ] + }, + { + "teal": 142, + "source": "contracts/stakingPool.algo.ts:116", + "pc": [ + 121, + 122 + ] + }, + { + "teal": 143, + "source": "contracts/stakingPool.algo.ts:116", + "pc": [ + 123 + ] + }, + { + "teal": 147, + "source": "contracts/stakingPool.algo.ts:117", + "pc": [ + 124, + 125 + ] + }, + { + "teal": 148, + "source": "contracts/stakingPool.algo.ts:117", + "pc": [ + 126, + 127 + ] + }, + { + "teal": 149, + "source": "contracts/stakingPool.algo.ts:117", + "pc": [ + 128 + ] + }, + { + "teal": 153, + "source": "contracts/stakingPool.algo.ts:118", + "pc": [ + 129, + 130 + ] + }, + { + "teal": 154, + "source": "contracts/stakingPool.algo.ts:118", + "pc": [ + 131 + ] + }, + { + "teal": 155, + "source": "contracts/stakingPool.algo.ts:118", + "pc": [ + 132 + ] + }, + { + "teal": 159, + "source": "contracts/stakingPool.algo.ts:120", + "pc": [ + 133, + 134, + 135 + ] + }, + { + "teal": 163, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 136, + 137 + ] + }, + { + "teal": 164, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 138, + 139 + ] + }, + { + "teal": 165, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 140, + 141 + ] + }, + { + "teal": 166, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 142, + 143 + ] + }, + { + "teal": 167, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 144 + ] + }, + { + "teal": 168, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 145 + ] + }, + { + "teal": 169, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 146 + ] + }, + { + "teal": 170, + "source": "contracts/stakingPool.algo.ts:121", + "pc": [ + 147 + ] + }, + { + "teal": 174, + "source": "contracts/stakingPool.algo.ts:122", + "pc": [ + 148, + 149 + ] + }, + { + "teal": 175, + "source": "contracts/stakingPool.algo.ts:122", + "pc": [ + 150, + 151 + ] + }, + { + "teal": 176, + "source": "contracts/stakingPool.algo.ts:122", + "pc": [ + 152 + ] + }, + { + "teal": 180, + "source": "contracts/stakingPool.algo.ts:123", + "pc": [ + 153, + 154 + ] + }, + { + "teal": 181, + "source": "contracts/stakingPool.algo.ts:123", + "pc": [ + 155 + ] + }, + { + "teal": 182, + "source": "contracts/stakingPool.algo.ts:123", + "pc": [ + 156 + ] + }, + { + "teal": 186, + "source": "contracts/stakingPool.algo.ts:124", + "pc": [ + 157, + 158 + ] + }, + { + "teal": 187, + "source": "contracts/stakingPool.algo.ts:124", + "pc": [ + 159, + 160 + ] + }, + { + "teal": 188, + "source": "contracts/stakingPool.algo.ts:124", + "pc": [ + 161 + ] + }, + { + "teal": 189, + "source": "contracts/stakingPool.algo.ts:101", + "pc": [ + 162 + ] + }, + { + "teal": 194, + "source": "contracts/stakingPool.algo.ts:130", + "pc": [ + 163, + 164, + 165 + ] + }, + { + "teal": 195, + "source": "contracts/stakingPool.algo.ts:130", + "pc": [ + 166 + ] + }, + { + "teal": 196, + "source": "contracts/stakingPool.algo.ts:130", + "pc": [ + 167 + ] + }, + { + "teal": 202, + "source": "contracts/stakingPool.algo.ts:130", + "pc": [ + 168, + 169, + 170 + ] + }, + { + "teal": 203, + "source": "contracts/stakingPool.algo.ts:130", + "pc": [ + 171 + ] + }, + { + "teal": 207, + "source": "contracts/stakingPool.algo.ts:132", + "pc": [ + 172, + 173, + 174 + ] + }, + { + "teal": 211, + "source": "contracts/stakingPool.algo.ts:136", + "pc": [ + 175, + 176, + 177 + ] + }, + { + "teal": 212, + "source": "contracts/stakingPool.algo.ts:136", + "pc": [ + 178, + 179 + ] + }, + { + "teal": 213, + "source": "contracts/stakingPool.algo.ts:136", + "pc": [ + 180, + 181 + ] + }, + { + "teal": 214, + "source": "contracts/stakingPool.algo.ts:136", + "pc": [ + 182 + ] + }, + { + "teal": 215, + "source": "contracts/stakingPool.algo.ts:136", + "pc": [ + 183 + ] + }, + { + "teal": 216, + "source": "contracts/stakingPool.algo.ts:132", + "pc": [ + 184 + ] + }, + { + "teal": 221, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 185, + 186 + ] + }, + { + "teal": 222, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 187 + ] + }, + { + "teal": 223, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 188 + ] + }, + { + "teal": 224, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 189 + ] + }, + { + "teal": 225, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 190, + 191 + ] + }, + { + "teal": 226, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 192 + ] + }, + { + "teal": 227, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 193 + ] + }, + { + "teal": 230, + "source": "contracts/stakingPool.algo.ts:146", + "errorMessage": "argument 0 (mbrPayment) for initStorage must be a pay transaction", + "pc": [ + 194 + ] + }, + { + "teal": 233, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 195, + 196, + 197 + ] + }, + { + "teal": 234, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 198 + ] + }, + { + "teal": 235, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 199 + ] + }, + { + "teal": 245, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 200, + 201, + 202 + ] + }, + { + "teal": 248, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 203 + ] + }, + { + "teal": 249, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 204, + 205 + ] + }, + { + "teal": 253, + "source": "contracts/stakingPool.algo.ts:147", + "pc": [ + 206 + ] + }, + { + "teal": 254, + "source": "contracts/stakingPool.algo.ts:147", + "pc": [ + 207 + ] + }, + { + "teal": 255, + "source": "contracts/stakingPool.algo.ts:147", + "pc": [ + 208 + ] + }, + { + "teal": 256, + "source": "contracts/stakingPool.algo.ts:147", + "pc": [ + 209 + ] + }, + { + "teal": 257, + "source": "contracts/stakingPool.algo.ts:147", + "pc": [ + 210 + ] + }, + { + "teal": 260, + "source": "contracts/stakingPool.algo.ts:147", + "errorMessage": "staking pool already initialized", + "pc": [ + 211 + ] + }, + { + "teal": 267, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 212 + ] + }, + { + "teal": 268, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 213 + ] + }, + { + "teal": 269, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 214, + 215 + ] + }, + { + "teal": 270, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 216, + 217 + ] + }, + { + "teal": 271, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 218, + 219 + ] + }, + { + "teal": 275, + "source": "contracts/stakingPool.algo.ts:151", + "pc": [ + 220 + ] + }, + { + "teal": 276, + "source": "contracts/stakingPool.algo.ts:151", + "pc": [ + 221 + ] + }, + { + "teal": 277, + "source": "contracts/stakingPool.algo.ts:151", + "pc": [ + 222, + 223 + ] + }, + { + "teal": 281, + "source": "contracts/stakingPool.algo.ts:152", + "pc": [ + 224 + ] + }, + { + "teal": 282, + "source": "contracts/stakingPool.algo.ts:152", + "pc": [ + 225 + ] + }, + { + "teal": 283, + "source": "contracts/stakingPool.algo.ts:152", + "pc": [ + 226 + ] + }, + { + "teal": 284, + "source": "contracts/stakingPool.algo.ts:152", + "pc": [ + 227, + 228 + ] + }, + { + "teal": 287, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 229 + ] + }, + { + "teal": 288, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 230, + 231 + ] + }, + { + "teal": 291, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 232 + ] + }, + { + "teal": 292, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 233, + 234 + ] + }, + { + "teal": 293, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 235 + ] + }, + { + "teal": 294, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 236 + ] + }, + { + "teal": 295, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 237, + 238 + ] + }, + { + "teal": 296, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 239, + 240, + 241 + ] + }, + { + "teal": 297, + "source": "contracts/stakingPool.algo.ts:150", + "pc": [ + 242, + 243 + ] + }, + { + "teal": 301, + "source": "contracts/stakingPool.algo.ts:154", + "pc": [ + 244, + 245 + ] + }, + { + "teal": 302, + "source": "contracts/stakingPool.algo.ts:154", + "pc": [ + 246, + 247, + 248 + ] + }, + { + "teal": 303, + "source": "contracts/stakingPool.algo.ts:154", + "pc": [ + 249 + ] + }, + { + "teal": 304, + "source": "contracts/stakingPool.algo.ts:154", + "pc": [ + 250 + ] + }, + { + "teal": 305, + "source": "contracts/stakingPool.algo.ts:154", + "pc": [ + 251 + ] + }, + { + "teal": 306, + "source": "contracts/stakingPool.algo.ts:154", + "pc": [ + 252, + 253 + ] + }, + { + "teal": 310, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 254, + 255 + ] + }, + { + "teal": 311, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 256 + ] + }, + { + "teal": 312, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 257, + 258, + 259 + ] + }, + { + "teal": 313, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 260, + 261 + ] + }, + { + "teal": 314, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 262 + ] + }, + { + "teal": 315, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 263 + ] + }, + { + "teal": 316, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 264 + ] + }, + { + "teal": 317, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 265 + ] + }, + { + "teal": 320, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 266, + 267, + 268 + ] + }, + { + "teal": 321, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 269, + 270 + ] + }, + { + "teal": 322, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 271, + 272, + 273 + ] + }, + { + "teal": 325, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 274 + ] + }, + { + "teal": 328, + "source": "contracts/stakingPool.algo.ts:155", + "pc": [ + 275, + 276 + ] + }, + { + "teal": 335, + "source": "contracts/stakingPool.algo.ts:157", + "pc": [ + 277, + 278 + ] + }, + { + "teal": 336, + "source": "contracts/stakingPool.algo.ts:158", + "pc": [ + 279, + 280 + ] + }, + { + "teal": 337, + "source": "contracts/stakingPool.algo.ts:157", + "pc": [ + 281 + ] + }, + { + "teal": 338, + "source": "contracts/stakingPool.algo.ts:159", + "pc": [ + 282, + 283, + 284 + ] + }, + { + "teal": 339, + "source": "contracts/stakingPool.algo.ts:159", + "pc": [ + 285, + 286, + 287 + ] + }, + { + "teal": 340, + "source": "contracts/stakingPool.algo.ts:158", + "pc": [ + 288 + ] + }, + { + "teal": 341, + "source": "contracts/stakingPool.algo.ts:156", + "pc": [ + 289, + 290 + ] + }, + { + "teal": 346, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 291, + 292 + ] + }, + { + "teal": 347, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 293, + 294 + ] + }, + { + "teal": 348, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 295, + 296 + ] + }, + { + "teal": 349, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 297 + ] + }, + { + "teal": 352, + "source": "contracts/stakingPool.algo.ts:162", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "pc": [ + 298 + ] + }, + { + "teal": 355, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 299, + 300 + ] + }, + { + "teal": 356, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 301, + 302 + ] + }, + { + "teal": 357, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 303, + 304 + ] + }, + { + "teal": 358, + "source": "contracts/stakingPool.algo.ts:162", + "pc": [ + 305 + ] + }, + { + "teal": 361, + "source": "contracts/stakingPool.algo.ts:162", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}", + "pc": [ + 306 + ] + }, + { + "teal": 365, + "source": "contracts/stakingPool.algo.ts:163", + "pc": [ + 307 + ] + }, + { + "teal": 366, + "source": "contracts/stakingPool.algo.ts:163", + "pc": [ + 308, + 309, + 310 + ] + }, + { + "teal": 367, + "source": "contracts/stakingPool.algo.ts:163", + "pc": [ + 311 + ] + }, + { + "teal": 368, + "source": "contracts/stakingPool.algo.ts:163", + "pc": [ + 312 + ] + }, + { + "teal": 373, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 313, + 314 + ] + }, + { + "teal": 374, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 315 + ] + }, + { + "teal": 375, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 316, + 317, + 318 + ] + }, + { + "teal": 376, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 319, + 320 + ] + }, + { + "teal": 377, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 321 + ] + }, + { + "teal": 378, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 322 + ] + }, + { + "teal": 379, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 323 + ] + }, + { + "teal": 380, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 324 + ] + }, + { + "teal": 383, + "source": "contracts/stakingPool.algo.ts:165", + "pc": [ + 325, + 326, + 327 + ] + }, + { + "teal": 392, + "source": "contracts/stakingPool.algo.ts:167", + "pc": [ + 328 + ] + }, + { + "teal": 393, + "source": "contracts/stakingPool.algo.ts:167", + "pc": [ + 329, + 330 + ] + }, + { + "teal": 394, + "source": "contracts/stakingPool.algo.ts:167", + "pc": [ + 331, + 332 + ] + }, + { + "teal": 398, + "source": "contracts/stakingPool.algo.ts:168", + "pc": [ + 333, + 334 + ] + }, + { + "teal": 399, + "source": "contracts/stakingPool.algo.ts:168", + "pc": [ + 335, + 336, + 337 + ] + }, + { + "teal": 400, + "source": "contracts/stakingPool.algo.ts:168", + "pc": [ + 338 + ] + }, + { + "teal": 401, + "source": "contracts/stakingPool.algo.ts:168", + "pc": [ + 339, + 340 + ] + }, + { + "teal": 405, + "source": "contracts/stakingPool.algo.ts:169", + "pc": [ + 341, + 342 + ] + }, + { + "teal": 406, + "source": "contracts/stakingPool.algo.ts:169", + "pc": [ + 343, + 344 + ] + }, + { + "teal": 410, + "source": "contracts/stakingPool.algo.ts:170", + "pc": [ + 345 + ] + }, + { + "teal": 411, + "source": "contracts/stakingPool.algo.ts:170", + "pc": [ + 346, + 347 + ] + }, + { + "teal": 414, + "source": "contracts/stakingPool.algo.ts:167", + "pc": [ + 348 + ] + }, + { + "teal": 415, + "source": "contracts/stakingPool.algo.ts:167", + "pc": [ + 349, + 350 + ] + }, + { + "teal": 418, + "source": "contracts/stakingPool.algo.ts:167", + "pc": [ + 351 + ] + }, + { + "teal": 421, + "source": "contracts/stakingPool.algo.ts:146", + "pc": [ + 352 + ] + }, + { + "teal": 426, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 353, + 354 + ] + }, + { + "teal": 429, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 355, + 356, + 357 + ] + }, + { + "teal": 430, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 358 + ] + }, + { + "teal": 431, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 359 + ] + }, + { + "teal": 432, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 360, + 361 + ] + }, + { + "teal": 433, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 362 + ] + }, + { + "teal": 436, + "source": "contracts/stakingPool.algo.ts:185", + "errorMessage": "argument 0 (staker) for addStake must be a address", + "pc": [ + 363 + ] + }, + { + "teal": 439, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 364, + 365 + ] + }, + { + "teal": 440, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 366 + ] + }, + { + "teal": 441, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 367 + ] + }, + { + "teal": 442, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 368 + ] + }, + { + "teal": 443, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 369, + 370 + ] + }, + { + "teal": 444, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 371 + ] + }, + { + "teal": 445, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 372 + ] + }, + { + "teal": 448, + "source": "contracts/stakingPool.algo.ts:185", + "errorMessage": "argument 1 (stakedAmountPayment) for addStake must be a pay transaction", + "pc": [ + 373 + ] + }, + { + "teal": 451, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 374, + 375, + 376 + ] + }, + { + "teal": 452, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 377 + ] + }, + { + "teal": 453, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 378 + ] + }, + { + "teal": 454, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 379 + ] + }, + { + "teal": 455, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 380 + ] + }, + { + "teal": 456, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 381 + ] + }, + { + "teal": 469, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 382, + 383, + 384 + ] + }, + { + "teal": 472, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 385 + ] + }, + { + "teal": 473, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 386, + 387 + ] + }, + { + "teal": 477, + "source": "contracts/stakingPool.algo.ts:186", + "pc": [ + 388 + ] + }, + { + "teal": 478, + "source": "contracts/stakingPool.algo.ts:186", + "pc": [ + 389 + ] + }, + { + "teal": 479, + "source": "contracts/stakingPool.algo.ts:186", + "pc": [ + 390 + ] + }, + { + "teal": 480, + "source": "contracts/stakingPool.algo.ts:186", + "pc": [ + 391 + ] + }, + { + "teal": 483, + "source": "contracts/stakingPool.algo.ts:186", + "errorMessage": "staking pool must be initialized first", + "pc": [ + 392 + ] + }, + { + "teal": 490, + "source": "contracts/stakingPool.algo.ts:190", + "pc": [ + 393, + 394 + ] + }, + { + "teal": 491, + "source": "contracts/stakingPool.algo.ts:190", + "pc": [ + 395 + ] + }, + { + "teal": 492, + "source": "contracts/stakingPool.algo.ts:190", + "pc": [ + 396 + ] + }, + { + "teal": 493, + "source": "contracts/stakingPool.algo.ts:190", + "pc": [ + 397, + 398 + ] + }, + { + "teal": 494, + "source": "contracts/stakingPool.algo.ts:190", + "pc": [ + 399 + ] + }, + { + "teal": 495, + "source": "contracts/stakingPool.algo.ts:190", + "pc": [ + 400 + ] + }, + { + "teal": 498, + "source": "contracts/stakingPool.algo.ts:189", + "errorMessage": "stake can only be added via the validator contract", + "pc": [ + 401 + ] + }, + { + "teal": 502, + "source": "contracts/stakingPool.algo.ts:193", + "pc": [ + 402, + 403 + ] + }, + { + "teal": 503, + "source": "contracts/stakingPool.algo.ts:193", + "pc": [ + 404, + 405 + ] + }, + { + "teal": 504, + "source": "contracts/stakingPool.algo.ts:193", + "pc": [ + 406 + ] + }, + { + "teal": 505, + "source": "contracts/stakingPool.algo.ts:193", + "pc": [ + 407 + ] + }, + { + "teal": 509, + "source": "contracts/stakingPool.algo.ts:196", + "pc": [ + 408, + 409, + 410 + ] + }, + { + "teal": 518, + "source": "contracts/stakingPool.algo.ts:200", + "pc": [ + 411, + 412 + ] + }, + { + "teal": 519, + "source": "contracts/stakingPool.algo.ts:201", + "pc": [ + 413, + 414 + ] + }, + { + "teal": 520, + "source": "contracts/stakingPool.algo.ts:201", + "pc": [ + 415 + ] + }, + { + "teal": 521, + "source": "contracts/stakingPool.algo.ts:201", + "pc": [ + 416 + ] + }, + { + "teal": 522, + "source": "contracts/stakingPool.algo.ts:201", + "pc": [ + 417, + 418 + ] + }, + { + "teal": 523, + "source": "contracts/stakingPool.algo.ts:201", + "pc": [ + 419 + ] + }, + { + "teal": 524, + "source": "contracts/stakingPool.algo.ts:201", + "pc": [ + 420 + ] + }, + { + "teal": 527, + "source": "contracts/stakingPool.algo.ts:201", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}", + "pc": [ + 421 + ] + }, + { + "teal": 530, + "source": "contracts/stakingPool.algo.ts:200", + "pc": [ + 422, + 423 + ] + }, + { + "teal": 531, + "source": "contracts/stakingPool.algo.ts:202", + "pc": [ + 424, + 425 + ] + }, + { + "teal": 532, + "source": "contracts/stakingPool.algo.ts:202", + "pc": [ + 426, + 427 + ] + }, + { + "teal": 533, + "source": "contracts/stakingPool.algo.ts:202", + "pc": [ + 428 + ] + }, + { + "teal": 536, + "source": "contracts/stakingPool.algo.ts:202", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "pc": [ + 429 + ] + }, + { + "teal": 539, + "source": "contracts/stakingPool.algo.ts:200", + "pc": [ + 430, + 431 + ] + }, + { + "teal": 540, + "source": "contracts/stakingPool.algo.ts:203", + "pc": [ + 432, + 433 + ] + }, + { + "teal": 541, + "source": "contracts/stakingPool.algo.ts:203", + "pc": [ + 434, + 435 + ] + }, + { + "teal": 542, + "source": "contracts/stakingPool.algo.ts:203", + "pc": [ + 436, + 437 + ] + }, + { + "teal": 543, + "source": "contracts/stakingPool.algo.ts:203", + "pc": [ + 438 + ] + }, + { + "teal": 546, + "source": "contracts/stakingPool.algo.ts:203", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}", + "pc": [ + 439 + ] + }, + { + "teal": 550, + "source": "contracts/stakingPool.algo.ts:209", + "pc": [ + 440, + 441 + ] + }, + { + "teal": 551, + "source": "contracts/stakingPool.algo.ts:209", + "pc": [ + 442, + 443, + 444 + ] + }, + { + "teal": 552, + "source": "contracts/stakingPool.algo.ts:209", + "pc": [ + 445 + ] + }, + { + "teal": 553, + "source": "contracts/stakingPool.algo.ts:209", + "pc": [ + 446, + 447 + ] + }, + { + "teal": 557, + "source": "contracts/stakingPool.algo.ts:210", + "pc": [ + 448 + ] + }, + { + "teal": 558, + "source": "contracts/stakingPool.algo.ts:210", + "pc": [ + 449, + 450 + ] + }, + { + "teal": 562, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 451, + 452 + ] + }, + { + "teal": 563, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 453 + ] + }, + { + "teal": 564, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 454, + 455 + ] + }, + { + "teal": 565, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 456, + 457 + ] + }, + { + "teal": 566, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 458 + ] + }, + { + "teal": 567, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 459, + 460 + ] + }, + { + "teal": 568, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 461 + ] + }, + { + "teal": 569, + "source": "contracts/stakingPool.algo.ts:212", + "pc": [ + 462 + ] + }, + { + "teal": 573, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 463, + 464 + ] + }, + { + "teal": 574, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 465 + ] + }, + { + "teal": 575, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 466, + 467 + ] + }, + { + "teal": 576, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 468 + ] + }, + { + "teal": 577, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 469 + ] + }, + { + "teal": 578, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 470, + 471 + ] + }, + { + "teal": 579, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 472 + ] + }, + { + "teal": 580, + "source": "contracts/stakingPool.algo.ts:214", + "pc": [ + 473, + 474 + ] + }, + { + "teal": 585, + "source": "contracts/stakingPool.algo.ts:215", + "pc": [ + 475, + 476 + ] + }, + { + "teal": 586, + "source": "contracts/stakingPool.algo.ts:215", + "pc": [ + 477 + ] + }, + { + "teal": 587, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 478 + ] + }, + { + "teal": 588, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 479, + 480 + ] + }, + { + "teal": 589, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 481, + 482 + ] + }, + { + "teal": 590, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 483 + ] + }, + { + "teal": 591, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 484, + 485 + ] + }, + { + "teal": 592, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 486 + ] + }, + { + "teal": 593, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 487 + ] + }, + { + "teal": 594, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 488 + ] + }, + { + "teal": 595, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 489 + ] + }, + { + "teal": 596, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 490 + ] + }, + { + "teal": 597, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 491, + 492 + ] + }, + { + "teal": 598, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 493 + ] + }, + { + "teal": 601, + "source": "contracts/stakingPool.algo.ts:216", + "errorMessage": "this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", + "pc": [ + 494 + ] + }, + { + "teal": 602, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 495, + 496 + ] + }, + { + "teal": 603, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 497 + ] + }, + { + "teal": 604, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 498 + ] + }, + { + "teal": 605, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 499 + ] + }, + { + "teal": 606, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 500 + ] + }, + { + "teal": 607, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 501, + 502 + ] + }, + { + "teal": 608, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 503 + ] + }, + { + "teal": 609, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 504 + ] + }, + { + "teal": 610, + "source": "contracts/stakingPool.algo.ts:216", + "pc": [ + 505 + ] + }, + { + "teal": 611, + "source": "contracts/stakingPool.algo.ts:215", + "pc": [ + 506 + ] + }, + { + "teal": 615, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 507 + ] + }, + { + "teal": 616, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 508, + 509 + ] + }, + { + "teal": 621, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 510, + 511 + ] + }, + { + "teal": 622, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 512, + 513 + ] + }, + { + "teal": 623, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 514 + ] + }, + { + "teal": 624, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 515, + 516, + 517 + ] + }, + { + "teal": 629, + "source": "contracts/stakingPool.algo.ts:220", + "pc": [ + 518, + 519 + ] + }, + { + "teal": 630, + "source": "contracts/stakingPool.algo.ts:220", + "pc": [ + 520, + 521 + ] + }, + { + "teal": 631, + "source": "contracts/stakingPool.algo.ts:220", + "pc": [ + 522 + ] + }, + { + "teal": 632, + "source": "contracts/stakingPool.algo.ts:220", + "pc": [ + 523, + 524, + 525 + ] + }, + { + "teal": 637, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 526 + ] + }, + { + "teal": 638, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 527 + ] + }, + { + "teal": 639, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 528, + 529 + ] + }, + { + "teal": 640, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 530 + ] + }, + { + "teal": 641, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 531, + 532 + ] + }, + { + "teal": 642, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 533, + 534 + ] + }, + { + "teal": 643, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 535 + ] + }, + { + "teal": 644, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 536, + 537 + ] + }, + { + "teal": 645, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 538, + 539 + ] + }, + { + "teal": 646, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 540, + 541 + ] + }, + { + "teal": 647, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 542, + 543 + ] + }, + { + "teal": 648, + "source": "contracts/stakingPool.algo.ts:221", + "pc": [ + 544 + ] + }, + { + "teal": 653, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 545, + 546 + ] + }, + { + "teal": 654, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 547 + ] + }, + { + "teal": 655, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 548 + ] + }, + { + "teal": 656, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 549 + ] + }, + { + "teal": 657, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 550 + ] + }, + { + "teal": 658, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 551, + 552 + ] + }, + { + "teal": 659, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 553 + ] + }, + { + "teal": 660, + "source": "contracts/stakingPool.algo.ts:223", + "pc": [ + 554, + 555 + ] + }, + { + "teal": 665, + "source": "contracts/stakingPool.algo.ts:224", + "pc": [ + 556, + 557 + ] + }, + { + "teal": 666, + "source": "contracts/stakingPool.algo.ts:224", + "pc": [ + 558, + 559, + 560 + ] + }, + { + "teal": 667, + "source": "contracts/stakingPool.algo.ts:224", + "pc": [ + 561, + 562 + ] + }, + { + "teal": 668, + "source": "contracts/stakingPool.algo.ts:224", + "pc": [ + 563 + ] + }, + { + "teal": 669, + "source": "contracts/stakingPool.algo.ts:224", + "pc": [ + 564, + 565, + 566 + ] + }, + { + "teal": 674, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 567, + 568 + ] + }, + { + "teal": 675, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 569, + 570 + ] + }, + { + "teal": 676, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 571, + 572 + ] + }, + { + "teal": 677, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 573, + 574, + 575 + ] + }, + { + "teal": 678, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 576 + ] + }, + { + "teal": 679, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 577, + 578 + ] + }, + { + "teal": 680, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 579, + 580 + ] + }, + { + "teal": 681, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 581 + ] + }, + { + "teal": 682, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 582 + ] + }, + { + "teal": 683, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 583 + ] + }, + { + "teal": 684, + "source": "contracts/stakingPool.algo.ts:226", + "pc": [ + 584, + 585 + ] + }, + { + "teal": 688, + "source": "contracts/stakingPool.algo.ts:227", + "pc": [ + 586, + 587 + ] + }, + { + "teal": 689, + "source": "contracts/stakingPool.algo.ts:227", + "pc": [ + 588, + 589 + ] + }, + { + "teal": 690, + "source": "contracts/stakingPool.algo.ts:227", + "pc": [ + 590, + 591 + ] + }, + { + "teal": 691, + "source": "contracts/stakingPool.algo.ts:227", + "pc": [ + 592 + ] + }, + { + "teal": 692, + "source": "contracts/stakingPool.algo.ts:227", + "pc": [ + 593 + ] + }, + { + "teal": 693, + "source": "contracts/stakingPool.algo.ts:227", + "pc": [ + 594, + 595 + ] + }, + { + "teal": 697, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 596, + 597 + ] + }, + { + "teal": 698, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 598 + ] + }, + { + "teal": 699, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 599 + ] + }, + { + "teal": 700, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 600, + 601 + ] + }, + { + "teal": 701, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 602 + ] + }, + { + "teal": 702, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 603, + 604 + ] + }, + { + "teal": 703, + "source": "contracts/stakingPool.algo.ts:230", + "pc": [ + 605 + ] + }, + { + "teal": 707, + "source": "contracts/stakingPool.algo.ts:232", + "pc": [ + 606, + 607 + ] + }, + { + "teal": 708, + "source": "contracts/stakingPool.algo.ts:232", + "pc": [ + 608, + 609, + 610 + ] + }, + { + "teal": 714, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 611, + 612 + ] + }, + { + "teal": 715, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 613 + ] + }, + { + "teal": 716, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 614 + ] + }, + { + "teal": 717, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 615 + ] + }, + { + "teal": 718, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 616, + 617, + 618 + ] + }, + { + "teal": 719, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 619, + 620 + ] + }, + { + "teal": 720, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 621, + 622, + 623 + ] + }, + { + "teal": 721, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 624, + 625 + ] + }, + { + "teal": 722, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 626 + ] + }, + { + "teal": 723, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 627 + ] + }, + { + "teal": 726, + "source": "contracts/stakingPool.algo.ts:234", + "pc": [ + 628, + 629, + 630 + ] + }, + { + "teal": 731, + "source": "contracts/stakingPool.algo.ts:235", + "pc": [ + 631, + 632 + ] + }, + { + "teal": 732, + "source": "contracts/stakingPool.algo.ts:235", + "pc": [ + 633 + ] + }, + { + "teal": 733, + "source": "contracts/stakingPool.algo.ts:235", + "pc": [ + 634 + ] + }, + { + "teal": 734, + "source": "contracts/stakingPool.algo.ts:235", + "pc": [ + 635, + 636 + ] + }, + { + "teal": 741, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 637, + 638 + ] + }, + { + "teal": 742, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 639 + ] + }, + { + "teal": 743, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 640 + ] + }, + { + "teal": 744, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 641, + 642 + ] + }, + { + "teal": 745, + "source": "contracts/stakingPool.algo.ts:219", + "pc": [ + 643, + 644, + 645 + ] + }, + { + "teal": 751, + "source": "contracts/stakingPool.algo.ts:239", + "pc": [ + 646, + 647 + ] + }, + { + "teal": 752, + "source": "contracts/stakingPool.algo.ts:239", + "pc": [ + 648 + ] + }, + { + "teal": 753, + "source": "contracts/stakingPool.algo.ts:239", + "pc": [ + 649 + ] + }, + { + "teal": 754, + "source": "contracts/stakingPool.algo.ts:239", + "pc": [ + 650, + 651, + 652 + ] + }, + { + "teal": 758, + "source": "contracts/stakingPool.algo.ts:241", + "errorMessage": "Staking pool full", + "pc": [ + 653 + ] + }, + { + "teal": 763, + "source": "contracts/stakingPool.algo.ts:246", + "pc": [ + 654, + 655 + ] + }, + { + "teal": 764, + "source": "contracts/stakingPool.algo.ts:246", + "pc": [ + 656, + 657 + ] + }, + { + "teal": 765, + "source": "contracts/stakingPool.algo.ts:246", + "pc": [ + 658, + 659 + ] + }, + { + "teal": 766, + "source": "contracts/stakingPool.algo.ts:246", + "pc": [ + 660 + ] + }, + { + "teal": 767, + "source": "contracts/stakingPool.algo.ts:246", + "pc": [ + 661 + ] + }, + { + "teal": 770, + "source": "contracts/stakingPool.algo.ts:246", + "errorMessage": "must stake at least the minimum for this pool", + "pc": [ + 662 + ] + }, + { + "teal": 774, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 663, + 664 + ] + }, + { + "teal": 775, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 665 + ] + }, + { + "teal": 776, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 666 + ] + }, + { + "teal": 777, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 667 + ] + }, + { + "teal": 778, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 668 + ] + }, + { + "teal": 779, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 669 + ] + }, + { + "teal": 780, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 670 + ] + }, + { + "teal": 781, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 671, + 672 + ] + }, + { + "teal": 782, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 673 + ] + }, + { + "teal": 783, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 674, + 675 + ] + }, + { + "teal": 784, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 676 + ] + }, + { + "teal": 785, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 677, + 678 + ] + }, + { + "teal": 786, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 679 + ] + }, + { + "teal": 787, + "source": "contracts/stakingPool.algo.ts:248", + "pc": [ + 680 + ] + }, + { + "teal": 797, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 681, + 682 + ] + }, + { + "teal": 798, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 683 + ] + }, + { + "teal": 799, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 684 + ] + }, + { + "teal": 800, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 685 + ] + }, + { + "teal": 801, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 686 + ] + }, + { + "teal": 802, + "source": "contracts/stakingPool.algo.ts:250", + "pc": [ + 687, + 688 + ] + }, + { + "teal": 803, + "source": "contracts/stakingPool.algo.ts:251", + "pc": [ + 689, + 690 + ] + }, + { + "teal": 804, + "source": "contracts/stakingPool.algo.ts:251", + "pc": [ + 691, + 692 + ] + }, + { + "teal": 805, + "source": "contracts/stakingPool.algo.ts:251", + "pc": [ + 693 + ] + }, + { + "teal": 806, + "source": "contracts/stakingPool.algo.ts:251", + "pc": [ + 694 + ] + }, + { + "teal": 807, + "source": "contracts/stakingPool.algo.ts:252", + "pc": [ + 695, + 696 + ] + }, + { + "teal": 808, + "source": "contracts/stakingPool.algo.ts:252", + "pc": [ + 697 + ] + }, + { + "teal": 809, + "source": "contracts/stakingPool.algo.ts:253", + "pc": [ + 698, + 699 + ] + }, + { + "teal": 810, + "source": "contracts/stakingPool.algo.ts:253", + "pc": [ + 700 + ] + }, + { + "teal": 811, + "source": "contracts/stakingPool.algo.ts:254", + "pc": [ + 701, + 702 + ] + }, + { + "teal": 812, + "source": "contracts/stakingPool.algo.ts:254", + "pc": [ + 703 + ] + }, + { + "teal": 813, + "source": "contracts/stakingPool.algo.ts:254", + "pc": [ + 704 + ] + }, + { + "teal": 814, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 705 + ] + }, + { + "teal": 815, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 706, + 707 + ] + }, + { + "teal": 816, + "source": "contracts/stakingPool.algo.ts:249", + "pc": [ + 708 + ] + }, + { + "teal": 820, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 709, + 710 + ] + }, + { + "teal": 821, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 711 + ] + }, + { + "teal": 822, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 712 + ] + }, + { + "teal": 823, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 713 + ] + }, + { + "teal": 824, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 714, + 715 + ] + }, + { + "teal": 825, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 716 + ] + }, + { + "teal": 826, + "source": "contracts/stakingPool.algo.ts:256", + "pc": [ + 717 + ] + }, + { + "teal": 830, + "source": "contracts/stakingPool.algo.ts:257", + "pc": [ + 718, + 719 + ] + }, + { + "teal": 834, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 720, + 721 + ] + }, + { + "teal": 837, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 722, + 723 + ] + }, + { + "teal": 838, + "source": "contracts/stakingPool.algo.ts:185", + "pc": [ + 724 + ] + }, + { + "teal": 843, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 725, + 726, + 727 + ] + }, + { + "teal": 844, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 728 + ] + }, + { + "teal": 847, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 729, + 730, + 731 + ] + }, + { + "teal": 848, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 732 + ] + }, + { + "teal": 849, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 733 + ] + }, + { + "teal": 850, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 734, + 735 + ] + }, + { + "teal": 851, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 736 + ] + }, + { + "teal": 854, + "source": "contracts/stakingPool.algo.ts:271", + "errorMessage": "argument 1 (staker) for removeStake must be a address", + "pc": [ + 737 + ] + }, + { + "teal": 857, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 738, + 739, + 740 + ] + }, + { + "teal": 858, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 741 + ] + }, + { + "teal": 859, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 742 + ] + }, + { + "teal": 873, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 743, + 744, + 745 + ] + }, + { + "teal": 876, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 746 + ] + }, + { + "teal": 877, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 747, + 748 + ] + }, + { + "teal": 882, + "source": "contracts/stakingPool.algo.ts:274", + "pc": [ + 749, + 750 + ] + }, + { + "teal": 883, + "source": "contracts/stakingPool.algo.ts:274", + "pc": [ + 751, + 752 + ] + }, + { + "teal": 884, + "source": "contracts/stakingPool.algo.ts:274", + "pc": [ + 753 + ] + }, + { + "teal": 885, + "source": "contracts/stakingPool.algo.ts:274", + "pc": [ + 754, + 755, + 756 + ] + }, + { + "teal": 893, + "source": "contracts/stakingPool.algo.ts:276", + "pc": [ + 757, + 758, + 759 + ] + }, + { + "teal": 896, + "source": "contracts/stakingPool.algo.ts:275", + "errorMessage": "If staker is not sender in removeStake call, then sender MUST be owner or manager of validator", + "pc": [ + 760 + ] + }, + { + "teal": 901, + "source": "contracts/stakingPool.algo.ts:281", + "pc": [ + 761, + 762, + 763 + ] + }, + { + "teal": 905, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 764 + ] + }, + { + "teal": 906, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 765, + 766 + ] + }, + { + "teal": 911, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 767, + 768 + ] + }, + { + "teal": 912, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 769, + 770 + ] + }, + { + "teal": 913, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 771 + ] + }, + { + "teal": 914, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 772, + 773, + 774 + ] + }, + { + "teal": 919, + "source": "contracts/stakingPool.algo.ts:284", + "pc": [ + 775, + 776 + ] + }, + { + "teal": 920, + "source": "contracts/stakingPool.algo.ts:284", + "pc": [ + 777, + 778 + ] + }, + { + "teal": 921, + "source": "contracts/stakingPool.algo.ts:284", + "pc": [ + 779 + ] + }, + { + "teal": 922, + "source": "contracts/stakingPool.algo.ts:284", + "pc": [ + 780, + 781, + 782 + ] + }, + { + "teal": 927, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 783 + ] + }, + { + "teal": 928, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 784 + ] + }, + { + "teal": 929, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 785, + 786 + ] + }, + { + "teal": 930, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 787 + ] + }, + { + "teal": 931, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 788, + 789 + ] + }, + { + "teal": 932, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 790, + 791 + ] + }, + { + "teal": 933, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 792 + ] + }, + { + "teal": 934, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 793, + 794 + ] + }, + { + "teal": 935, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 795, + 796 + ] + }, + { + "teal": 936, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 797, + 798 + ] + }, + { + "teal": 937, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 799, + 800 + ] + }, + { + "teal": 938, + "source": "contracts/stakingPool.algo.ts:285", + "pc": [ + 801 + ] + }, + { + "teal": 943, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 802, + 803 + ] + }, + { + "teal": 944, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 804 + ] + }, + { + "teal": 945, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 805 + ] + }, + { + "teal": 946, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 806 + ] + }, + { + "teal": 947, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 807 + ] + }, + { + "teal": 948, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 808, + 809 + ] + }, + { + "teal": 949, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 810 + ] + }, + { + "teal": 950, + "source": "contracts/stakingPool.algo.ts:287", + "pc": [ + 811, + 812 + ] + }, + { + "teal": 955, + "source": "contracts/stakingPool.algo.ts:288", + "pc": [ + 813, + 814 + ] + }, + { + "teal": 956, + "source": "contracts/stakingPool.algo.ts:288", + "pc": [ + 815, + 816, + 817 + ] + }, + { + "teal": 957, + "source": "contracts/stakingPool.algo.ts:288", + "pc": [ + 818, + 819 + ] + }, + { + "teal": 958, + "source": "contracts/stakingPool.algo.ts:288", + "pc": [ + 820 + ] + }, + { + "teal": 959, + "source": "contracts/stakingPool.algo.ts:288", + "pc": [ + 821, + 822, + 823 + ] + }, + { + "teal": 965, + "source": "contracts/stakingPool.algo.ts:289", + "pc": [ + 824, + 825 + ] + }, + { + "teal": 966, + "source": "contracts/stakingPool.algo.ts:289", + "pc": [ + 826 + ] + }, + { + "teal": 967, + "source": "contracts/stakingPool.algo.ts:289", + "pc": [ + 827 + ] + }, + { + "teal": 968, + "source": "contracts/stakingPool.algo.ts:289", + "pc": [ + 828, + 829, + 830 + ] + }, + { + "teal": 973, + "source": "contracts/stakingPool.algo.ts:291", + "pc": [ + 831, + 832 + ] + }, + { + "teal": 974, + "source": "contracts/stakingPool.algo.ts:291", + "pc": [ + 833, + 834, + 835 + ] + }, + { + "teal": 975, + "source": "contracts/stakingPool.algo.ts:291", + "pc": [ + 836 + ] + }, + { + "teal": 976, + "source": "contracts/stakingPool.algo.ts:291", + "pc": [ + 837, + 838 + ] + }, + { + "teal": 982, + "source": "contracts/stakingPool.algo.ts:293", + "pc": [ + 839, + 840 + ] + }, + { + "teal": 983, + "source": "contracts/stakingPool.algo.ts:293", + "pc": [ + 841, + 842, + 843 + ] + }, + { + "teal": 984, + "source": "contracts/stakingPool.algo.ts:293", + "pc": [ + 844 + ] + }, + { + "teal": 985, + "source": "contracts/stakingPool.algo.ts:293", + "pc": [ + 845, + 846 + ] + }, + { + "teal": 986, + "source": "contracts/stakingPool.algo.ts:293", + "pc": [ + 847 + ] + }, + { + "teal": 987, + "source": "contracts/stakingPool.algo.ts:293", + "pc": [ + 848, + 849, + 850 + ] + }, + { + "teal": 991, + "source": "contracts/stakingPool.algo.ts:294", + "errorMessage": "Insufficient balance", + "pc": [ + 851 + ] + }, + { + "teal": 996, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 852, + 853 + ] + }, + { + "teal": 997, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 854, + 855 + ] + }, + { + "teal": 998, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 856, + 857 + ] + }, + { + "teal": 999, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 858, + 859, + 860 + ] + }, + { + "teal": 1000, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 861 + ] + }, + { + "teal": 1001, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 862, + 863 + ] + }, + { + "teal": 1002, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 864 + ] + }, + { + "teal": 1003, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 865 + ] + }, + { + "teal": 1004, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 866 + ] + }, + { + "teal": 1005, + "source": "contracts/stakingPool.algo.ts:296", + "pc": [ + 867, + 868 + ] + }, + { + "teal": 1009, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 869, + 870 + ] + }, + { + "teal": 1010, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 871 + ] + }, + { + "teal": 1011, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 872, + 873 + ] + }, + { + "teal": 1012, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 874 + ] + }, + { + "teal": 1013, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 875, + 876 + ] + }, + { + "teal": 1014, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 877 + ] + }, + { + "teal": 1015, + "source": "contracts/stakingPool.algo.ts:297", + "pc": [ + 878 + ] + }, + { + "teal": 1019, + "source": "contracts/stakingPool.algo.ts:299", + "pc": [ + 879 + ] + }, + { + "teal": 1020, + "source": "contracts/stakingPool.algo.ts:299", + "pc": [ + 880, + 881 + ] + }, + { + "teal": 1025, + "source": "contracts/stakingPool.algo.ts:300", + "pc": [ + 882, + 883 + ] + }, + { + "teal": 1026, + "source": "contracts/stakingPool.algo.ts:300", + "pc": [ + 884, + 885, + 886 + ] + }, + { + "teal": 1027, + "source": "contracts/stakingPool.algo.ts:300", + "pc": [ + 887 + ] + }, + { + "teal": 1028, + "source": "contracts/stakingPool.algo.ts:300", + "pc": [ + 888 + ] + }, + { + "teal": 1029, + "source": "contracts/stakingPool.algo.ts:300", + "pc": [ + 889 + ] + }, + { + "teal": 1030, + "source": "contracts/stakingPool.algo.ts:300", + "pc": [ + 890, + 891, + 892 + ] + }, + { + "teal": 1036, + "source": "contracts/stakingPool.algo.ts:302", + "pc": [ + 893, + 894 + ] + }, + { + "teal": 1037, + "source": "contracts/stakingPool.algo.ts:302", + "pc": [ + 895 + ] + }, + { + "teal": 1038, + "source": "contracts/stakingPool.algo.ts:302", + "pc": [ + 896 + ] + }, + { + "teal": 1039, + "source": "contracts/stakingPool.algo.ts:302", + "pc": [ + 897 + ] + }, + { + "teal": 1040, + "source": "contracts/stakingPool.algo.ts:302", + "pc": [ + 898, + 899, + 900 + ] + }, + { + "teal": 1048, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 901 + ] + }, + { + "teal": 1049, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 902 + ] + }, + { + "teal": 1050, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 903, + 904 + ] + }, + { + "teal": 1051, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 905, + 906 + ] + }, + { + "teal": 1052, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 907, + 908 + ] + }, + { + "teal": 1056, + "source": "contracts/stakingPool.algo.ts:304", + "pc": [ + 909 + ] + }, + { + "teal": 1057, + "source": "contracts/stakingPool.algo.ts:304", + "pc": [ + 910 + ] + }, + { + "teal": 1058, + "source": "contracts/stakingPool.algo.ts:304", + "pc": [ + 911, + 912 + ] + }, + { + "teal": 1062, + "source": "contracts/stakingPool.algo.ts:305", + "pc": [ + 913 + ] + }, + { + "teal": 1063, + "source": "contracts/stakingPool.algo.ts:305", + "pc": [ + 914 + ] + }, + { + "teal": 1064, + "source": "contracts/stakingPool.algo.ts:305", + "pc": [ + 915 + ] + }, + { + "teal": 1065, + "source": "contracts/stakingPool.algo.ts:305", + "pc": [ + 916, + 917 + ] + }, + { + "teal": 1068, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 918 + ] + }, + { + "teal": 1069, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 919, + 920 + ] + }, + { + "teal": 1072, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 921 + ] + }, + { + "teal": 1073, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 922, + 923 + ] + }, + { + "teal": 1074, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 924 + ] + }, + { + "teal": 1075, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 925 + ] + }, + { + "teal": 1076, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 926, + 927 + ] + }, + { + "teal": 1077, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 928, + 929, + 930 + ] + }, + { + "teal": 1078, + "source": "contracts/stakingPool.algo.ts:303", + "pc": [ + 931, + 932 + ] + }, + { + "teal": 1086, + "source": "contracts/stakingPool.algo.ts:311", + "pc": [ + 933 + ] + }, + { + "teal": 1087, + "source": "contracts/stakingPool.algo.ts:311", + "pc": [ + 934, + 935 + ] + }, + { + "teal": 1088, + "source": "contracts/stakingPool.algo.ts:311", + "pc": [ + 936, + 937 + ] + }, + { + "teal": 1092, + "source": "contracts/stakingPool.algo.ts:312", + "pc": [ + 938, + 939 + ] + }, + { + "teal": 1093, + "source": "contracts/stakingPool.algo.ts:312", + "pc": [ + 940, + 941, + 942 + ] + }, + { + "teal": 1094, + "source": "contracts/stakingPool.algo.ts:312", + "pc": [ + 943 + ] + }, + { + "teal": 1095, + "source": "contracts/stakingPool.algo.ts:312", + "pc": [ + 944, + 945 + ] + }, + { + "teal": 1099, + "source": "contracts/stakingPool.algo.ts:313", + "pc": [ + 946, + 947 + ] + }, + { + "teal": 1100, + "source": "contracts/stakingPool.algo.ts:313", + "pc": [ + 948, + 949 + ] + }, + { + "teal": 1104, + "source": "contracts/stakingPool.algo.ts:314", + "pc": [ + 950, + 951 + ] + }, + { + "teal": 1105, + "source": "contracts/stakingPool.algo.ts:314", + "pc": [ + 952, + 953, + 954 + ] + }, + { + "teal": 1106, + "source": "contracts/stakingPool.algo.ts:314", + "pc": [ + 955 + ] + }, + { + "teal": 1107, + "source": "contracts/stakingPool.algo.ts:314", + "pc": [ + 956, + 957 + ] + }, + { + "teal": 1110, + "source": "contracts/stakingPool.algo.ts:311", + "pc": [ + 958 + ] + }, + { + "teal": 1111, + "source": "contracts/stakingPool.algo.ts:311", + "pc": [ + 959, + 960 + ] + }, + { + "teal": 1114, + "source": "contracts/stakingPool.algo.ts:311", + "pc": [ + 961 + ] + }, + { + "teal": 1118, + "source": "contracts/stakingPool.algo.ts:316", + "pc": [ + 962, + 963 + ] + }, + { + "teal": 1119, + "source": "contracts/stakingPool.algo.ts:316", + "pc": [ + 964, + 965, + 966 + ] + }, + { + "teal": 1120, + "source": "contracts/stakingPool.algo.ts:316", + "pc": [ + 967 + ] + }, + { + "teal": 1121, + "source": "contracts/stakingPool.algo.ts:316", + "pc": [ + 968, + 969 + ] + }, + { + "teal": 1125, + "source": "contracts/stakingPool.algo.ts:317", + "pc": [ + 970, + 971 + ] + }, + { + "teal": 1126, + "source": "contracts/stakingPool.algo.ts:317", + "pc": [ + 972, + 973 + ] + }, + { + "teal": 1127, + "source": "contracts/stakingPool.algo.ts:317", + "pc": [ + 974, + 975 + ] + }, + { + "teal": 1128, + "source": "contracts/stakingPool.algo.ts:317", + "pc": [ + 976, + 977 + ] + }, + { + "teal": 1129, + "source": "contracts/stakingPool.algo.ts:302", + "pc": [ + 978, + 979, + 980 + ] + }, + { + "teal": 1134, + "source": "contracts/stakingPool.algo.ts:322", + "pc": [ + 981, + 982 + ] + }, + { + "teal": 1135, + "source": "contracts/stakingPool.algo.ts:322", + "pc": [ + 983, + 984, + 985 + ] + }, + { + "teal": 1136, + "source": "contracts/stakingPool.algo.ts:322", + "pc": [ + 986 + ] + }, + { + "teal": 1137, + "source": "contracts/stakingPool.algo.ts:322", + "pc": [ + 987, + 988 + ] + }, + { + "teal": 1141, + "source": "contracts/stakingPool.algo.ts:323", + "pc": [ + 989, + 990 + ] + }, + { + "teal": 1142, + "source": "contracts/stakingPool.algo.ts:323", + "pc": [ + 991, + 992 + ] + }, + { + "teal": 1143, + "source": "contracts/stakingPool.algo.ts:323", + "pc": [ + 993, + 994 + ] + }, + { + "teal": 1144, + "source": "contracts/stakingPool.algo.ts:323", + "pc": [ + 995, + 996 + ] + }, + { + "teal": 1154, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 997, + 998 + ] + }, + { + "teal": 1155, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 999, + 1000, + 1001 + ] + }, + { + "teal": 1156, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1002 + ] + }, + { + "teal": 1157, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1003 + ] + }, + { + "teal": 1158, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1004 + ] + }, + { + "teal": 1159, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1005 + ] + }, + { + "teal": 1160, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1006, + 1007, + 1008 + ] + }, + { + "teal": 1161, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1009, + 1010 + ] + }, + { + "teal": 1162, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1011, + 1012, + 1013 + ] + }, + { + "teal": 1163, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1014 + ] + }, + { + "teal": 1164, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1015, + 1016 + ] + }, + { + "teal": 1165, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1017 + ] + }, + { + "teal": 1166, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1018 + ] + }, + { + "teal": 1167, + "source": "contracts/stakingPool.algo.ts:329", + "pc": [ + 1019 + ] + }, + { + "teal": 1171, + "source": "contracts/stakingPool.algo.ts:328", + "errorMessage": "cannot reduce balance below minimum allowed stake unless all is removed", + "pc": [ + 1020 + ] + }, + { + "teal": 1179, + "source": "contracts/stakingPool.algo.ts:336", + "pc": [ + 1021 + ] + }, + { + "teal": 1180, + "source": "contracts/stakingPool.algo.ts:336", + "pc": [ + 1022 + ] + }, + { + "teal": 1181, + "source": "contracts/stakingPool.algo.ts:336", + "pc": [ + 1023, + 1024 + ] + }, + { + "teal": 1185, + "source": "contracts/stakingPool.algo.ts:337", + "pc": [ + 1025, + 1026 + ] + }, + { + "teal": 1186, + "source": "contracts/stakingPool.algo.ts:337", + "pc": [ + 1027, + 1028 + ] + }, + { + "teal": 1190, + "source": "contracts/stakingPool.algo.ts:338", + "pc": [ + 1029, + 1030 + ] + }, + { + "teal": 1191, + "source": "contracts/stakingPool.algo.ts:338", + "pc": [ + 1031, + 1032 + ] + }, + { + "teal": 1195, + "source": "contracts/stakingPool.algo.ts:339", + "pc": [ + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042 + ] + }, + { + "teal": 1196, + "source": "contracts/stakingPool.algo.ts:339", + "pc": [ + 1043, + 1044 + ] + }, + { + "teal": 1199, + "source": "contracts/stakingPool.algo.ts:336", + "pc": [ + 1045 + ] + }, + { + "teal": 1200, + "source": "contracts/stakingPool.algo.ts:336", + "pc": [ + 1046, + 1047 + ] + }, + { + "teal": 1203, + "source": "contracts/stakingPool.algo.ts:336", + "pc": [ + 1048 + ] + }, + { + "teal": 1207, + "source": "contracts/stakingPool.algo.ts:341", + "pc": [ + 1049 + ] + }, + { + "teal": 1208, + "source": "contracts/stakingPool.algo.ts:341", + "pc": [ + 1050, + 1051 + ] + }, + { + "teal": 1213, + "source": "contracts/stakingPool.algo.ts:342", + "pc": [ + 1052, + 1053 + ] + }, + { + "teal": 1214, + "source": "contracts/stakingPool.algo.ts:342", + "pc": [ + 1054, + 1055, + 1056 + ] + }, + { + "teal": 1215, + "source": "contracts/stakingPool.algo.ts:342", + "pc": [ + 1057 + ] + }, + { + "teal": 1216, + "source": "contracts/stakingPool.algo.ts:342", + "pc": [ + 1058 + ] + }, + { + "teal": 1217, + "source": "contracts/stakingPool.algo.ts:342", + "pc": [ + 1059 + ] + }, + { + "teal": 1218, + "source": "contracts/stakingPool.algo.ts:342", + "pc": [ + 1060, + 1061, + 1062 + ] + }, + { + "teal": 1223, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1063, + 1064 + ] + }, + { + "teal": 1224, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1065 + ] + }, + { + "teal": 1225, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1066 + ] + }, + { + "teal": 1226, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1067 + ] + }, + { + "teal": 1227, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1068, + 1069 + ] + }, + { + "teal": 1228, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1070 + ] + }, + { + "teal": 1229, + "source": "contracts/stakingPool.algo.ts:344", + "pc": [ + 1071 + ] + }, + { + "teal": 1233, + "source": "contracts/stakingPool.algo.ts:345", + "pc": [ + 1072, + 1073 + ] + }, + { + "teal": 1234, + "source": "contracts/stakingPool.algo.ts:345", + "pc": [ + 1074 + ] + }, + { + "teal": 1235, + "source": "contracts/stakingPool.algo.ts:345", + "pc": [ + 1075, + 1076 + ] + }, + { + "teal": 1236, + "source": "contracts/stakingPool.algo.ts:345", + "pc": [ + 1077 + ] + }, + { + "teal": 1237, + "source": "contracts/stakingPool.algo.ts:345", + "pc": [ + 1078, + 1079 + ] + }, + { + "teal": 1241, + "source": "contracts/stakingPool.algo.ts:346", + "pc": [ + 1080, + 1081 + ] + }, + { + "teal": 1242, + "source": "contracts/stakingPool.algo.ts:346", + "pc": [ + 1082, + 1083 + ] + }, + { + "teal": 1243, + "source": "contracts/stakingPool.algo.ts:346", + "pc": [ + 1084, + 1085 + ] + }, + { + "teal": 1244, + "source": "contracts/stakingPool.algo.ts:346", + "pc": [ + 1086, + 1087 + ] + }, + { + "teal": 1248, + "source": "contracts/stakingPool.algo.ts:347", + "pc": [ + 1088, + 1089 + ] + }, + { + "teal": 1249, + "source": "contracts/stakingPool.algo.ts:347", + "pc": [ + 1090, + 1091 + ] + }, + { + "teal": 1250, + "source": "contracts/stakingPool.algo.ts:347", + "pc": [ + 1092, + 1093 + ] + }, + { + "teal": 1251, + "source": "contracts/stakingPool.algo.ts:347", + "pc": [ + 1094, + 1095 + ] + }, + { + "teal": 1255, + "source": "contracts/stakingPool.algo.ts:348", + "pc": [ + 1096 + ] + }, + { + "teal": 1256, + "source": "contracts/stakingPool.algo.ts:348", + "pc": [ + 1097, + 1098 + ] + }, + { + "teal": 1261, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1099, + 1100 + ] + }, + { + "teal": 1262, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1101 + ] + }, + { + "teal": 1263, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1102 + ] + }, + { + "teal": 1264, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1103, + 1104 + ] + }, + { + "teal": 1265, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1105 + ] + }, + { + "teal": 1266, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1106, + 1107 + ] + }, + { + "teal": 1267, + "source": "contracts/stakingPool.algo.ts:351", + "pc": [ + 1108 + ] + }, + { + "teal": 1271, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1109, + 1110 + ] + }, + { + "teal": 1272, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1111 + ] + }, + { + "teal": 1273, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1112, + 1113 + ] + }, + { + "teal": 1274, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1114 + ] + }, + { + "teal": 1275, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1115 + ] + }, + { + "teal": 1276, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1116, + 1117 + ] + }, + { + "teal": 1277, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1118 + ] + }, + { + "teal": 1278, + "source": "contracts/stakingPool.algo.ts:353", + "pc": [ + 1119, + 1120 + ] + }, + { + "teal": 1282, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1121, + 1122 + ] + }, + { + "teal": 1283, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1123 + ] + }, + { + "teal": 1284, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1124, + 1125 + ] + }, + { + "teal": 1285, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1126 + ] + }, + { + "teal": 1286, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1127 + ] + }, + { + "teal": 1287, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1128 + ] + }, + { + "teal": 1288, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1129 + ] + }, + { + "teal": 1289, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1130, + 1131 + ] + }, + { + "teal": 1290, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1132 + ] + }, + { + "teal": 1293, + "source": "contracts/stakingPool.algo.ts:354", + "errorMessage": "(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", + "pc": [ + 1133 + ] + }, + { + "teal": 1294, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1134, + 1135 + ] + }, + { + "teal": 1295, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1136 + ] + }, + { + "teal": 1296, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1137 + ] + }, + { + "teal": 1297, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1138 + ] + }, + { + "teal": 1298, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1139 + ] + }, + { + "teal": 1299, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1140, + 1141 + ] + }, + { + "teal": 1300, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1142 + ] + }, + { + "teal": 1301, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1143 + ] + }, + { + "teal": 1302, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1144 + ] + }, + { + "teal": 1303, + "source": "contracts/stakingPool.algo.ts:354", + "pc": [ + 1145, + 1146 + ] + }, + { + "teal": 1307, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1147, + 1148 + ] + }, + { + "teal": 1308, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1149 + ] + }, + { + "teal": 1309, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1150 + ] + }, + { + "teal": 1310, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1151, + 1152 + ] + }, + { + "teal": 1311, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1153 + ] + }, + { + "teal": 1312, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1154 + ] + }, + { + "teal": 1313, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1155 + ] + }, + { + "teal": 1314, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1156, + 1157 + ] + }, + { + "teal": 1315, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1158 + ] + }, + { + "teal": 1318, + "source": "contracts/stakingPool.algo.ts:355", + "errorMessage": "this.stakeAccumulator.value - subtractAmount overflowed 128 bits", + "pc": [ + 1159 + ] + }, + { + "teal": 1319, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1160, + 1161 + ] + }, + { + "teal": 1320, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1162 + ] + }, + { + "teal": 1321, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1163 + ] + }, + { + "teal": 1322, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1164 + ] + }, + { + "teal": 1323, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1165 + ] + }, + { + "teal": 1324, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1166, + 1167 + ] + }, + { + "teal": 1325, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1168 + ] + }, + { + "teal": 1326, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1169 + ] + }, + { + "teal": 1327, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1170 + ] + }, + { + "teal": 1328, + "source": "contracts/stakingPool.algo.ts:355", + "pc": [ + 1171 + ] + }, + { + "teal": 1341, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1172 + ] + }, + { + "teal": 1342, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1173 + ] + }, + { + "teal": 1343, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1174, + 1175 + ] + }, + { + "teal": 1344, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1176, + 1177 + ] + }, + { + "teal": 1345, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1178, + 1179 + ] + }, + { + "teal": 1349, + "source": "contracts/stakingPool.algo.ts:361", + "pc": [ + 1180 + ] + }, + { + "teal": 1350, + "source": "contracts/stakingPool.algo.ts:361", + "pc": [ + 1181 + ] + }, + { + "teal": 1351, + "source": "contracts/stakingPool.algo.ts:361", + "pc": [ + 1182, + 1183 + ] + }, + { + "teal": 1361, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1184 + ] + }, + { + "teal": 1362, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1185 + ] + }, + { + "teal": 1363, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1186 + ] + }, + { + "teal": 1364, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1187, + 1188 + ] + }, + { + "teal": 1365, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1189 + ] + }, + { + "teal": 1366, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1190 + ] + }, + { + "teal": 1367, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1191 + ] + }, + { + "teal": 1368, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1192, + 1193, + 1194 + ] + }, + { + "teal": 1369, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1195 + ] + }, + { + "teal": 1370, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1196 + ] + }, + { + "teal": 1371, + "source": "contracts/stakingPool.algo.ts:363", + "pc": [ + 1197, + 1198 + ] + }, + { + "teal": 1372, + "source": "contracts/stakingPool.algo.ts:364", + "pc": [ + 1199, + 1200 + ] + }, + { + "teal": 1373, + "source": "contracts/stakingPool.algo.ts:364", + "pc": [ + 1201, + 1202 + ] + }, + { + "teal": 1374, + "source": "contracts/stakingPool.algo.ts:365", + "pc": [ + 1203, + 1204 + ] + }, + { + "teal": 1375, + "source": "contracts/stakingPool.algo.ts:365", + "pc": [ + 1205 + ] + }, + { + "teal": 1376, + "source": "contracts/stakingPool.algo.ts:365", + "pc": [ + 1206, + 1207 + ] + }, + { + "teal": 1377, + "source": "contracts/stakingPool.algo.ts:366", + "pc": [ + 1208, + 1209 + ] + }, + { + "teal": 1378, + "source": "contracts/stakingPool.algo.ts:366", + "pc": [ + 1210 + ] + }, + { + "teal": 1379, + "source": "contracts/stakingPool.algo.ts:366", + "pc": [ + 1211, + 1212 + ] + }, + { + "teal": 1380, + "source": "contracts/stakingPool.algo.ts:367", + "pc": [ + 1213, + 1214 + ] + }, + { + "teal": 1381, + "source": "contracts/stakingPool.algo.ts:367", + "pc": [ + 1215, + 1216 + ] + }, + { + "teal": 1382, + "source": "contracts/stakingPool.algo.ts:367", + "pc": [ + 1217 + ] + }, + { + "teal": 1383, + "source": "contracts/stakingPool.algo.ts:367", + "pc": [ + 1218, + 1219 + ] + }, + { + "teal": 1384, + "source": "contracts/stakingPool.algo.ts:367", + "pc": [ + 1220 + ] + }, + { + "teal": 1385, + "source": "contracts/stakingPool.algo.ts:367", + "pc": [ + 1221, + 1222 + ] + }, + { + "teal": 1388, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1223 + ] + }, + { + "teal": 1389, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1224, + 1225 + ] + }, + { + "teal": 1392, + "source": "contracts/stakingPool.algo.ts:360", + "pc": [ + 1226 + ] + }, + { + "teal": 1396, + "source": "contracts/stakingPool.algo.ts:370", + "pc": [ + 1227 + ] + }, + { + "teal": 1403, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 1228, + 1229 + ] + }, + { + "teal": 1404, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 1230 + ] + }, + { + "teal": 1405, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 1231 + ] + }, + { + "teal": 1406, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 1232, + 1233 + ] + }, + { + "teal": 1407, + "source": "contracts/stakingPool.algo.ts:283", + "pc": [ + 1234, + 1235, + 1236 + ] + }, + { + "teal": 1411, + "source": "contracts/stakingPool.algo.ts:373", + "errorMessage": "account not found", + "pc": [ + 1237 + ] + }, + { + "teal": 1412, + "source": "contracts/stakingPool.algo.ts:271", + "pc": [ + 1238 + ] + }, + { + "teal": 1417, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1239, + 1240, + 1241 + ] + }, + { + "teal": 1418, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1242 + ] + }, + { + "teal": 1419, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1243 + ] + }, + { + "teal": 1427, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1244, + 1245, + 1246 + ] + }, + { + "teal": 1430, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1247 + ] + }, + { + "teal": 1431, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1248, + 1249 + ] + }, + { + "teal": 1435, + "source": "contracts/stakingPool.algo.ts:385", + "pc": [ + 1250, + 1251 + ] + }, + { + "teal": 1436, + "source": "contracts/stakingPool.algo.ts:385", + "pc": [ + 1252, + 1253 + ] + }, + { + "teal": 1440, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1254 + ] + }, + { + "teal": 1441, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1255, + 1256 + ] + }, + { + "teal": 1446, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1257, + 1258 + ] + }, + { + "teal": 1447, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1259, + 1260 + ] + }, + { + "teal": 1448, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1261 + ] + }, + { + "teal": 1449, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1262, + 1263, + 1264 + ] + }, + { + "teal": 1454, + "source": "contracts/stakingPool.algo.ts:388", + "pc": [ + 1265, + 1266 + ] + }, + { + "teal": 1455, + "source": "contracts/stakingPool.algo.ts:388", + "pc": [ + 1267, + 1268 + ] + }, + { + "teal": 1456, + "source": "contracts/stakingPool.algo.ts:388", + "pc": [ + 1269 + ] + }, + { + "teal": 1457, + "source": "contracts/stakingPool.algo.ts:388", + "pc": [ + 1270, + 1271, + 1272 + ] + }, + { + "teal": 1462, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1273 + ] + }, + { + "teal": 1463, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1274 + ] + }, + { + "teal": 1464, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1275, + 1276 + ] + }, + { + "teal": 1465, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1277 + ] + }, + { + "teal": 1466, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1278, + 1279 + ] + }, + { + "teal": 1467, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1280, + 1281 + ] + }, + { + "teal": 1468, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1282 + ] + }, + { + "teal": 1469, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1283, + 1284 + ] + }, + { + "teal": 1470, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1285, + 1286 + ] + }, + { + "teal": 1471, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1287, + 1288 + ] + }, + { + "teal": 1472, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1289, + 1290 + ] + }, + { + "teal": 1473, + "source": "contracts/stakingPool.algo.ts:389", + "pc": [ + 1291 + ] + }, + { + "teal": 1478, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1292, + 1293 + ] + }, + { + "teal": 1479, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1294 + ] + }, + { + "teal": 1480, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1295 + ] + }, + { + "teal": 1481, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1296 + ] + }, + { + "teal": 1482, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1297 + ] + }, + { + "teal": 1483, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1298, + 1299 + ] + }, + { + "teal": 1484, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1300 + ] + }, + { + "teal": 1485, + "source": "contracts/stakingPool.algo.ts:391", + "pc": [ + 1301, + 1302 + ] + }, + { + "teal": 1490, + "source": "contracts/stakingPool.algo.ts:392", + "pc": [ + 1303, + 1304 + ] + }, + { + "teal": 1491, + "source": "contracts/stakingPool.algo.ts:392", + "pc": [ + 1305, + 1306, + 1307 + ] + }, + { + "teal": 1492, + "source": "contracts/stakingPool.algo.ts:392", + "pc": [ + 1308, + 1309 + ] + }, + { + "teal": 1493, + "source": "contracts/stakingPool.algo.ts:392", + "pc": [ + 1310 + ] + }, + { + "teal": 1494, + "source": "contracts/stakingPool.algo.ts:392", + "pc": [ + 1311, + 1312, + 1313 + ] + }, + { + "teal": 1500, + "source": "contracts/stakingPool.algo.ts:393", + "pc": [ + 1314, + 1315 + ] + }, + { + "teal": 1501, + "source": "contracts/stakingPool.algo.ts:393", + "pc": [ + 1316, + 1317, + 1318 + ] + }, + { + "teal": 1502, + "source": "contracts/stakingPool.algo.ts:393", + "pc": [ + 1319 + ] + }, + { + "teal": 1503, + "source": "contracts/stakingPool.algo.ts:393", + "pc": [ + 1320 + ] + }, + { + "teal": 1504, + "source": "contracts/stakingPool.algo.ts:393", + "pc": [ + 1321 + ] + }, + { + "teal": 1505, + "source": "contracts/stakingPool.algo.ts:393", + "pc": [ + 1322, + 1323, + 1324 + ] + }, + { + "teal": 1510, + "source": "contracts/stakingPool.algo.ts:394", + "pc": [ + 1325 + ] + }, + { + "teal": 1515, + "source": "contracts/stakingPool.algo.ts:396", + "pc": [ + 1326 + ] + }, + { + "teal": 1516, + "source": "contracts/stakingPool.algo.ts:396", + "pc": [ + 1327, + 1328 + ] + }, + { + "teal": 1521, + "source": "contracts/stakingPool.algo.ts:398", + "pc": [ + 1329, + 1330 + ] + }, + { + "teal": 1522, + "source": "contracts/stakingPool.algo.ts:398", + "pc": [ + 1331 + ] + }, + { + "teal": 1523, + "source": "contracts/stakingPool.algo.ts:398", + "pc": [ + 1332 + ] + }, + { + "teal": 1524, + "source": "contracts/stakingPool.algo.ts:398", + "pc": [ + 1333 + ] + }, + { + "teal": 1525, + "source": "contracts/stakingPool.algo.ts:398", + "pc": [ + 1334, + 1335, + 1336 + ] + }, + { + "teal": 1533, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1337 + ] + }, + { + "teal": 1534, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1338 + ] + }, + { + "teal": 1535, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1339, + 1340 + ] + }, + { + "teal": 1536, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1341, + 1342 + ] + }, + { + "teal": 1537, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1343, + 1344 + ] + }, + { + "teal": 1541, + "source": "contracts/stakingPool.algo.ts:400", + "pc": [ + 1345 + ] + }, + { + "teal": 1542, + "source": "contracts/stakingPool.algo.ts:400", + "pc": [ + 1346 + ] + }, + { + "teal": 1543, + "source": "contracts/stakingPool.algo.ts:400", + "pc": [ + 1347, + 1348 + ] + }, + { + "teal": 1547, + "source": "contracts/stakingPool.algo.ts:401", + "pc": [ + 1349 + ] + }, + { + "teal": 1548, + "source": "contracts/stakingPool.algo.ts:401", + "pc": [ + 1350 + ] + }, + { + "teal": 1549, + "source": "contracts/stakingPool.algo.ts:401", + "pc": [ + 1351 + ] + }, + { + "teal": 1550, + "source": "contracts/stakingPool.algo.ts:401", + "pc": [ + 1352, + 1353 + ] + }, + { + "teal": 1553, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1354 + ] + }, + { + "teal": 1554, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1355, + 1356 + ] + }, + { + "teal": 1557, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1357 + ] + }, + { + "teal": 1558, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1358, + 1359 + ] + }, + { + "teal": 1559, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1360 + ] + }, + { + "teal": 1560, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1361 + ] + }, + { + "teal": 1561, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1362, + 1363 + ] + }, + { + "teal": 1562, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1364, + 1365, + 1366 + ] + }, + { + "teal": 1563, + "source": "contracts/stakingPool.algo.ts:399", + "pc": [ + 1367, + 1368 + ] + }, + { + "teal": 1571, + "source": "contracts/stakingPool.algo.ts:406", + "pc": [ + 1369 + ] + }, + { + "teal": 1572, + "source": "contracts/stakingPool.algo.ts:406", + "pc": [ + 1370, + 1371 + ] + }, + { + "teal": 1573, + "source": "contracts/stakingPool.algo.ts:406", + "pc": [ + 1372, + 1373 + ] + }, + { + "teal": 1577, + "source": "contracts/stakingPool.algo.ts:407", + "pc": [ + 1374, + 1375 + ] + }, + { + "teal": 1578, + "source": "contracts/stakingPool.algo.ts:407", + "pc": [ + 1376, + 1377, + 1378 + ] + }, + { + "teal": 1579, + "source": "contracts/stakingPool.algo.ts:407", + "pc": [ + 1379 + ] + }, + { + "teal": 1580, + "source": "contracts/stakingPool.algo.ts:407", + "pc": [ + 1380, + 1381 + ] + }, + { + "teal": 1584, + "source": "contracts/stakingPool.algo.ts:408", + "pc": [ + 1382, + 1383 + ] + }, + { + "teal": 1585, + "source": "contracts/stakingPool.algo.ts:408", + "pc": [ + 1384, + 1385 + ] + }, + { + "teal": 1589, + "source": "contracts/stakingPool.algo.ts:409", + "pc": [ + 1386, + 1387 + ] + }, + { + "teal": 1590, + "source": "contracts/stakingPool.algo.ts:409", + "pc": [ + 1388, + 1389, + 1390 + ] + }, + { + "teal": 1591, + "source": "contracts/stakingPool.algo.ts:409", + "pc": [ + 1391 + ] + }, + { + "teal": 1592, + "source": "contracts/stakingPool.algo.ts:409", + "pc": [ + 1392, + 1393 + ] + }, + { + "teal": 1595, + "source": "contracts/stakingPool.algo.ts:406", + "pc": [ + 1394 + ] + }, + { + "teal": 1596, + "source": "contracts/stakingPool.algo.ts:406", + "pc": [ + 1395, + 1396 + ] + }, + { + "teal": 1599, + "source": "contracts/stakingPool.algo.ts:406", + "pc": [ + 1397 + ] + }, + { + "teal": 1603, + "source": "contracts/stakingPool.algo.ts:411", + "pc": [ + 1398, + 1399 + ] + }, + { + "teal": 1604, + "source": "contracts/stakingPool.algo.ts:411", + "pc": [ + 1400, + 1401, + 1402 + ] + }, + { + "teal": 1605, + "source": "contracts/stakingPool.algo.ts:411", + "pc": [ + 1403 + ] + }, + { + "teal": 1606, + "source": "contracts/stakingPool.algo.ts:411", + "pc": [ + 1404, + 1405 + ] + }, + { + "teal": 1610, + "source": "contracts/stakingPool.algo.ts:412", + "pc": [ + 1406, + 1407 + ] + }, + { + "teal": 1611, + "source": "contracts/stakingPool.algo.ts:412", + "pc": [ + 1408, + 1409 + ] + }, + { + "teal": 1612, + "source": "contracts/stakingPool.algo.ts:412", + "pc": [ + 1410, + 1411 + ] + }, + { + "teal": 1613, + "source": "contracts/stakingPool.algo.ts:412", + "pc": [ + 1412, + 1413 + ] + }, + { + "teal": 1614, + "source": "contracts/stakingPool.algo.ts:398", + "pc": [ + 1414, + 1415, + 1416 + ] + }, + { + "teal": 1619, + "source": "contracts/stakingPool.algo.ts:417", + "pc": [ + 1417, + 1418 + ] + }, + { + "teal": 1620, + "source": "contracts/stakingPool.algo.ts:417", + "pc": [ + 1419, + 1420, + 1421 + ] + }, + { + "teal": 1621, + "source": "contracts/stakingPool.algo.ts:417", + "pc": [ + 1422 + ] + }, + { + "teal": 1622, + "source": "contracts/stakingPool.algo.ts:417", + "pc": [ + 1423, + 1424 + ] + }, + { + "teal": 1626, + "source": "contracts/stakingPool.algo.ts:418", + "pc": [ + 1425, + 1426 + ] + }, + { + "teal": 1627, + "source": "contracts/stakingPool.algo.ts:418", + "pc": [ + 1427, + 1428 + ] + }, + { + "teal": 1628, + "source": "contracts/stakingPool.algo.ts:418", + "pc": [ + 1429, + 1430 + ] + }, + { + "teal": 1629, + "source": "contracts/stakingPool.algo.ts:418", + "pc": [ + 1431, + 1432 + ] + }, + { + "teal": 1634, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1433, + 1434 + ] + }, + { + "teal": 1635, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1435 + ] + }, + { + "teal": 1636, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1436 + ] + }, + { + "teal": 1637, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1437, + 1438 + ] + }, + { + "teal": 1638, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1439 + ] + }, + { + "teal": 1639, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1440, + 1441 + ] + }, + { + "teal": 1640, + "source": "contracts/stakingPool.algo.ts:422", + "pc": [ + 1442 + ] + }, + { + "teal": 1653, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1443 + ] + }, + { + "teal": 1654, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1444 + ] + }, + { + "teal": 1655, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1445, + 1446 + ] + }, + { + "teal": 1656, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1447, + 1448 + ] + }, + { + "teal": 1657, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1449, + 1450 + ] + }, + { + "teal": 1661, + "source": "contracts/stakingPool.algo.ts:428", + "pc": [ + 1451 + ] + }, + { + "teal": 1662, + "source": "contracts/stakingPool.algo.ts:428", + "pc": [ + 1452 + ] + }, + { + "teal": 1663, + "source": "contracts/stakingPool.algo.ts:428", + "pc": [ + 1453, + 1454 + ] + }, + { + "teal": 1673, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1455 + ] + }, + { + "teal": 1674, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1456 + ] + }, + { + "teal": 1675, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1457 + ] + }, + { + "teal": 1676, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1458, + 1459 + ] + }, + { + "teal": 1677, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1460 + ] + }, + { + "teal": 1678, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1461 + ] + }, + { + "teal": 1679, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1462 + ] + }, + { + "teal": 1680, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1463, + 1464, + 1465 + ] + }, + { + "teal": 1681, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1466 + ] + }, + { + "teal": 1682, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1467 + ] + }, + { + "teal": 1683, + "source": "contracts/stakingPool.algo.ts:430", + "pc": [ + 1468, + 1469 + ] + }, + { + "teal": 1684, + "source": "contracts/stakingPool.algo.ts:431", + "pc": [ + 1470, + 1471 + ] + }, + { + "teal": 1685, + "source": "contracts/stakingPool.algo.ts:431", + "pc": [ + 1472, + 1473 + ] + }, + { + "teal": 1686, + "source": "contracts/stakingPool.algo.ts:432", + "pc": [ + 1474, + 1475 + ] + }, + { + "teal": 1687, + "source": "contracts/stakingPool.algo.ts:432", + "pc": [ + 1476, + 1477 + ] + }, + { + "teal": 1688, + "source": "contracts/stakingPool.algo.ts:433", + "pc": [ + 1478, + 1479 + ] + }, + { + "teal": 1689, + "source": "contracts/stakingPool.algo.ts:433", + "pc": [ + 1480 + ] + }, + { + "teal": 1690, + "source": "contracts/stakingPool.algo.ts:433", + "pc": [ + 1481, + 1482 + ] + }, + { + "teal": 1691, + "source": "contracts/stakingPool.algo.ts:434", + "pc": [ + 1483 + ] + }, + { + "teal": 1692, + "source": "contracts/stakingPool.algo.ts:434", + "pc": [ + 1484, + 1485 + ] + }, + { + "teal": 1693, + "source": "contracts/stakingPool.algo.ts:434", + "pc": [ + 1486 + ] + }, + { + "teal": 1694, + "source": "contracts/stakingPool.algo.ts:434", + "pc": [ + 1487, + 1488 + ] + }, + { + "teal": 1695, + "source": "contracts/stakingPool.algo.ts:434", + "pc": [ + 1489 + ] + }, + { + "teal": 1696, + "source": "contracts/stakingPool.algo.ts:434", + "pc": [ + 1490, + 1491 + ] + }, + { + "teal": 1699, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1492 + ] + }, + { + "teal": 1700, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1493, + 1494 + ] + }, + { + "teal": 1703, + "source": "contracts/stakingPool.algo.ts:427", + "pc": [ + 1495 + ] + }, + { + "teal": 1707, + "source": "contracts/stakingPool.algo.ts:437", + "pc": [ + 1496 + ] + }, + { + "teal": 1714, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1497, + 1498 + ] + }, + { + "teal": 1715, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1499 + ] + }, + { + "teal": 1716, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1500 + ] + }, + { + "teal": 1717, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1501, + 1502 + ] + }, + { + "teal": 1718, + "source": "contracts/stakingPool.algo.ts:387", + "pc": [ + 1503, + 1504, + 1505 + ] + }, + { + "teal": 1722, + "source": "contracts/stakingPool.algo.ts:440", + "errorMessage": "account not found", + "pc": [ + 1506 + ] + }, + { + "teal": 1723, + "source": "contracts/stakingPool.algo.ts:381", + "pc": [ + 1507 + ] + }, + { + "teal": 1728, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1508, + 1509 + ] + }, + { + "teal": 1731, + "source": "contracts/stakingPool.algo.ts:451", + "pc": [ + 1510, + 1511, + 1512 + ] + }, + { + "teal": 1732, + "source": "contracts/stakingPool.algo.ts:451", + "pc": [ + 1513 + ] + }, + { + "teal": 1733, + "source": "contracts/stakingPool.algo.ts:451", + "pc": [ + 1514 + ] + }, + { + "teal": 1734, + "source": "contracts/stakingPool.algo.ts:451", + "pc": [ + 1515, + 1516 + ] + }, + { + "teal": 1735, + "source": "contracts/stakingPool.algo.ts:451", + "pc": [ + 1517 + ] + }, + { + "teal": 1738, + "source": "contracts/stakingPool.algo.ts:451", + "errorMessage": "argument 0 (staker) for getStakerInfo must be a address", + "pc": [ + 1518 + ] + }, + { + "teal": 1741, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1519, + 1520, + 1521 + ] + }, + { + "teal": 1742, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1522 + ] + }, + { + "teal": 1743, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1523 + ] + }, + { + "teal": 1744, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1524 + ] + }, + { + "teal": 1745, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1525 + ] + }, + { + "teal": 1755, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1526, + 1527, + 1528 + ] + }, + { + "teal": 1758, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1529 + ] + }, + { + "teal": 1762, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1530 + ] + }, + { + "teal": 1763, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1531, + 1532 + ] + }, + { + "teal": 1768, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1533, + 1534 + ] + }, + { + "teal": 1769, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1535, + 1536 + ] + }, + { + "teal": 1770, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1537 + ] + }, + { + "teal": 1771, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1538, + 1539, + 1540 + ] + }, + { + "teal": 1776, + "source": "contracts/stakingPool.algo.ts:453", + "pc": [ + 1541, + 1542 + ] + }, + { + "teal": 1777, + "source": "contracts/stakingPool.algo.ts:453", + "pc": [ + 1543, + 1544 + ] + }, + { + "teal": 1778, + "source": "contracts/stakingPool.algo.ts:453", + "pc": [ + 1545 + ] + }, + { + "teal": 1779, + "source": "contracts/stakingPool.algo.ts:453", + "pc": [ + 1546, + 1547, + 1548 + ] + }, + { + "teal": 1784, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1549 + ] + }, + { + "teal": 1785, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1550 + ] + }, + { + "teal": 1786, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1551, + 1552 + ] + }, + { + "teal": 1787, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1553 + ] + }, + { + "teal": 1788, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1554, + 1555 + ] + }, + { + "teal": 1789, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1556, + 1557 + ] + }, + { + "teal": 1790, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1558 + ] + }, + { + "teal": 1791, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1559, + 1560 + ] + }, + { + "teal": 1792, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1561, + 1562 + ] + }, + { + "teal": 1793, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1563, + 1564 + ] + }, + { + "teal": 1794, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1565, + 1566 + ] + }, + { + "teal": 1795, + "source": "contracts/stakingPool.algo.ts:454", + "pc": [ + 1567 + ] + }, + { + "teal": 1801, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1568, + 1569 + ] + }, + { + "teal": 1802, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1570 + ] + }, + { + "teal": 1803, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1571 + ] + }, + { + "teal": 1804, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1572 + ] + }, + { + "teal": 1805, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1573 + ] + }, + { + "teal": 1806, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1574, + 1575 + ] + }, + { + "teal": 1807, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1576 + ] + }, + { + "teal": 1808, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1577, + 1578 + ] + }, + { + "teal": 1809, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1579 + ] + }, + { + "teal": 1810, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1580, + 1581 + ] + }, + { + "teal": 1811, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1582 + ] + }, + { + "teal": 1812, + "source": "contracts/stakingPool.algo.ts:456", + "pc": [ + 1583, + 1584, + 1585 + ] + }, + { + "teal": 1817, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1586, + 1587 + ] + }, + { + "teal": 1818, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1588 + ] + }, + { + "teal": 1819, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1589 + ] + }, + { + "teal": 1820, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1590 + ] + }, + { + "teal": 1821, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1591 + ] + }, + { + "teal": 1822, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1592, + 1593 + ] + }, + { + "teal": 1823, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1594 + ] + }, + { + "teal": 1824, + "source": "contracts/stakingPool.algo.ts:457", + "pc": [ + 1595, + 1596, + 1597 + ] + }, + { + "teal": 1831, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1598, + 1599 + ] + }, + { + "teal": 1832, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1600 + ] + }, + { + "teal": 1833, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1601 + ] + }, + { + "teal": 1834, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1602, + 1603 + ] + }, + { + "teal": 1835, + "source": "contracts/stakingPool.algo.ts:452", + "pc": [ + 1604, + 1605, + 1606 + ] + }, + { + "teal": 1839, + "source": "contracts/stakingPool.algo.ts:460", + "errorMessage": "account not found", + "pc": [ + 1607 + ] + }, + { + "teal": 1843, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1608, + 1609 + ] + }, + { + "teal": 1844, + "source": "contracts/stakingPool.algo.ts:450", + "pc": [ + 1610 + ] + }, + { + "teal": 1849, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1611, + 1612, + 1613 + ] + }, + { + "teal": 1850, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1614 + ] + }, + { + "teal": 1853, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1615, + 1616, + 1617 + ] + }, + { + "teal": 1854, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1618 + ] + }, + { + "teal": 1857, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1619, + 1620, + 1621 + ] + }, + { + "teal": 1858, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1622 + ] + }, + { + "teal": 1859, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1623 + ] + }, + { + "teal": 1860, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1624, + 1625 + ] + }, + { + "teal": 1861, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1626 + ] + }, + { + "teal": 1864, + "source": "contracts/stakingPool.algo.ts:473", + "errorMessage": "argument 2 (staker) for payTokenReward must be a address", + "pc": [ + 1627 + ] + }, + { + "teal": 1867, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1628, + 1629, + 1630 + ] + }, + { + "teal": 1868, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1631 + ] + }, + { + "teal": 1869, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1632 + ] + }, + { + "teal": 1882, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1633, + 1634, + 1635 + ] + }, + { + "teal": 1889, + "source": "contracts/stakingPool.algo.ts:476", + "pc": [ + 1636, + 1637 + ] + }, + { + "teal": 1890, + "source": "contracts/stakingPool.algo.ts:476", + "pc": [ + 1638 + ] + }, + { + "teal": 1891, + "source": "contracts/stakingPool.algo.ts:476", + "pc": [ + 1639 + ] + }, + { + "teal": 1892, + "source": "contracts/stakingPool.algo.ts:476", + "pc": [ + 1640, + 1641 + ] + }, + { + "teal": 1893, + "source": "contracts/stakingPool.algo.ts:476", + "pc": [ + 1642 + ] + }, + { + "teal": 1894, + "source": "contracts/stakingPool.algo.ts:476", + "pc": [ + 1643 + ] + }, + { + "teal": 1897, + "source": "contracts/stakingPool.algo.ts:475", + "errorMessage": "this can only be called via the validator contract", + "pc": [ + 1644 + ] + }, + { + "teal": 1901, + "source": "contracts/stakingPool.algo.ts:479", + "pc": [ + 1645, + 1646 + ] + }, + { + "teal": 1902, + "source": "contracts/stakingPool.algo.ts:479", + "pc": [ + 1647 + ] + }, + { + "teal": 1903, + "source": "contracts/stakingPool.algo.ts:479", + "pc": [ + 1648 + ] + }, + { + "teal": 1904, + "source": "contracts/stakingPool.algo.ts:479", + "pc": [ + 1649 + ] + }, + { + "teal": 1907, + "source": "contracts/stakingPool.algo.ts:479", + "errorMessage": "must be pool 1 in order to be called to pay out token rewards", + "pc": [ + 1650 + ] + }, + { + "teal": 1911, + "source": "contracts/stakingPool.algo.ts:480", + "pc": [ + 1651, + 1652 + ] + }, + { + "teal": 1912, + "source": "contracts/stakingPool.algo.ts:480", + "pc": [ + 1653 + ] + }, + { + "teal": 1913, + "source": "contracts/stakingPool.algo.ts:480", + "pc": [ + 1654 + ] + }, + { + "teal": 1916, + "source": "contracts/stakingPool.algo.ts:480", + "errorMessage": "can only claim token rewards from validator that has them", + "pc": [ + 1655 + ] + }, + { + "teal": 1924, + "source": "contracts/stakingPool.algo.ts:483", + "pc": [ + 1656 + ] + }, + { + "teal": 1925, + "source": "contracts/stakingPool.algo.ts:483", + "pc": [ + 1657, + 1658 + ] + }, + { + "teal": 1926, + "source": "contracts/stakingPool.algo.ts:483", + "pc": [ + 1659, + 1660 + ] + }, + { + "teal": 1930, + "source": "contracts/stakingPool.algo.ts:484", + "pc": [ + 1661, + 1662 + ] + }, + { + "teal": 1931, + "source": "contracts/stakingPool.algo.ts:484", + "pc": [ + 1663, + 1664 + ] + }, + { + "teal": 1935, + "source": "contracts/stakingPool.algo.ts:485", + "pc": [ + 1665, + 1666 + ] + }, + { + "teal": 1936, + "source": "contracts/stakingPool.algo.ts:485", + "pc": [ + 1667, + 1668 + ] + }, + { + "teal": 1940, + "source": "contracts/stakingPool.algo.ts:486", + "pc": [ + 1669, + 1670 + ] + }, + { + "teal": 1941, + "source": "contracts/stakingPool.algo.ts:486", + "pc": [ + 1671, + 1672 + ] + }, + { + "teal": 1944, + "source": "contracts/stakingPool.algo.ts:483", + "pc": [ + 1673 + ] + }, + { + "teal": 1945, + "source": "contracts/stakingPool.algo.ts:483", + "pc": [ + 1674, + 1675 + ] + }, + { + "teal": 1948, + "source": "contracts/stakingPool.algo.ts:483", + "pc": [ + 1676 + ] + }, + { + "teal": 1949, + "source": "contracts/stakingPool.algo.ts:473", + "pc": [ + 1677 + ] + }, + { + "teal": 1954, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1678, + 1679, + 1680 + ] + }, + { + "teal": 1955, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1681, + 1682, + 1683 + ] + }, + { + "teal": 1958, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1684, + 1685, + 1686 + ] + }, + { + "teal": 1959, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1687 + ] + }, + { + "teal": 1960, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1688 + ] + }, + { + "teal": 1972, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1689, + 1690, + 1691 + ] + }, + { + "teal": 1976, + "source": "contracts/stakingPool.algo.ts:500", + "pc": [ + 1692, + 1693, + 1694 + ] + }, + { + "teal": 1979, + "source": "contracts/stakingPool.algo.ts:500", + "errorMessage": "can only be called by owner or manager of validator", + "pc": [ + 1695 + ] + }, + { + "teal": 1983, + "source": "contracts/stakingPool.algo.ts:501", + "pc": [ + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705 + ] + }, + { + "teal": 1984, + "source": "contracts/stakingPool.algo.ts:501", + "pc": [ + 1706, + 1707 + ] + }, + { + "teal": 1985, + "source": "contracts/stakingPool.algo.ts:501", + "pc": [ + 1708 + ] + }, + { + "teal": 1986, + "source": "contracts/stakingPool.algo.ts:499", + "pc": [ + 1709 + ] + }, + { + "teal": 1991, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 1710, + 1711, + 1712 + ] + }, + { + "teal": 1992, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 1713 + ] + }, + { + "teal": 1993, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 1714 + ] + }, + { + "teal": 2004, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 1715, + 1716, + 1717 + ] + }, + { + "teal": 2007, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 1718 + ] + }, + { + "teal": 2008, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 1719, + 1720 + ] + }, + { + "teal": 2015, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1721 + ] + }, + { + "teal": 2016, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1722 + ] + }, + { + "teal": 2017, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1723, + 1724 + ] + }, + { + "teal": 2018, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1725, + 1726 + ] + }, + { + "teal": 2019, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1727, + 1728 + ] + }, + { + "teal": 2023, + "source": "contracts/stakingPool.algo.ts:515", + "pc": [ + 1729 + ] + }, + { + "teal": 2024, + "source": "contracts/stakingPool.algo.ts:515", + "pc": [ + 1730 + ] + }, + { + "teal": 2025, + "source": "contracts/stakingPool.algo.ts:515", + "pc": [ + 1731, + 1732 + ] + }, + { + "teal": 2029, + "source": "contracts/stakingPool.algo.ts:516", + "pc": [ + 1733 + ] + }, + { + "teal": 2030, + "source": "contracts/stakingPool.algo.ts:516", + "pc": [ + 1734 + ] + }, + { + "teal": 2031, + "source": "contracts/stakingPool.algo.ts:516", + "pc": [ + 1735 + ] + }, + { + "teal": 2032, + "source": "contracts/stakingPool.algo.ts:516", + "pc": [ + 1736, + 1737 + ] + }, + { + "teal": 2035, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1738 + ] + }, + { + "teal": 2036, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1739, + 1740 + ] + }, + { + "teal": 2039, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1741 + ] + }, + { + "teal": 2040, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1742, + 1743 + ] + }, + { + "teal": 2041, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1744 + ] + }, + { + "teal": 2042, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1745 + ] + }, + { + "teal": 2043, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1746, + 1747 + ] + }, + { + "teal": 2044, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1748, + 1749, + 1750 + ] + }, + { + "teal": 2045, + "source": "contracts/stakingPool.algo.ts:514", + "pc": [ + 1751, + 1752 + ] + }, + { + "teal": 2049, + "source": "contracts/stakingPool.algo.ts:523", + "pc": [ + 1753, + 1754 + ] + }, + { + "teal": 2050, + "source": "contracts/stakingPool.algo.ts:523", + "pc": [ + 1755, + 1756, + 1757 + ] + }, + { + "teal": 2051, + "source": "contracts/stakingPool.algo.ts:523", + "pc": [ + 1758 + ] + }, + { + "teal": 2052, + "source": "contracts/stakingPool.algo.ts:523", + "pc": [ + 1759, + 1760 + ] + }, + { + "teal": 2056, + "source": "contracts/stakingPool.algo.ts:524", + "pc": [ + 1761, + 1762 + ] + }, + { + "teal": 2057, + "source": "contracts/stakingPool.algo.ts:524", + "pc": [ + 1763, + 1764 + ] + }, + { + "teal": 2061, + "source": "contracts/stakingPool.algo.ts:525", + "pc": [ + 1765, + 1766 + ] + }, + { + "teal": 2062, + "source": "contracts/stakingPool.algo.ts:525", + "pc": [ + 1767, + 1768 + ] + }, + { + "teal": 2063, + "source": "contracts/stakingPool.algo.ts:525", + "pc": [ + 1769, + 1770 + ] + }, + { + "teal": 2064, + "source": "contracts/stakingPool.algo.ts:525", + "pc": [ + 1771 + ] + }, + { + "teal": 2065, + "source": "contracts/stakingPool.algo.ts:525", + "pc": [ + 1772 + ] + }, + { + "teal": 2066, + "source": "contracts/stakingPool.algo.ts:525", + "pc": [ + 1773, + 1774 + ] + }, + { + "teal": 2070, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1775, + 1776 + ] + }, + { + "teal": 2071, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1777 + ] + }, + { + "teal": 2072, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1778, + 1779 + ] + }, + { + "teal": 2073, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1780 + ] + }, + { + "teal": 2074, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1781, + 1782 + ] + }, + { + "teal": 2075, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1783 + ] + }, + { + "teal": 2076, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1784 + ] + }, + { + "teal": 2077, + "source": "contracts/stakingPool.algo.ts:528", + "pc": [ + 1785, + 1786 + ] + }, + { + "teal": 2081, + "source": "contracts/stakingPool.algo.ts:530", + "pc": [ + 1787, + 1788 + ] + }, + { + "teal": 2082, + "source": "contracts/stakingPool.algo.ts:530", + "pc": [ + 1789, + 1790 + ] + }, + { + "teal": 2083, + "source": "contracts/stakingPool.algo.ts:530", + "pc": [ + 1791 + ] + }, + { + "teal": 2086, + "source": "contracts/stakingPool.algo.ts:530", + "errorMessage": "can't call epochBalanceUpdate in same epoch as prior call", + "pc": [ + 1792 + ] + }, + { + "teal": 2090, + "source": "contracts/stakingPool.algo.ts:532", + "pc": [ + 1793, + 1794, + 1795 + ] + }, + { + "teal": 2094, + "source": "contracts/stakingPool.algo.ts:535", + "pc": [ + 1796, + 1797 + ] + }, + { + "teal": 2095, + "source": "contracts/stakingPool.algo.ts:535", + "pc": [ + 1798, + 1799 + ] + }, + { + "teal": 2096, + "source": "contracts/stakingPool.algo.ts:535", + "pc": [ + 1800 + ] + }, + { + "teal": 2100, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1801, + 1802 + ] + }, + { + "teal": 2101, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1803 + ] + }, + { + "teal": 2102, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1804 + ] + }, + { + "teal": 2103, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1805 + ] + }, + { + "teal": 2104, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1806, + 1807 + ] + }, + { + "teal": 2105, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1808 + ] + }, + { + "teal": 2106, + "source": "contracts/stakingPool.algo.ts:536", + "pc": [ + 1809 + ] + }, + { + "teal": 2110, + "source": "contracts/stakingPool.algo.ts:541", + "pc": [ + 1810, + 1811 + ] + }, + { + "teal": 2111, + "source": "contracts/stakingPool.algo.ts:541", + "pc": [ + 1812, + 1813, + 1814 + ] + }, + { + "teal": 2112, + "source": "contracts/stakingPool.algo.ts:541", + "pc": [ + 1815 + ] + }, + { + "teal": 2113, + "source": "contracts/stakingPool.algo.ts:541", + "pc": [ + 1816 + ] + }, + { + "teal": 2114, + "source": "contracts/stakingPool.algo.ts:541", + "pc": [ + 1817 + ] + }, + { + "teal": 2115, + "source": "contracts/stakingPool.algo.ts:541", + "pc": [ + 1818, + 1819 + ] + }, + { + "teal": 2119, + "source": "contracts/stakingPool.algo.ts:542", + "pc": [ + 1820, + 1821, + 1822 + ] + }, + { + "teal": 2120, + "source": "contracts/stakingPool.algo.ts:542", + "pc": [ + 1823, + 1824 + ] + }, + { + "teal": 2124, + "source": "contracts/stakingPool.algo.ts:543", + "pc": [ + 1825, + 1826 + ] + }, + { + "teal": 2125, + "source": "contracts/stakingPool.algo.ts:543", + "pc": [ + 1827, + 1828 + ] + }, + { + "teal": 2130, + "source": "contracts/stakingPool.algo.ts:548", + "pc": [ + 1829, + 1830 + ] + }, + { + "teal": 2131, + "source": "contracts/stakingPool.algo.ts:548", + "pc": [ + 1831, + 1832, + 1833 + ] + }, + { + "teal": 2137, + "source": "contracts/stakingPool.algo.ts:549", + "pc": [ + 1834, + 1835 + ] + }, + { + "teal": 2138, + "source": "contracts/stakingPool.algo.ts:549", + "pc": [ + 1836 + ] + }, + { + "teal": 2139, + "source": "contracts/stakingPool.algo.ts:549", + "pc": [ + 1837 + ] + }, + { + "teal": 2140, + "source": "contracts/stakingPool.algo.ts:549", + "pc": [ + 1838 + ] + }, + { + "teal": 2141, + "source": "contracts/stakingPool.algo.ts:549", + "pc": [ + 1839, + 1840, + 1841 + ] + }, + { + "teal": 2149, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1842 + ] + }, + { + "teal": 2150, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1843 + ] + }, + { + "teal": 2151, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1844, + 1845 + ] + }, + { + "teal": 2152, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1846, + 1847 + ] + }, + { + "teal": 2153, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1848, + 1849 + ] + }, + { + "teal": 2157, + "source": "contracts/stakingPool.algo.ts:552", + "pc": [ + 1850 + ] + }, + { + "teal": 2158, + "source": "contracts/stakingPool.algo.ts:552", + "pc": [ + 1851 + ] + }, + { + "teal": 2159, + "source": "contracts/stakingPool.algo.ts:552", + "pc": [ + 1852, + 1853 + ] + }, + { + "teal": 2163, + "source": "contracts/stakingPool.algo.ts:553", + "pc": [ + 1854 + ] + }, + { + "teal": 2164, + "source": "contracts/stakingPool.algo.ts:553", + "pc": [ + 1855 + ] + }, + { + "teal": 2165, + "source": "contracts/stakingPool.algo.ts:553", + "pc": [ + 1856 + ] + }, + { + "teal": 2166, + "source": "contracts/stakingPool.algo.ts:553", + "pc": [ + 1857, + 1858 + ] + }, + { + "teal": 2167, + "source": "contracts/stakingPool.algo.ts:553", + "pc": [ + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868 + ] + }, + { + "teal": 2168, + "source": "contracts/stakingPool.algo.ts:553", + "pc": [ + 1869, + 1870 + ] + }, + { + "teal": 2171, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1871 + ] + }, + { + "teal": 2172, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1872, + 1873 + ] + }, + { + "teal": 2175, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1874 + ] + }, + { + "teal": 2176, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1875, + 1876 + ] + }, + { + "teal": 2177, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1877 + ] + }, + { + "teal": 2178, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1878 + ] + }, + { + "teal": 2179, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1879, + 1880 + ] + }, + { + "teal": 2180, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1881, + 1882, + 1883 + ] + }, + { + "teal": 2181, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1884 + ] + }, + { + "teal": 2182, + "source": "contracts/stakingPool.algo.ts:551", + "pc": [ + 1885, + 1886 + ] + }, + { + "teal": 2186, + "source": "contracts/stakingPool.algo.ts:555", + "pc": [ + 1887, + 1888 + ] + }, + { + "teal": 2187, + "source": "contracts/stakingPool.algo.ts:555", + "pc": [ + 1889, + 1890 + ] + }, + { + "teal": 2188, + "source": "contracts/stakingPool.algo.ts:555", + "pc": [ + 1891 + ] + }, + { + "teal": 2189, + "source": "contracts/stakingPool.algo.ts:555", + "pc": [ + 1892, + 1893 + ] + }, + { + "teal": 2195, + "source": "contracts/stakingPool.algo.ts:560", + "pc": [ + 1894, + 1895 + ] + }, + { + "teal": 2196, + "source": "contracts/stakingPool.algo.ts:560", + "pc": [ + 1896 + ] + }, + { + "teal": 2197, + "source": "contracts/stakingPool.algo.ts:560", + "pc": [ + 1897 + ] + }, + { + "teal": 2198, + "source": "contracts/stakingPool.algo.ts:560", + "pc": [ + 1898 + ] + }, + { + "teal": 2199, + "source": "contracts/stakingPool.algo.ts:560", + "pc": [ + 1899, + 1900, + 1901 + ] + }, + { + "teal": 2207, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1902 + ] + }, + { + "teal": 2208, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1903 + ] + }, + { + "teal": 2209, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1904, + 1905 + ] + }, + { + "teal": 2210, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1906, + 1907 + ] + }, + { + "teal": 2211, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1908, + 1909 + ] + }, + { + "teal": 2215, + "source": "contracts/stakingPool.algo.ts:562", + "pc": [ + 1910 + ] + }, + { + "teal": 2216, + "source": "contracts/stakingPool.algo.ts:562", + "pc": [ + 1911 + ] + }, + { + "teal": 2217, + "source": "contracts/stakingPool.algo.ts:562", + "pc": [ + 1912, + 1913 + ] + }, + { + "teal": 2221, + "source": "contracts/stakingPool.algo.ts:563", + "pc": [ + 1914 + ] + }, + { + "teal": 2222, + "source": "contracts/stakingPool.algo.ts:563", + "pc": [ + 1915 + ] + }, + { + "teal": 2223, + "source": "contracts/stakingPool.algo.ts:563", + "pc": [ + 1916 + ] + }, + { + "teal": 2224, + "source": "contracts/stakingPool.algo.ts:563", + "pc": [ + 1917, + 1918 + ] + }, + { + "teal": 2227, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1919 + ] + }, + { + "teal": 2228, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1920, + 1921 + ] + }, + { + "teal": 2231, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1922 + ] + }, + { + "teal": 2232, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1923, + 1924 + ] + }, + { + "teal": 2233, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1925 + ] + }, + { + "teal": 2234, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1926 + ] + }, + { + "teal": 2235, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1927, + 1928 + ] + }, + { + "teal": 2236, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1929, + 1930, + 1931 + ] + }, + { + "teal": 2237, + "source": "contracts/stakingPool.algo.ts:561", + "pc": [ + 1932, + 1933 + ] + }, + { + "teal": 2238, + "source": "contracts/stakingPool.algo.ts:560", + "pc": [ + 1934, + 1935, + 1936 + ] + }, + { + "teal": 2246, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1937 + ] + }, + { + "teal": 2247, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1938 + ] + }, + { + "teal": 2248, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1939, + 1940 + ] + }, + { + "teal": 2249, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1941, + 1942 + ] + }, + { + "teal": 2250, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1943, + 1944 + ] + }, + { + "teal": 2254, + "source": "contracts/stakingPool.algo.ts:568", + "pc": [ + 1945, + 1946 + ] + }, + { + "teal": 2255, + "source": "contracts/stakingPool.algo.ts:568", + "pc": [ + 1947, + 1948 + ] + }, + { + "teal": 2259, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1949 + ] + }, + { + "teal": 2260, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1950 + ] + }, + { + "teal": 2261, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1951 + ] + }, + { + "teal": 2262, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1952, + 1953 + ] + }, + { + "teal": 2263, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1954 + ] + }, + { + "teal": 2264, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1955 + ] + }, + { + "teal": 2265, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1956 + ] + }, + { + "teal": 2266, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1957, + 1958, + 1959 + ] + }, + { + "teal": 2267, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1960 + ] + }, + { + "teal": 2268, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1961 + ] + }, + { + "teal": 2269, + "source": "contracts/stakingPool.algo.ts:569", + "pc": [ + 1962, + 1963 + ] + }, + { + "teal": 2272, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1964 + ] + }, + { + "teal": 2273, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1965, + 1966 + ] + }, + { + "teal": 2276, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1967 + ] + }, + { + "teal": 2277, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1968, + 1969 + ] + }, + { + "teal": 2278, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1970 + ] + }, + { + "teal": 2279, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1971 + ] + }, + { + "teal": 2280, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1972, + 1973 + ] + }, + { + "teal": 2281, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1974, + 1975, + 1976 + ] + }, + { + "teal": 2282, + "source": "contracts/stakingPool.algo.ts:567", + "pc": [ + 1977, + 1978 + ] + }, + { + "teal": 2292, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 1979 + ] + }, + { + "teal": 2293, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 1980 + ] + }, + { + "teal": 2294, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 1981, + 1982 + ] + }, + { + "teal": 2295, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 1983, + 1984, + 1985, + 1986, + 1987, + 1988 + ] + }, + { + "teal": 2296, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 1989, + 1990 + ] + }, + { + "teal": 2300, + "source": "contracts/stakingPool.algo.ts:577", + "pc": [ + 1991 + ] + }, + { + "teal": 2301, + "source": "contracts/stakingPool.algo.ts:577", + "pc": [ + 1992 + ] + }, + { + "teal": 2302, + "source": "contracts/stakingPool.algo.ts:577", + "pc": [ + 1993, + 1994 + ] + }, + { + "teal": 2306, + "source": "contracts/stakingPool.algo.ts:578", + "pc": [ + 1995 + ] + }, + { + "teal": 2307, + "source": "contracts/stakingPool.algo.ts:578", + "pc": [ + 1996 + ] + }, + { + "teal": 2308, + "source": "contracts/stakingPool.algo.ts:578", + "pc": [ + 1997 + ] + }, + { + "teal": 2309, + "source": "contracts/stakingPool.algo.ts:578", + "pc": [ + 1998, + 1999 + ] + }, + { + "teal": 2312, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2000 + ] + }, + { + "teal": 2313, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2001, + 2002 + ] + }, + { + "teal": 2316, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2003 + ] + }, + { + "teal": 2317, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2004, + 2005 + ] + }, + { + "teal": 2318, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2006 + ] + }, + { + "teal": 2319, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2007 + ] + }, + { + "teal": 2320, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2008, + 2009 + ] + }, + { + "teal": 2321, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2010, + 2011, + 2012 + ] + }, + { + "teal": 2322, + "source": "contracts/stakingPool.algo.ts:576", + "pc": [ + 2013, + 2014 + ] + }, + { + "teal": 2326, + "source": "contracts/stakingPool.algo.ts:580", + "pc": [ + 2015, + 2016 + ] + }, + { + "teal": 2327, + "source": "contracts/stakingPool.algo.ts:580", + "pc": [ + 2017, + 2018, + 2019 + ] + }, + { + "teal": 2328, + "source": "contracts/stakingPool.algo.ts:580", + "pc": [ + 2020 + ] + }, + { + "teal": 2329, + "source": "contracts/stakingPool.algo.ts:580", + "pc": [ + 2021, + 2022 + ] + }, + { + "teal": 2333, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2023, + 2024 + ] + }, + { + "teal": 2334, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2025, + 2026 + ] + }, + { + "teal": 2335, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2027 + ] + }, + { + "teal": 2336, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2028, + 2029 + ] + }, + { + "teal": 2337, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2030 + ] + }, + { + "teal": 2338, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2031 + ] + }, + { + "teal": 2339, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2032, + 2033 + ] + }, + { + "teal": 2340, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2034, + 2035 + ] + }, + { + "teal": 2341, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2036 + ] + }, + { + "teal": 2342, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2037 + ] + }, + { + "teal": 2343, + "source": "contracts/stakingPool.algo.ts:586", + "pc": [ + 2038, + 2039 + ] + }, + { + "teal": 2347, + "source": "contracts/stakingPool.algo.ts:587", + "pc": [ + 2040 + ] + }, + { + "teal": 2348, + "source": "contracts/stakingPool.algo.ts:587", + "pc": [ + 2041, + 2042 + ] + }, + { + "teal": 2352, + "source": "contracts/stakingPool.algo.ts:588", + "pc": [ + 2043, + 2044, + 2045 + ] + }, + { + "teal": 2353, + "source": "contracts/stakingPool.algo.ts:588", + "pc": [ + 2046, + 2047 + ] + }, + { + "teal": 2358, + "source": "contracts/stakingPool.algo.ts:596", + "pc": [ + 2048, + 2049 + ] + }, + { + "teal": 2359, + "source": "contracts/stakingPool.algo.ts:596", + "pc": [ + 2050, + 2051, + 2052 + ] + }, + { + "teal": 2360, + "source": "contracts/stakingPool.algo.ts:596", + "pc": [ + 2053 + ] + }, + { + "teal": 2361, + "source": "contracts/stakingPool.algo.ts:596", + "pc": [ + 2054, + 2055 + ] + }, + { + "teal": 2362, + "source": "contracts/stakingPool.algo.ts:596", + "pc": [ + 2056 + ] + }, + { + "teal": 2363, + "source": "contracts/stakingPool.algo.ts:596", + "pc": [ + 2057, + 2058, + 2059 + ] + }, + { + "teal": 2368, + "source": "contracts/stakingPool.algo.ts:597", + "pc": [ + 2060 + ] + }, + { + "teal": 2369, + "source": "contracts/stakingPool.algo.ts:597", + "pc": [ + 2061, + 2062 + ] + }, + { + "teal": 2374, + "source": "contracts/stakingPool.algo.ts:603", + "pc": [ + 2063 + ] + }, + { + "teal": 2375, + "source": "contracts/stakingPool.algo.ts:603", + "pc": [ + 2064, + 2065 + ] + }, + { + "teal": 2379, + "source": "contracts/stakingPool.algo.ts:604", + "pc": [ + 2066 + ] + }, + { + "teal": 2380, + "source": "contracts/stakingPool.algo.ts:604", + "pc": [ + 2067, + 2068 + ] + }, + { + "teal": 2384, + "source": "contracts/stakingPool.algo.ts:605", + "pc": [ + 2069 + ] + }, + { + "teal": 2385, + "source": "contracts/stakingPool.algo.ts:605", + "pc": [ + 2070, + 2071 + ] + }, + { + "teal": 2389, + "source": "contracts/stakingPool.algo.ts:606", + "pc": [ + 2072 + ] + }, + { + "teal": 2390, + "source": "contracts/stakingPool.algo.ts:606", + "pc": [ + 2073, + 2074 + ] + }, + { + "teal": 2395, + "source": "contracts/stakingPool.algo.ts:607", + "pc": [ + 2075, + 2076 + ] + }, + { + "teal": 2396, + "source": "contracts/stakingPool.algo.ts:607", + "pc": [ + 2077, + 2078, + 2079 + ] + }, + { + "teal": 2402, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2080, + 2081 + ] + }, + { + "teal": 2403, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2082, + 2083 + ] + }, + { + "teal": 2404, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2084, + 2085, + 2086 + ] + }, + { + "teal": 2405, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2087 + ] + }, + { + "teal": 2406, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2088, + 2089 + ] + }, + { + "teal": 2407, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2090 + ] + }, + { + "teal": 2408, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2091, + 2092 + ] + }, + { + "teal": 2409, + "source": "contracts/stakingPool.algo.ts:609", + "pc": [ + 2093 + ] + }, + { + "teal": 2410, + "source": "contracts/stakingPool.algo.ts:608", + "pc": [ + 2094, + 2095 + ] + }, + { + "teal": 2415, + "source": "contracts/stakingPool.algo.ts:613", + "pc": [ + 2096, + 2097 + ] + }, + { + "teal": 2416, + "source": "contracts/stakingPool.algo.ts:613", + "pc": [ + 2098, + 2099 + ] + }, + { + "teal": 2417, + "source": "contracts/stakingPool.algo.ts:613", + "pc": [ + 2100, + 2101, + 2102 + ] + }, + { + "teal": 2418, + "source": "contracts/stakingPool.algo.ts:613", + "pc": [ + 2103 + ] + }, + { + "teal": 2419, + "source": "contracts/stakingPool.algo.ts:613", + "pc": [ + 2104 + ] + }, + { + "teal": 2420, + "source": "contracts/stakingPool.algo.ts:613", + "pc": [ + 2105, + 2106, + 2107 + ] + }, + { + "teal": 2425, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2108, + 2109 + ] + }, + { + "teal": 2426, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2110 + ] + }, + { + "teal": 2427, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2111, + 2112 + ] + }, + { + "teal": 2428, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2113 + ] + }, + { + "teal": 2429, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2114 + ] + }, + { + "teal": 2430, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2115 + ] + }, + { + "teal": 2431, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2116, + 2117 + ] + }, + { + "teal": 2432, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2118 + ] + }, + { + "teal": 2433, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2119 + ] + }, + { + "teal": 2434, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2120, + 2121 + ] + }, + { + "teal": 2435, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2122 + ] + }, + { + "teal": 2436, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2123 + ] + }, + { + "teal": 2437, + "source": "contracts/stakingPool.algo.ts:619", + "pc": [ + 2124, + 2125 + ] + }, + { + "teal": 2441, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2126, + 2127 + ] + }, + { + "teal": 2442, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2128, + 2129, + 2130 + ] + }, + { + "teal": 2443, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2131 + ] + }, + { + "teal": 2444, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2132, + 2133 + ] + }, + { + "teal": 2445, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2134 + ] + }, + { + "teal": 2446, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2135 + ] + }, + { + "teal": 2447, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2136, + 2137 + ] + }, + { + "teal": 2448, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2138 + ] + }, + { + "teal": 2449, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2139 + ] + }, + { + "teal": 2450, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2140 + ] + }, + { + "teal": 2451, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2141 + ] + }, + { + "teal": 2452, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2142 + ] + }, + { + "teal": 2455, + "source": "contracts/stakingPool.algo.ts:622", + "errorMessage": "wideRatio failed", + "pc": [ + 2143 + ] + }, + { + "teal": 2456, + "source": "contracts/stakingPool.algo.ts:622", + "pc": [ + 2144, + 2145 + ] + }, + { + "teal": 2464, + "source": "contracts/stakingPool.algo.ts:625", + "pc": [ + 2146, + 2147 + ] + }, + { + "teal": 2465, + "source": "contracts/stakingPool.algo.ts:625", + "pc": [ + 2148 + ] + }, + { + "teal": 2466, + "source": "contracts/stakingPool.algo.ts:625", + "pc": [ + 2149 + ] + }, + { + "teal": 2467, + "source": "contracts/stakingPool.algo.ts:625", + "pc": [ + 2150, + 2151, + 2152 + ] + }, + { + "teal": 2473, + "source": "contracts/stakingPool.algo.ts:630", + "pc": [ + 2153, + 2154 + ] + }, + { + "teal": 2474, + "source": "contracts/stakingPool.algo.ts:630", + "pc": [ + 2155, + 2156 + ] + }, + { + "teal": 2475, + "source": "contracts/stakingPool.algo.ts:630", + "pc": [ + 2157 + ] + }, + { + "teal": 2476, + "source": "contracts/stakingPool.algo.ts:630", + "pc": [ + 2158, + 2159, + 2160 + ] + }, + { + "teal": 2481, + "source": "contracts/stakingPool.algo.ts:631", + "pc": [ + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2170, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184 + ] + }, + { + "teal": 2482, + "source": "contracts/stakingPool.algo.ts:631", + "pc": [ + 2185 + ] + }, + { + "teal": 2486, + "source": "contracts/stakingPool.algo.ts:632", + "pc": [ + 2186 + ] + }, + { + "teal": 2494, + "source": "contracts/stakingPool.algo.ts:636", + "pc": [ + 2187, + 2188 + ] + }, + { + "teal": 2495, + "source": "contracts/stakingPool.algo.ts:636", + "pc": [ + 2189, + 2190, + 2191 + ] + }, + { + "teal": 2503, + "source": "contracts/stakingPool.algo.ts:643", + "pc": [ + 2192, + 2193 + ] + }, + { + "teal": 2504, + "source": "contracts/stakingPool.algo.ts:643", + "pc": [ + 2194, + 2195 + ] + }, + { + "teal": 2505, + "source": "contracts/stakingPool.algo.ts:643", + "pc": [ + 2196, + 2197, + 2198 + ] + }, + { + "teal": 2506, + "source": "contracts/stakingPool.algo.ts:643", + "pc": [ + 2199 + ] + }, + { + "teal": 2507, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2200 + ] + }, + { + "teal": 2508, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2201 + ] + }, + { + "teal": 2509, + "source": "contracts/stakingPool.algo.ts:644", + "pc": [ + 2202, + 2203 + ] + }, + { + "teal": 2510, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2204 + ] + }, + { + "teal": 2511, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2205 + ] + }, + { + "teal": 2512, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2206 + ] + }, + { + "teal": 2513, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2207 + ] + }, + { + "teal": 2514, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2208 + ] + }, + { + "teal": 2517, + "source": "contracts/stakingPool.algo.ts:642", + "errorMessage": "wideRatio failed", + "pc": [ + 2209 + ] + }, + { + "teal": 2518, + "source": "contracts/stakingPool.algo.ts:642", + "pc": [ + 2210, + 2211 + ] + }, + { + "teal": 2522, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2212, + 2213 + ] + }, + { + "teal": 2523, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2214, + 2215 + ] + }, + { + "teal": 2524, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2216 + ] + }, + { + "teal": 2525, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2217 + ] + }, + { + "teal": 2526, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2218, + 2219 + ] + }, + { + "teal": 2527, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2220, + 2221, + 2222 + ] + }, + { + "teal": 2528, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2223 + ] + }, + { + "teal": 2529, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2224 + ] + }, + { + "teal": 2530, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2225 + ] + }, + { + "teal": 2531, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2226 + ] + }, + { + "teal": 2532, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2227 + ] + }, + { + "teal": 2533, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2228 + ] + }, + { + "teal": 2536, + "source": "contracts/stakingPool.algo.ts:647", + "errorMessage": "wideRatio failed", + "pc": [ + 2229 + ] + }, + { + "teal": 2537, + "source": "contracts/stakingPool.algo.ts:647", + "pc": [ + 2230, + 2231 + ] + }, + { + "teal": 2542, + "source": "contracts/stakingPool.algo.ts:649", + "pc": [ + 2232, + 2233 + ] + }, + { + "teal": 2543, + "source": "contracts/stakingPool.algo.ts:649", + "pc": [ + 2234, + 2235 + ] + }, + { + "teal": 2544, + "source": "contracts/stakingPool.algo.ts:649", + "pc": [ + 2236, + 2237 + ] + }, + { + "teal": 2545, + "source": "contracts/stakingPool.algo.ts:649", + "pc": [ + 2238 + ] + }, + { + "teal": 2546, + "source": "contracts/stakingPool.algo.ts:649", + "pc": [ + 2239 + ] + }, + { + "teal": 2547, + "source": "contracts/stakingPool.algo.ts:649", + "pc": [ + 2240, + 2241, + 2242 + ] + }, + { + "teal": 2552, + "source": "contracts/stakingPool.algo.ts:650", + "pc": [ + 2243, + 2244 + ] + }, + { + "teal": 2553, + "source": "contracts/stakingPool.algo.ts:650", + "pc": [ + 2245, + 2246 + ] + }, + { + "teal": 2554, + "source": "contracts/stakingPool.algo.ts:650", + "pc": [ + 2247 + ] + }, + { + "teal": 2555, + "source": "contracts/stakingPool.algo.ts:650", + "pc": [ + 2248, + 2249 + ] + }, + { + "teal": 2560, + "source": "contracts/stakingPool.algo.ts:653", + "pc": [ + 2250, + 2251 + ] + }, + { + "teal": 2561, + "source": "contracts/stakingPool.algo.ts:653", + "pc": [ + 2252, + 2253 + ] + }, + { + "teal": 2562, + "source": "contracts/stakingPool.algo.ts:653", + "pc": [ + 2254 + ] + }, + { + "teal": 2563, + "source": "contracts/stakingPool.algo.ts:653", + "pc": [ + 2255, + 2256 + ] + }, + { + "teal": 2571, + "source": "contracts/stakingPool.algo.ts:654", + "pc": [ + 2257 + ] + }, + { + "teal": 2572, + "source": "contracts/stakingPool.algo.ts:654", + "pc": [ + 2258 + ] + }, + { + "teal": 2573, + "source": "contracts/stakingPool.algo.ts:654", + "pc": [ + 2259, + 2260 + ] + }, + { + "teal": 2577, + "source": "contracts/stakingPool.algo.ts:655", + "pc": [ + 2261, + 2262 + ] + }, + { + "teal": 2578, + "source": "contracts/stakingPool.algo.ts:655", + "pc": [ + 2263, + 2264 + ] + }, + { + "teal": 2582, + "source": "contracts/stakingPool.algo.ts:656", + "pc": [ + 2265, + 2266 + ] + }, + { + "teal": 2583, + "source": "contracts/stakingPool.algo.ts:656", + "pc": [ + 2267 + ] + }, + { + "teal": 2584, + "source": "contracts/stakingPool.algo.ts:656", + "pc": [ + 2268 + ] + }, + { + "teal": 2585, + "source": "contracts/stakingPool.algo.ts:656", + "pc": [ + 2269, + 2270 + ] + }, + { + "teal": 2586, + "source": "contracts/stakingPool.algo.ts:656", + "pc": [ + 2271, + 2272 + ] + }, + { + "teal": 2590, + "source": "contracts/stakingPool.algo.ts:657", + "pc": [ + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2298, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308 + ] + }, + { + "teal": 2591, + "source": "contracts/stakingPool.algo.ts:657", + "pc": [ + 2309, + 2310 + ] + }, + { + "teal": 2594, + "source": "contracts/stakingPool.algo.ts:654", + "pc": [ + 2311 + ] + }, + { + "teal": 2595, + "source": "contracts/stakingPool.algo.ts:654", + "pc": [ + 2312, + 2313 + ] + }, + { + "teal": 2598, + "source": "contracts/stakingPool.algo.ts:654", + "pc": [ + 2314 + ] + }, + { + "teal": 2602, + "source": "contracts/stakingPool.algo.ts:660", + "pc": [ + 2315, + 2316 + ] + }, + { + "teal": 2603, + "source": "contracts/stakingPool.algo.ts:660", + "pc": [ + 2317, + 2318 + ] + }, + { + "teal": 2604, + "source": "contracts/stakingPool.algo.ts:636", + "pc": [ + 2319, + 2320, + 2321 + ] + }, + { + "teal": 2609, + "source": "contracts/stakingPool.algo.ts:661", + "pc": [ + 2322, + 2323 + ] + }, + { + "teal": 2610, + "source": "contracts/stakingPool.algo.ts:661", + "pc": [ + 2324, + 2325, + 2326 + ] + }, + { + "teal": 2611, + "source": "contracts/stakingPool.algo.ts:661", + "pc": [ + 2327 + ] + }, + { + "teal": 2612, + "source": "contracts/stakingPool.algo.ts:661", + "pc": [ + 2328 + ] + }, + { + "teal": 2613, + "source": "contracts/stakingPool.algo.ts:661", + "pc": [ + 2329 + ] + }, + { + "teal": 2614, + "source": "contracts/stakingPool.algo.ts:661", + "pc": [ + 2330, + 2331, + 2332 + ] + }, + { + "teal": 2622, + "source": "contracts/stakingPool.algo.ts:665", + "pc": [ + 2333, + 2334 + ] + }, + { + "teal": 2623, + "source": "contracts/stakingPool.algo.ts:665", + "pc": [ + 2335, + 2336 + ] + }, + { + "teal": 2624, + "source": "contracts/stakingPool.algo.ts:665", + "pc": [ + 2337, + 2338, + 2339 + ] + }, + { + "teal": 2625, + "source": "contracts/stakingPool.algo.ts:665", + "pc": [ + 2340 + ] + }, + { + "teal": 2626, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2341 + ] + }, + { + "teal": 2627, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2342 + ] + }, + { + "teal": 2628, + "source": "contracts/stakingPool.algo.ts:666", + "pc": [ + 2343, + 2344 + ] + }, + { + "teal": 2629, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2345 + ] + }, + { + "teal": 2630, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2346 + ] + }, + { + "teal": 2631, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2347 + ] + }, + { + "teal": 2632, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2348 + ] + }, + { + "teal": 2633, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2349 + ] + }, + { + "teal": 2636, + "source": "contracts/stakingPool.algo.ts:664", + "errorMessage": "wideRatio failed", + "pc": [ + 2350 + ] + }, + { + "teal": 2637, + "source": "contracts/stakingPool.algo.ts:664", + "pc": [ + 2351, + 2352 + ] + }, + { + "teal": 2641, + "source": "contracts/stakingPool.algo.ts:670", + "pc": [ + 2353, + 2354 + ] + }, + { + "teal": 2642, + "source": "contracts/stakingPool.algo.ts:670", + "pc": [ + 2355, + 2356 + ] + }, + { + "teal": 2643, + "source": "contracts/stakingPool.algo.ts:670", + "pc": [ + 2357 + ] + }, + { + "teal": 2644, + "source": "contracts/stakingPool.algo.ts:670", + "pc": [ + 2358, + 2359 + ] + }, + { + "teal": 2649, + "source": "contracts/stakingPool.algo.ts:677", + "pc": [ + 2360, + 2361 + ] + }, + { + "teal": 2650, + "source": "contracts/stakingPool.algo.ts:677", + "pc": [ + 2362 + ] + }, + { + "teal": 2651, + "source": "contracts/stakingPool.algo.ts:677", + "pc": [ + 2363 + ] + }, + { + "teal": 2652, + "source": "contracts/stakingPool.algo.ts:677", + "pc": [ + 2364, + 2365, + 2366 + ] + }, + { + "teal": 2657, + "source": "contracts/stakingPool.algo.ts:680", + "pc": [ + 2367 + ] + }, + { + "teal": 2658, + "source": "contracts/stakingPool.algo.ts:680", + "pc": [ + 2368, + 2369 + ] + }, + { + "teal": 2664, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2370, + 2371 + ] + }, + { + "teal": 2665, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2372, + 2373, + 2374 + ] + }, + { + "teal": 2666, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2375, + 2376 + ] + }, + { + "teal": 2667, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2377, + 2378, + 2379 + ] + }, + { + "teal": 2668, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2380 + ] + }, + { + "teal": 2669, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2381 + ] + }, + { + "teal": 2670, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2382, + 2383, + 2384 + ] + }, + { + "teal": 2671, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2385, + 2386 + ] + }, + { + "teal": 2672, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2387, + 2388, + 2389 + ] + }, + { + "teal": 2673, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2390, + 2391 + ] + }, + { + "teal": 2674, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2392 + ] + }, + { + "teal": 2675, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2393, + 2394 + ] + }, + { + "teal": 2676, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2395, + 2396, + 2397 + ] + }, + { + "teal": 2677, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2398, + 2399 + ] + }, + { + "teal": 2678, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2400 + ] + }, + { + "teal": 2679, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2401 + ] + }, + { + "teal": 2680, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2402, + 2403 + ] + }, + { + "teal": 2681, + "source": "contracts/stakingPool.algo.ts:683", + "pc": [ + 2404 + ] + }, + { + "teal": 2682, + "source": "contracts/stakingPool.algo.ts:682", + "pc": [ + 2405 + ] + }, + { + "teal": 2685, + "source": "contracts/stakingPool.algo.ts:681", + "pc": [ + 2406, + 2407, + 2408 + ] + }, + { + "teal": 2690, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2409, + 2410 + ] + }, + { + "teal": 2691, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2411, + 2412 + ] + }, + { + "teal": 2692, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2413 + ] + }, + { + "teal": 2693, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2414, + 2415, + 2416 + ] + }, + { + "teal": 2694, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2417, + 2418 + ] + }, + { + "teal": 2695, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2419, + 2420, + 2421 + ] + }, + { + "teal": 2698, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2422, + 2423 + ] + }, + { + "teal": 2701, + "source": "contracts/stakingPool.algo.ts:685", + "pc": [ + 2424, + 2425 + ] + }, + { + "teal": 2709, + "source": "contracts/stakingPool.algo.ts:686", + "pc": [ + 2426 + ] + }, + { + "teal": 2710, + "source": "contracts/stakingPool.algo.ts:686", + "pc": [ + 2427 + ] + }, + { + "teal": 2711, + "source": "contracts/stakingPool.algo.ts:686", + "pc": [ + 2428, + 2429 + ] + }, + { + "teal": 2715, + "source": "contracts/stakingPool.algo.ts:687", + "pc": [ + 2430, + 2431 + ] + }, + { + "teal": 2716, + "source": "contracts/stakingPool.algo.ts:687", + "pc": [ + 2432, + 2433 + ] + }, + { + "teal": 2720, + "source": "contracts/stakingPool.algo.ts:688", + "pc": [ + 2434, + 2435 + ] + }, + { + "teal": 2721, + "source": "contracts/stakingPool.algo.ts:688", + "pc": [ + 2436, + 2437, + 2438 + ] + }, + { + "teal": 2722, + "source": "contracts/stakingPool.algo.ts:688", + "pc": [ + 2439, + 2440 + ] + }, + { + "teal": 2726, + "source": "contracts/stakingPool.algo.ts:689", + "pc": [ + 2441, + 2442, + 2443, + 2444, + 2445, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495 + ] + }, + { + "teal": 2727, + "source": "contracts/stakingPool.algo.ts:689", + "pc": [ + 2496, + 2497 + ] + }, + { + "teal": 2730, + "source": "contracts/stakingPool.algo.ts:686", + "pc": [ + 2498 + ] + }, + { + "teal": 2731, + "source": "contracts/stakingPool.algo.ts:686", + "pc": [ + 2499, + 2500 + ] + }, + { + "teal": 2734, + "source": "contracts/stakingPool.algo.ts:686", + "pc": [ + 2501 + ] + }, + { + "teal": 2740, + "source": "contracts/stakingPool.algo.ts:692", + "pc": [ + 2502, + 2503 + ] + }, + { + "teal": 2741, + "source": "contracts/stakingPool.algo.ts:692", + "pc": [ + 2504, + 2505 + ] + }, + { + "teal": 2742, + "source": "contracts/stakingPool.algo.ts:692", + "pc": [ + 2506 + ] + }, + { + "teal": 2743, + "source": "contracts/stakingPool.algo.ts:692", + "pc": [ + 2507 + ] + }, + { + "teal": 2744, + "source": "contracts/stakingPool.algo.ts:692", + "pc": [ + 2508 + ] + }, + { + "teal": 2745, + "source": "contracts/stakingPool.algo.ts:692", + "pc": [ + 2509, + 2510, + 2511 + ] + }, + { + "teal": 2754, + "source": "contracts/stakingPool.algo.ts:693", + "pc": [ + 2512 + ] + }, + { + "teal": 2755, + "source": "contracts/stakingPool.algo.ts:693", + "pc": [ + 2513 + ] + }, + { + "teal": 2756, + "source": "contracts/stakingPool.algo.ts:693", + "pc": [ + 2514, + 2515 + ] + }, + { + "teal": 2760, + "source": "contracts/stakingPool.algo.ts:694", + "pc": [ + 2516, + 2517 + ] + }, + { + "teal": 2761, + "source": "contracts/stakingPool.algo.ts:694", + "pc": [ + 2518, + 2519 + ] + }, + { + "teal": 2762, + "source": "contracts/stakingPool.algo.ts:694", + "pc": [ + 2520 + ] + }, + { + "teal": 2763, + "source": "contracts/stakingPool.algo.ts:694", + "pc": [ + 2521, + 2522 + ] + }, + { + "teal": 2767, + "source": "contracts/stakingPool.algo.ts:695", + "pc": [ + 2523, + 2524 + ] + }, + { + "teal": 2768, + "source": "contracts/stakingPool.algo.ts:695", + "pc": [ + 2525, + 2526, + 2527 + ] + }, + { + "teal": 2769, + "source": "contracts/stakingPool.algo.ts:695", + "pc": [ + 2528, + 2529 + ] + }, + { + "teal": 2773, + "source": "contracts/stakingPool.algo.ts:696", + "pc": [ + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2541, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547 + ] + }, + { + "teal": 2774, + "source": "contracts/stakingPool.algo.ts:696", + "pc": [ + 2548, + 2549 + ] + }, + { + "teal": 2777, + "source": "contracts/stakingPool.algo.ts:693", + "pc": [ + 2550 + ] + }, + { + "teal": 2778, + "source": "contracts/stakingPool.algo.ts:693", + "pc": [ + 2551, + 2552 + ] + }, + { + "teal": 2781, + "source": "contracts/stakingPool.algo.ts:693", + "pc": [ + 2553 + ] + }, + { + "teal": 2790, + "source": "contracts/stakingPool.algo.ts:708", + "pc": [ + 2554 + ] + }, + { + "teal": 2791, + "source": "contracts/stakingPool.algo.ts:708", + "pc": [ + 2555, + 2556 + ] + }, + { + "teal": 2796, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2557, + 2558 + ] + }, + { + "teal": 2797, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2559 + ] + }, + { + "teal": 2798, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2560 + ] + }, + { + "teal": 2799, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2561 + ] + }, + { + "teal": 2800, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2562, + 2563, + 2564 + ] + }, + { + "teal": 2801, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2565, + 2566 + ] + }, + { + "teal": 2802, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2567 + ] + }, + { + "teal": 2803, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2568 + ] + }, + { + "teal": 2804, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2569 + ] + }, + { + "teal": 2807, + "source": "contracts/stakingPool.algo.ts:732", + "pc": [ + 2570, + 2571, + 2572 + ] + }, + { + "teal": 2812, + "source": "contracts/stakingPool.algo.ts:733", + "pc": [ + 2573 + ] + }, + { + "teal": 2813, + "source": "contracts/stakingPool.algo.ts:733", + "pc": [ + 2574, + 2575 + ] + }, + { + "teal": 2817, + "source": "contracts/stakingPool.algo.ts:734", + "pc": [ + 2576, + 2577 + ] + }, + { + "teal": 2818, + "source": "contracts/stakingPool.algo.ts:734", + "pc": [ + 2578, + 2579 + ] + }, + { + "teal": 2822, + "source": "contracts/stakingPool.algo.ts:736", + "pc": [ + 2580, + 2581 + ] + }, + { + "teal": 2823, + "source": "contracts/stakingPool.algo.ts:736", + "pc": [ + 2582, + 2583 + ] + }, + { + "teal": 2827, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2584 + ] + }, + { + "teal": 2828, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2585, + 2586 + ] + }, + { + "teal": 2833, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2587, + 2588 + ] + }, + { + "teal": 2834, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2589, + 2590 + ] + }, + { + "teal": 2835, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2591 + ] + }, + { + "teal": 2836, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2592, + 2593, + 2594 + ] + }, + { + "teal": 2841, + "source": "contracts/stakingPool.algo.ts:738", + "pc": [ + 2595, + 2596 + ] + }, + { + "teal": 2842, + "source": "contracts/stakingPool.algo.ts:738", + "pc": [ + 2597, + 2598 + ] + }, + { + "teal": 2843, + "source": "contracts/stakingPool.algo.ts:738", + "pc": [ + 2599 + ] + }, + { + "teal": 2844, + "source": "contracts/stakingPool.algo.ts:738", + "pc": [ + 2600, + 2601, + 2602 + ] + }, + { + "teal": 2849, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2603 + ] + }, + { + "teal": 2850, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2604 + ] + }, + { + "teal": 2851, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2605, + 2606 + ] + }, + { + "teal": 2852, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2607 + ] + }, + { + "teal": 2853, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2608, + 2609 + ] + }, + { + "teal": 2854, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2610, + 2611 + ] + }, + { + "teal": 2855, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2612 + ] + }, + { + "teal": 2856, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2613, + 2614 + ] + }, + { + "teal": 2857, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2615, + 2616 + ] + }, + { + "teal": 2858, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2617, + 2618 + ] + }, + { + "teal": 2859, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2619, + 2620 + ] + }, + { + "teal": 2860, + "source": "contracts/stakingPool.algo.ts:739", + "pc": [ + 2621 + ] + }, + { + "teal": 2865, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2622, + 2623 + ] + }, + { + "teal": 2866, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2624 + ] + }, + { + "teal": 2867, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2625 + ] + }, + { + "teal": 2868, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2626 + ] + }, + { + "teal": 2869, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2627 + ] + }, + { + "teal": 2870, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2628, + 2629 + ] + }, + { + "teal": 2871, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2630 + ] + }, + { + "teal": 2872, + "source": "contracts/stakingPool.algo.ts:741", + "pc": [ + 2631, + 2632 + ] + }, + { + "teal": 2877, + "source": "contracts/stakingPool.algo.ts:742", + "pc": [ + 2633, + 2634 + ] + }, + { + "teal": 2878, + "source": "contracts/stakingPool.algo.ts:742", + "pc": [ + 2635, + 2636, + 2637 + ] + }, + { + "teal": 2879, + "source": "contracts/stakingPool.algo.ts:742", + "pc": [ + 2638, + 2639 + ] + }, + { + "teal": 2880, + "source": "contracts/stakingPool.algo.ts:742", + "pc": [ + 2640 + ] + }, + { + "teal": 2881, + "source": "contracts/stakingPool.algo.ts:742", + "pc": [ + 2641, + 2642, + 2643 + ] + }, + { + "teal": 2887, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2644, + 2645 + ] + }, + { + "teal": 2888, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2646, + 2647, + 2648 + ] + }, + { + "teal": 2889, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2649 + ] + }, + { + "teal": 2890, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2650, + 2651 + ] + }, + { + "teal": 2891, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2652 + ] + }, + { + "teal": 2892, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2653, + 2654, + 2655 + ] + }, + { + "teal": 2897, + "source": "contracts/stakingPool.algo.ts:746", + "pc": [ + 2656, + 2657 + ] + }, + { + "teal": 2898, + "source": "contracts/stakingPool.algo.ts:746", + "pc": [ + 2658, + 2659 + ] + }, + { + "teal": 2899, + "source": "contracts/stakingPool.algo.ts:746", + "pc": [ + 2660, + 2661, + 2662 + ] + }, + { + "teal": 2900, + "source": "contracts/stakingPool.algo.ts:746", + "pc": [ + 2663 + ] + }, + { + "teal": 2901, + "source": "contracts/stakingPool.algo.ts:746", + "pc": [ + 2664 + ] + }, + { + "teal": 2902, + "source": "contracts/stakingPool.algo.ts:746", + "pc": [ + 2665, + 2666 + ] + }, + { + "teal": 2903, + "source": "contracts/stakingPool.algo.ts:743", + "pc": [ + 2667, + 2668, + 2669 + ] + }, + { + "teal": 2908, + "source": "contracts/stakingPool.algo.ts:750", + "pc": [ + 2670, + 2671 + ] + }, + { + "teal": 2909, + "source": "contracts/stakingPool.algo.ts:750", + "pc": [ + 2672, + 2673 + ] + }, + { + "teal": 2910, + "source": "contracts/stakingPool.algo.ts:750", + "pc": [ + 2674, + 2675, + 2676 + ] + }, + { + "teal": 2911, + "source": "contracts/stakingPool.algo.ts:750", + "pc": [ + 2677 + ] + }, + { + "teal": 2912, + "source": "contracts/stakingPool.algo.ts:750", + "pc": [ + 2678 + ] + }, + { + "teal": 2913, + "source": "contracts/stakingPool.algo.ts:750", + "pc": [ + 2679, + 2680 + ] + }, + { + "teal": 2918, + "source": "contracts/stakingPool.algo.ts:754", + "pc": [ + 2681, + 2682 + ] + }, + { + "teal": 2919, + "source": "contracts/stakingPool.algo.ts:754", + "pc": [ + 2683, + 2684 + ] + }, + { + "teal": 2920, + "source": "contracts/stakingPool.algo.ts:754", + "pc": [ + 2685 + ] + }, + { + "teal": 2921, + "source": "contracts/stakingPool.algo.ts:754", + "pc": [ + 2686, + 2687, + 2688 + ] + }, + { + "teal": 2926, + "source": "contracts/stakingPool.algo.ts:755", + "pc": [ + 2689, + 2690 + ] + }, + { + "teal": 2927, + "source": "contracts/stakingPool.algo.ts:755", + "pc": [ + 2691, + 2692 + ] + }, + { + "teal": 2928, + "source": "contracts/stakingPool.algo.ts:755", + "pc": [ + 2693, + 2694, + 2695 + ] + }, + { + "teal": 2929, + "source": "contracts/stakingPool.algo.ts:755", + "pc": [ + 2696 + ] + }, + { + "teal": 2930, + "source": "contracts/stakingPool.algo.ts:755", + "pc": [ + 2697 + ] + }, + { + "teal": 2931, + "source": "contracts/stakingPool.algo.ts:755", + "pc": [ + 2698, + 2699 + ] + }, + { + "teal": 2935, + "source": "contracts/stakingPool.algo.ts:756", + "pc": [ + 2700, + 2701 + ] + }, + { + "teal": 2936, + "source": "contracts/stakingPool.algo.ts:756", + "pc": [ + 2702, + 2703 + ] + }, + { + "teal": 2937, + "source": "contracts/stakingPool.algo.ts:756", + "pc": [ + 2704 + ] + }, + { + "teal": 2938, + "source": "contracts/stakingPool.algo.ts:756", + "pc": [ + 2705, + 2706 + ] + }, + { + "teal": 2939, + "source": "contracts/stakingPool.algo.ts:756", + "pc": [ + 2707 + ] + }, + { + "teal": 2940, + "source": "contracts/stakingPool.algo.ts:756", + "pc": [ + 2708, + 2709 + ] + }, + { + "teal": 2945, + "source": "contracts/stakingPool.algo.ts:758", + "pc": [ + 2710, + 2711 + ] + }, + { + "teal": 2946, + "source": "contracts/stakingPool.algo.ts:758", + "pc": [ + 2712 + ] + }, + { + "teal": 2947, + "source": "contracts/stakingPool.algo.ts:758", + "pc": [ + 2713 + ] + }, + { + "teal": 2948, + "source": "contracts/stakingPool.algo.ts:758", + "pc": [ + 2714, + 2715, + 2716 + ] + }, + { + "teal": 2956, + "source": "contracts/stakingPool.algo.ts:761", + "pc": [ + 2717, + 2718 + ] + }, + { + "teal": 2957, + "source": "contracts/stakingPool.algo.ts:761", + "pc": [ + 2719, + 2720, + 2721 + ] + }, + { + "teal": 2958, + "source": "contracts/stakingPool.algo.ts:761", + "pc": [ + 2722 + ] + }, + { + "teal": 2959, + "source": "contracts/stakingPool.algo.ts:761", + "pc": [ + 2723, + 2724 + ] + }, + { + "teal": 2960, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2725 + ] + }, + { + "teal": 2961, + "source": "contracts/stakingPool.algo.ts:761", + "pc": [ + 2726, + 2727 + ] + }, + { + "teal": 2962, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2728, + 2729 + ] + }, + { + "teal": 2963, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2730, + 2731 + ] + }, + { + "teal": 2964, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2732 + ] + }, + { + "teal": 2965, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2733, + 2734 + ] + }, + { + "teal": 2966, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2735 + ] + }, + { + "teal": 2967, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2736, + 2737 + ] + }, + { + "teal": 2968, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2738 + ] + }, + { + "teal": 2969, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2739 + ] + }, + { + "teal": 2970, + "source": "contracts/stakingPool.algo.ts:762", + "pc": [ + 2740, + 2741 + ] + }, + { + "teal": 2971, + "source": "contracts/stakingPool.algo.ts:762", + "pc": [ + 2742 + ] + }, + { + "teal": 2972, + "source": "contracts/stakingPool.algo.ts:762", + "pc": [ + 2743, + 2744 + ] + }, + { + "teal": 2973, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2745 + ] + }, + { + "teal": 2974, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2746 + ] + }, + { + "teal": 2975, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2747 + ] + }, + { + "teal": 2976, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2748 + ] + }, + { + "teal": 2977, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2749 + ] + }, + { + "teal": 2978, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2750 + ] + }, + { + "teal": 2981, + "source": "contracts/stakingPool.algo.ts:760", + "errorMessage": "wideRatio failed", + "pc": [ + 2751 + ] + }, + { + "teal": 2982, + "source": "contracts/stakingPool.algo.ts:760", + "pc": [ + 2752, + 2753 + ] + }, + { + "teal": 2986, + "source": "contracts/stakingPool.algo.ts:767", + "pc": [ + 2754, + 2755 + ] + }, + { + "teal": 2987, + "source": "contracts/stakingPool.algo.ts:767", + "pc": [ + 2756, + 2757 + ] + }, + { + "teal": 2988, + "source": "contracts/stakingPool.algo.ts:767", + "pc": [ + 2758 + ] + }, + { + "teal": 2989, + "source": "contracts/stakingPool.algo.ts:767", + "pc": [ + 2759, + 2760 + ] + }, + { + "teal": 2993, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2761, + 2762 + ] + }, + { + "teal": 2994, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2763, + 2764 + ] + }, + { + "teal": 2995, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2765, + 2766 + ] + }, + { + "teal": 2996, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2767, + 2768, + 2769 + ] + }, + { + "teal": 2997, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2770 + ] + }, + { + "teal": 2998, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2771, + 2772 + ] + }, + { + "teal": 2999, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2773 + ] + }, + { + "teal": 3000, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2774 + ] + }, + { + "teal": 3001, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2775 + ] + }, + { + "teal": 3002, + "source": "contracts/stakingPool.algo.ts:768", + "pc": [ + 2776, + 2777 + ] + }, + { + "teal": 3006, + "source": "contracts/stakingPool.algo.ts:769", + "pc": [ + 2778, + 2779 + ] + }, + { + "teal": 3007, + "source": "contracts/stakingPool.algo.ts:769", + "pc": [ + 2780, + 2781 + ] + }, + { + "teal": 3008, + "source": "contracts/stakingPool.algo.ts:769", + "pc": [ + 2782 + ] + }, + { + "teal": 3009, + "source": "contracts/stakingPool.algo.ts:769", + "pc": [ + 2783, + 2784 + ] + }, + { + "teal": 3017, + "source": "contracts/stakingPool.algo.ts:773", + "pc": [ + 2785, + 2786 + ] + }, + { + "teal": 3018, + "source": "contracts/stakingPool.algo.ts:773", + "pc": [ + 2787, + 2788, + 2789 + ] + }, + { + "teal": 3019, + "source": "contracts/stakingPool.algo.ts:773", + "pc": [ + 2790 + ] + }, + { + "teal": 3020, + "source": "contracts/stakingPool.algo.ts:773", + "pc": [ + 2791, + 2792 + ] + }, + { + "teal": 3021, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2793 + ] + }, + { + "teal": 3022, + "source": "contracts/stakingPool.algo.ts:773", + "pc": [ + 2794, + 2795 + ] + }, + { + "teal": 3023, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2796, + 2797 + ] + }, + { + "teal": 3024, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2798, + 2799 + ] + }, + { + "teal": 3025, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2800 + ] + }, + { + "teal": 3026, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2801, + 2802 + ] + }, + { + "teal": 3027, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2803 + ] + }, + { + "teal": 3028, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2804, + 2805 + ] + }, + { + "teal": 3029, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2806 + ] + }, + { + "teal": 3030, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2807 + ] + }, + { + "teal": 3031, + "source": "contracts/stakingPool.algo.ts:774", + "pc": [ + 2808, + 2809 + ] + }, + { + "teal": 3032, + "source": "contracts/stakingPool.algo.ts:774", + "pc": [ + 2810 + ] + }, + { + "teal": 3033, + "source": "contracts/stakingPool.algo.ts:774", + "pc": [ + 2811, + 2812 + ] + }, + { + "teal": 3034, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2813 + ] + }, + { + "teal": 3035, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2814 + ] + }, + { + "teal": 3036, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2815 + ] + }, + { + "teal": 3037, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2816 + ] + }, + { + "teal": 3038, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2817 + ] + }, + { + "teal": 3039, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2818 + ] + }, + { + "teal": 3042, + "source": "contracts/stakingPool.algo.ts:772", + "errorMessage": "wideRatio failed", + "pc": [ + 2819 + ] + }, + { + "teal": 3043, + "source": "contracts/stakingPool.algo.ts:772", + "pc": [ + 2820, + 2821 + ] + }, + { + "teal": 3047, + "source": "contracts/stakingPool.algo.ts:778", + "pc": [ + 2822, + 2823 + ] + }, + { + "teal": 3048, + "source": "contracts/stakingPool.algo.ts:778", + "pc": [ + 2824, + 2825 + ] + }, + { + "teal": 3049, + "source": "contracts/stakingPool.algo.ts:778", + "pc": [ + 2826 + ] + }, + { + "teal": 3050, + "source": "contracts/stakingPool.algo.ts:778", + "pc": [ + 2827, + 2828 + ] + }, + { + "teal": 3054, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2829, + 2830 + ] + }, + { + "teal": 3055, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2831, + 2832 + ] + }, + { + "teal": 3056, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2833, + 2834 + ] + }, + { + "teal": 3057, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2835, + 2836, + 2837 + ] + }, + { + "teal": 3058, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2838 + ] + }, + { + "teal": 3059, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2839, + 2840 + ] + }, + { + "teal": 3060, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2841 + ] + }, + { + "teal": 3061, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2842 + ] + }, + { + "teal": 3062, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2843 + ] + }, + { + "teal": 3063, + "source": "contracts/stakingPool.algo.ts:781", + "pc": [ + 2844, + 2845 + ] + }, + { + "teal": 3067, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2846, + 2847 + ] + }, + { + "teal": 3068, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2848, + 2849 + ] + }, + { + "teal": 3069, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2850, + 2851 + ] + }, + { + "teal": 3070, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2852, + 2853, + 2854 + ] + }, + { + "teal": 3071, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2855 + ] + }, + { + "teal": 3072, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2856, + 2857 + ] + }, + { + "teal": 3073, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2858 + ] + }, + { + "teal": 3074, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2859 + ] + }, + { + "teal": 3075, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2860 + ] + }, + { + "teal": 3076, + "source": "contracts/stakingPool.algo.ts:782", + "pc": [ + 2861, + 2862 + ] + }, + { + "teal": 3080, + "source": "contracts/stakingPool.algo.ts:783", + "pc": [ + 2863, + 2864 + ] + }, + { + "teal": 3081, + "source": "contracts/stakingPool.algo.ts:783", + "pc": [ + 2865, + 2866 + ] + }, + { + "teal": 3082, + "source": "contracts/stakingPool.algo.ts:783", + "pc": [ + 2867 + ] + }, + { + "teal": 3083, + "source": "contracts/stakingPool.algo.ts:783", + "pc": [ + 2868, + 2869 + ] + }, + { + "teal": 3087, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2870, + 2871 + ] + }, + { + "teal": 3088, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2872 + ] + }, + { + "teal": 3089, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2873 + ] + }, + { + "teal": 3090, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2874, + 2875 + ] + }, + { + "teal": 3091, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2876 + ] + }, + { + "teal": 3092, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2877, + 2878 + ] + }, + { + "teal": 3093, + "source": "contracts/stakingPool.algo.ts:785", + "pc": [ + 2879 + ] + }, + { + "teal": 3104, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2880, + 2881 + ] + }, + { + "teal": 3105, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2882 + ] + }, + { + "teal": 3106, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2883 + ] + }, + { + "teal": 3107, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2884, + 2885 + ] + }, + { + "teal": 3108, + "source": "contracts/stakingPool.algo.ts:737", + "pc": [ + 2886, + 2887, + 2888 + ] + }, + { + "teal": 3113, + "source": "contracts/stakingPool.algo.ts:793", + "pc": [ + 2889, + 2890 + ] + }, + { + "teal": 3114, + "source": "contracts/stakingPool.algo.ts:793", + "pc": [ + 2891 + ] + }, + { + "teal": 3115, + "source": "contracts/stakingPool.algo.ts:793", + "pc": [ + 2892, + 2893 + ] + }, + { + "teal": 3116, + "source": "contracts/stakingPool.algo.ts:793", + "pc": [ + 2894 + ] + }, + { + "teal": 3117, + "source": "contracts/stakingPool.algo.ts:793", + "pc": [ + 2895, + 2896 + ] + }, + { + "teal": 3122, + "source": "contracts/stakingPool.algo.ts:797", + "pc": [ + 2897, + 2898 + ] + }, + { + "teal": 3123, + "source": "contracts/stakingPool.algo.ts:797", + "pc": [ + 2899 + ] + }, + { + "teal": 3124, + "source": "contracts/stakingPool.algo.ts:797", + "pc": [ + 2900 + ] + }, + { + "teal": 3125, + "source": "contracts/stakingPool.algo.ts:797", + "pc": [ + 2901, + 2902, + 2903 + ] + }, + { + "teal": 3130, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 2904 + ] + }, + { + "teal": 3131, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 2905, + 2906 + ] + }, + { + "teal": 3136, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 2907, + 2908 + ] + }, + { + "teal": 3137, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 2909, + 2910 + ] + }, + { + "teal": 3138, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 2911 + ] + }, + { + "teal": 3139, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 2912, + 2913, + 2914 + ] + }, + { + "teal": 3144, + "source": "contracts/stakingPool.algo.ts:800", + "pc": [ + 2915, + 2916 + ] + }, + { + "teal": 3145, + "source": "contracts/stakingPool.algo.ts:800", + "pc": [ + 2917, + 2918 + ] + }, + { + "teal": 3146, + "source": "contracts/stakingPool.algo.ts:800", + "pc": [ + 2919 + ] + }, + { + "teal": 3147, + "source": "contracts/stakingPool.algo.ts:800", + "pc": [ + 2920, + 2921, + 2922 + ] + }, + { + "teal": 3152, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2923 + ] + }, + { + "teal": 3153, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2924 + ] + }, + { + "teal": 3154, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2925, + 2926 + ] + }, + { + "teal": 3155, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2927 + ] + }, + { + "teal": 3156, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2928, + 2929 + ] + }, + { + "teal": 3157, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2930, + 2931 + ] + }, + { + "teal": 3158, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2932 + ] + }, + { + "teal": 3159, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2933, + 2934 + ] + }, + { + "teal": 3160, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2935, + 2936 + ] + }, + { + "teal": 3161, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2937, + 2938 + ] + }, + { + "teal": 3162, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2939, + 2940 + ] + }, + { + "teal": 3163, + "source": "contracts/stakingPool.algo.ts:801", + "pc": [ + 2941 + ] + }, + { + "teal": 3168, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2942, + 2943 + ] + }, + { + "teal": 3169, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2944 + ] + }, + { + "teal": 3170, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2945 + ] + }, + { + "teal": 3171, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2946 + ] + }, + { + "teal": 3172, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2947 + ] + }, + { + "teal": 3173, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2948, + 2949 + ] + }, + { + "teal": 3174, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2950 + ] + }, + { + "teal": 3175, + "source": "contracts/stakingPool.algo.ts:803", + "pc": [ + 2951, + 2952 + ] + }, + { + "teal": 3180, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2953, + 2954 + ] + }, + { + "teal": 3181, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2955, + 2956, + 2957 + ] + }, + { + "teal": 3182, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2958, + 2959 + ] + }, + { + "teal": 3183, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2960 + ] + }, + { + "teal": 3184, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2961 + ] + }, + { + "teal": 3185, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2962, + 2963, + 2964 + ] + }, + { + "teal": 3186, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2965, + 2966 + ] + }, + { + "teal": 3187, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2967, + 2968, + 2969 + ] + }, + { + "teal": 3188, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2970 + ] + }, + { + "teal": 3189, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2971, + 2972 + ] + }, + { + "teal": 3190, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2973 + ] + }, + { + "teal": 3191, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2974 + ] + }, + { + "teal": 3194, + "source": "contracts/stakingPool.algo.ts:804", + "pc": [ + 2975, + 2976, + 2977 + ] + }, + { + "teal": 3199, + "source": "contracts/stakingPool.algo.ts:805", + "pc": [ + 2978, + 2979 + ] + }, + { + "teal": 3200, + "source": "contracts/stakingPool.algo.ts:805", + "pc": [ + 2980, + 2981 + ] + }, + { + "teal": 3201, + "source": "contracts/stakingPool.algo.ts:805", + "pc": [ + 2982, + 2983, + 2984 + ] + }, + { + "teal": 3202, + "source": "contracts/stakingPool.algo.ts:805", + "pc": [ + 2985 + ] + }, + { + "teal": 3203, + "source": "contracts/stakingPool.algo.ts:805", + "pc": [ + 2986 + ] + }, + { + "teal": 3204, + "source": "contracts/stakingPool.algo.ts:805", + "pc": [ + 2987, + 2988 + ] + }, + { + "teal": 3209, + "source": "contracts/stakingPool.algo.ts:807", + "pc": [ + 2989, + 2990 + ] + }, + { + "teal": 3210, + "source": "contracts/stakingPool.algo.ts:807", + "pc": [ + 2991, + 2992 + ] + }, + { + "teal": 3211, + "source": "contracts/stakingPool.algo.ts:807", + "pc": [ + 2993 + ] + }, + { + "teal": 3212, + "source": "contracts/stakingPool.algo.ts:807", + "pc": [ + 2994, + 2995, + 2996 + ] + }, + { + "teal": 3218, + "source": "contracts/stakingPool.algo.ts:812", + "pc": [ + 2997, + 2998 + ] + }, + { + "teal": 3219, + "source": "contracts/stakingPool.algo.ts:812", + "pc": [ + 2999 + ] + }, + { + "teal": 3220, + "source": "contracts/stakingPool.algo.ts:812", + "pc": [ + 3000 + ] + }, + { + "teal": 3221, + "source": "contracts/stakingPool.algo.ts:812", + "pc": [ + 3001, + 3002, + 3003 + ] + }, + { + "teal": 3229, + "source": "contracts/stakingPool.algo.ts:814", + "pc": [ + 3004, + 3005 + ] + }, + { + "teal": 3230, + "source": "contracts/stakingPool.algo.ts:814", + "pc": [ + 3006, + 3007, + 3008 + ] + }, + { + "teal": 3231, + "source": "contracts/stakingPool.algo.ts:814", + "pc": [ + 3009 + ] + }, + { + "teal": 3232, + "source": "contracts/stakingPool.algo.ts:814", + "pc": [ + 3010, + 3011 + ] + }, + { + "teal": 3233, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3012 + ] + }, + { + "teal": 3234, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3013 + ] + }, + { + "teal": 3235, + "source": "contracts/stakingPool.algo.ts:815", + "pc": [ + 3014, + 3015 + ] + }, + { + "teal": 3236, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3016 + ] + }, + { + "teal": 3237, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3017 + ] + }, + { + "teal": 3238, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3018 + ] + }, + { + "teal": 3239, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3019 + ] + }, + { + "teal": 3240, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3020 + ] + }, + { + "teal": 3243, + "source": "contracts/stakingPool.algo.ts:813", + "errorMessage": "wideRatio failed", + "pc": [ + 3021 + ] + }, + { + "teal": 3244, + "source": "contracts/stakingPool.algo.ts:813", + "pc": [ + 3022, + 3023 + ] + }, + { + "teal": 3248, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3024, + 3025 + ] + }, + { + "teal": 3249, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3026, + 3027 + ] + }, + { + "teal": 3250, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3028, + 3029 + ] + }, + { + "teal": 3251, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3030, + 3031, + 3032 + ] + }, + { + "teal": 3252, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3033 + ] + }, + { + "teal": 3253, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3034, + 3035 + ] + }, + { + "teal": 3254, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3036 + ] + }, + { + "teal": 3255, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3037 + ] + }, + { + "teal": 3256, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3038 + ] + }, + { + "teal": 3257, + "source": "contracts/stakingPool.algo.ts:818", + "pc": [ + 3039, + 3040 + ] + }, + { + "teal": 3261, + "source": "contracts/stakingPool.algo.ts:819", + "pc": [ + 3041, + 3042 + ] + }, + { + "teal": 3262, + "source": "contracts/stakingPool.algo.ts:819", + "pc": [ + 3043, + 3044 + ] + }, + { + "teal": 3263, + "source": "contracts/stakingPool.algo.ts:819", + "pc": [ + 3045 + ] + }, + { + "teal": 3264, + "source": "contracts/stakingPool.algo.ts:819", + "pc": [ + 3046, + 3047 + ] + }, + { + "teal": 3270, + "source": "contracts/stakingPool.algo.ts:821", + "pc": [ + 3048, + 3049 + ] + }, + { + "teal": 3271, + "source": "contracts/stakingPool.algo.ts:821", + "pc": [ + 3050 + ] + }, + { + "teal": 3272, + "source": "contracts/stakingPool.algo.ts:821", + "pc": [ + 3051 + ] + }, + { + "teal": 3273, + "source": "contracts/stakingPool.algo.ts:821", + "pc": [ + 3052, + 3053, + 3054 + ] + }, + { + "teal": 3281, + "source": "contracts/stakingPool.algo.ts:823", + "pc": [ + 3055, + 3056 + ] + }, + { + "teal": 3282, + "source": "contracts/stakingPool.algo.ts:823", + "pc": [ + 3057, + 3058, + 3059 + ] + }, + { + "teal": 3283, + "source": "contracts/stakingPool.algo.ts:823", + "pc": [ + 3060 + ] + }, + { + "teal": 3284, + "source": "contracts/stakingPool.algo.ts:823", + "pc": [ + 3061, + 3062 + ] + }, + { + "teal": 3285, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3063 + ] + }, + { + "teal": 3286, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3064 + ] + }, + { + "teal": 3287, + "source": "contracts/stakingPool.algo.ts:824", + "pc": [ + 3065, + 3066 + ] + }, + { + "teal": 3288, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3067 + ] + }, + { + "teal": 3289, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3068 + ] + }, + { + "teal": 3290, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3069 + ] + }, + { + "teal": 3291, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3070 + ] + }, + { + "teal": 3292, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3071 + ] + }, + { + "teal": 3295, + "source": "contracts/stakingPool.algo.ts:822", + "errorMessage": "wideRatio failed", + "pc": [ + 3072 + ] + }, + { + "teal": 3296, + "source": "contracts/stakingPool.algo.ts:822", + "pc": [ + 3073, + 3074 + ] + }, + { + "teal": 3300, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3075, + 3076 + ] + }, + { + "teal": 3301, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3077, + 3078 + ] + }, + { + "teal": 3302, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3079, + 3080 + ] + }, + { + "teal": 3303, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3081, + 3082, + 3083 + ] + }, + { + "teal": 3304, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3084 + ] + }, + { + "teal": 3305, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3085, + 3086 + ] + }, + { + "teal": 3306, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3087 + ] + }, + { + "teal": 3307, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3088 + ] + }, + { + "teal": 3308, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3089 + ] + }, + { + "teal": 3309, + "source": "contracts/stakingPool.algo.ts:828", + "pc": [ + 3090, + 3091 + ] + }, + { + "teal": 3313, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3092, + 3093 + ] + }, + { + "teal": 3314, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3094, + 3095 + ] + }, + { + "teal": 3315, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3096, + 3097 + ] + }, + { + "teal": 3316, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3098, + 3099, + 3100 + ] + }, + { + "teal": 3317, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3101 + ] + }, + { + "teal": 3318, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3102, + 3103 + ] + }, + { + "teal": 3319, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3104 + ] + }, + { + "teal": 3320, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3105 + ] + }, + { + "teal": 3321, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3106 + ] + }, + { + "teal": 3322, + "source": "contracts/stakingPool.algo.ts:829", + "pc": [ + 3107, + 3108 + ] + }, + { + "teal": 3326, + "source": "contracts/stakingPool.algo.ts:830", + "pc": [ + 3109, + 3110 + ] + }, + { + "teal": 3327, + "source": "contracts/stakingPool.algo.ts:830", + "pc": [ + 3111, + 3112 + ] + }, + { + "teal": 3328, + "source": "contracts/stakingPool.algo.ts:830", + "pc": [ + 3113 + ] + }, + { + "teal": 3329, + "source": "contracts/stakingPool.algo.ts:830", + "pc": [ + 3114, + 3115 + ] + }, + { + "teal": 3334, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3116, + 3117 + ] + }, + { + "teal": 3335, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3118 + ] + }, + { + "teal": 3336, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3119 + ] + }, + { + "teal": 3337, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3120, + 3121 + ] + }, + { + "teal": 3338, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3122 + ] + }, + { + "teal": 3339, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3123, + 3124 + ] + }, + { + "teal": 3340, + "source": "contracts/stakingPool.algo.ts:834", + "pc": [ + 3125 + ] + }, + { + "teal": 3349, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 3126, + 3127 + ] + }, + { + "teal": 3350, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 3128 + ] + }, + { + "teal": 3351, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 3129 + ] + }, + { + "teal": 3352, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 3130, + 3131 + ] + }, + { + "teal": 3353, + "source": "contracts/stakingPool.algo.ts:799", + "pc": [ + 3132, + 3133, + 3134 + ] + }, + { + "teal": 3362, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3135, + 3136 + ] + }, + { + "teal": 3363, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3137 + ] + }, + { + "teal": 3364, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3138, + 3139 + ] + }, + { + "teal": 3365, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3140 + ] + }, + { + "teal": 3366, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3141 + ] + }, + { + "teal": 3367, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3142, + 3143 + ] + }, + { + "teal": 3368, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3144 + ] + }, + { + "teal": 3369, + "source": "contracts/stakingPool.algo.ts:844", + "pc": [ + 3145, + 3146 + ] + }, + { + "teal": 3373, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3147, + 3148 + ] + }, + { + "teal": 3374, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3149 + ] + }, + { + "teal": 3375, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3150, + 3151 + ] + }, + { + "teal": 3376, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3152 + ] + }, + { + "teal": 3377, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3153, + 3154 + ] + }, + { + "teal": 3378, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3155 + ] + }, + { + "teal": 3379, + "source": "contracts/stakingPool.algo.ts:845", + "pc": [ + 3156 + ] + }, + { + "teal": 3384, + "source": "contracts/stakingPool.algo.ts:846", + "pc": [ + 3157, + 3158 + ] + }, + { + "teal": 3385, + "source": "contracts/stakingPool.algo.ts:846", + "pc": [ + 3159 + ] + }, + { + "teal": 3386, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3160 + ] + }, + { + "teal": 3387, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3161, + 3162 + ] + }, + { + "teal": 3388, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3163 + ] + }, + { + "teal": 3389, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3164, + 3165 + ] + }, + { + "teal": 3390, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3166 + ] + }, + { + "teal": 3391, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3167 + ] + }, + { + "teal": 3392, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3168 + ] + }, + { + "teal": 3393, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3169 + ] + }, + { + "teal": 3394, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3170 + ] + }, + { + "teal": 3395, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3171, + 3172 + ] + }, + { + "teal": 3396, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3173 + ] + }, + { + "teal": 3399, + "source": "contracts/stakingPool.algo.ts:847", + "errorMessage": "this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", + "pc": [ + 3174 + ] + }, + { + "teal": 3400, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3175, + 3176 + ] + }, + { + "teal": 3401, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3177 + ] + }, + { + "teal": 3402, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3178 + ] + }, + { + "teal": 3403, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3179 + ] + }, + { + "teal": 3404, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3180 + ] + }, + { + "teal": 3405, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3181, + 3182 + ] + }, + { + "teal": 3406, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3183 + ] + }, + { + "teal": 3407, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3184 + ] + }, + { + "teal": 3408, + "source": "contracts/stakingPool.algo.ts:847", + "pc": [ + 3185 + ] + }, + { + "teal": 3409, + "source": "contracts/stakingPool.algo.ts:846", + "pc": [ + 3186 + ] + }, + { + "teal": 3413, + "source": "contracts/stakingPool.algo.ts:848", + "pc": [ + 3187, + 3188 + ] + }, + { + "teal": 3414, + "source": "contracts/stakingPool.algo.ts:848", + "pc": [ + 3189 + ] + }, + { + "teal": 3415, + "source": "contracts/stakingPool.algo.ts:848", + "pc": [ + 3190 + ] + }, + { + "teal": 3416, + "source": "contracts/stakingPool.algo.ts:848", + "pc": [ + 3191, + 3192 + ] + }, + { + "teal": 3417, + "source": "contracts/stakingPool.algo.ts:848", + "pc": [ + 3193 + ] + }, + { + "teal": 3418, + "source": "contracts/stakingPool.algo.ts:848", + "pc": [ + 3194 + ] + }, + { + "teal": 3431, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3195 + ] + }, + { + "teal": 3432, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3196 + ] + }, + { + "teal": 3433, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3197, + 3198 + ] + }, + { + "teal": 3434, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3199, + 3200, + 3201, + 3202, + 3203, + 3204 + ] + }, + { + "teal": 3435, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3205, + 3206 + ] + }, + { + "teal": 3439, + "source": "contracts/stakingPool.algo.ts:855", + "pc": [ + 3207 + ] + }, + { + "teal": 3440, + "source": "contracts/stakingPool.algo.ts:855", + "pc": [ + 3208 + ] + }, + { + "teal": 3441, + "source": "contracts/stakingPool.algo.ts:855", + "pc": [ + 3209, + 3210 + ] + }, + { + "teal": 3451, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3211 + ] + }, + { + "teal": 3452, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3212 + ] + }, + { + "teal": 3453, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3213 + ] + }, + { + "teal": 3454, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3214, + 3215 + ] + }, + { + "teal": 3455, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3216 + ] + }, + { + "teal": 3456, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3217 + ] + }, + { + "teal": 3457, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3218 + ] + }, + { + "teal": 3458, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3219, + 3220, + 3221 + ] + }, + { + "teal": 3459, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3222 + ] + }, + { + "teal": 3460, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3223 + ] + }, + { + "teal": 3461, + "source": "contracts/stakingPool.algo.ts:857", + "pc": [ + 3224, + 3225 + ] + }, + { + "teal": 3462, + "source": "contracts/stakingPool.algo.ts:858", + "pc": [ + 3226, + 3227 + ] + }, + { + "teal": 3463, + "source": "contracts/stakingPool.algo.ts:858", + "pc": [ + 3228 + ] + }, + { + "teal": 3464, + "source": "contracts/stakingPool.algo.ts:858", + "pc": [ + 3229, + 3230 + ] + }, + { + "teal": 3465, + "source": "contracts/stakingPool.algo.ts:859", + "pc": [ + 3231, + 3232 + ] + }, + { + "teal": 3466, + "source": "contracts/stakingPool.algo.ts:859", + "pc": [ + 3233 + ] + }, + { + "teal": 3467, + "source": "contracts/stakingPool.algo.ts:859", + "pc": [ + 3234, + 3235 + ] + }, + { + "teal": 3468, + "source": "contracts/stakingPool.algo.ts:860", + "pc": [ + 3236, + 3237 + ] + }, + { + "teal": 3469, + "source": "contracts/stakingPool.algo.ts:860", + "pc": [ + 3238 + ] + }, + { + "teal": 3470, + "source": "contracts/stakingPool.algo.ts:860", + "pc": [ + 3239, + 3240 + ] + }, + { + "teal": 3471, + "source": "contracts/stakingPool.algo.ts:861", + "pc": [ + 3241, + 3242 + ] + }, + { + "teal": 3472, + "source": "contracts/stakingPool.algo.ts:861", + "pc": [ + 3243 + ] + }, + { + "teal": 3473, + "source": "contracts/stakingPool.algo.ts:861", + "pc": [ + 3244, + 3245 + ] + }, + { + "teal": 3476, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3246 + ] + }, + { + "teal": 3477, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3247, + 3248 + ] + }, + { + "teal": 3480, + "source": "contracts/stakingPool.algo.ts:854", + "pc": [ + 3249 + ] + }, + { + "teal": 3481, + "source": "contracts/stakingPool.algo.ts:512", + "pc": [ + 3250 + ] + }, + { + "teal": 3486, + "source": "contracts/stakingPool.algo.ts:886", + "pc": [ + 3251, + 3252, + 3253 + ] + }, + { + "teal": 3487, + "source": "contracts/stakingPool.algo.ts:886", + "pc": [ + 3254 + ] + }, + { + "teal": 3490, + "source": "contracts/stakingPool.algo.ts:885", + "pc": [ + 3255, + 3256, + 3257 + ] + }, + { + "teal": 3491, + "source": "contracts/stakingPool.algo.ts:885", + "pc": [ + 3258 + ] + }, + { + "teal": 3494, + "source": "contracts/stakingPool.algo.ts:884", + "pc": [ + 3259, + 3260, + 3261 + ] + }, + { + "teal": 3495, + "source": "contracts/stakingPool.algo.ts:884", + "pc": [ + 3262 + ] + }, + { + "teal": 3498, + "source": "contracts/stakingPool.algo.ts:883", + "pc": [ + 3263, + 3264, + 3265 + ] + }, + { + "teal": 3499, + "source": "contracts/stakingPool.algo.ts:883", + "pc": [ + 3266, + 3267, + 3268 + ] + }, + { + "teal": 3502, + "source": "contracts/stakingPool.algo.ts:882", + "pc": [ + 3269, + 3270, + 3271 + ] + }, + { + "teal": 3503, + "source": "contracts/stakingPool.algo.ts:882", + "pc": [ + 3272, + 3273, + 3274 + ] + }, + { + "teal": 3506, + "source": "contracts/stakingPool.algo.ts:881", + "pc": [ + 3275, + 3276, + 3277 + ] + }, + { + "teal": 3507, + "source": "contracts/stakingPool.algo.ts:881", + "pc": [ + 3278, + 3279, + 3280 + ] + }, + { + "teal": 3510, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3281, + 3282 + ] + }, + { + "teal": 3511, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3283 + ] + }, + { + "teal": 3512, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3284 + ] + }, + { + "teal": 3513, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3285 + ] + }, + { + "teal": 3514, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3286, + 3287 + ] + }, + { + "teal": 3515, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3288 + ] + }, + { + "teal": 3516, + "source": "contracts/stakingPool.algo.ts:880", + "pc": [ + 3289 + ] + }, + { + "teal": 3519, + "source": "contracts/stakingPool.algo.ts:880", + "errorMessage": "argument 6 (feePayment) for goOnline must be a pay transaction", + "pc": [ + 3290 + ] + }, + { + "teal": 3522, + "source": "contracts/stakingPool.algo.ts:879", + "pc": [ + 3291, + 3292, + 3293 + ] + }, + { + "teal": 3523, + "source": "contracts/stakingPool.algo.ts:879", + "pc": [ + 3294 + ] + }, + { + "teal": 3524, + "source": "contracts/stakingPool.algo.ts:879", + "pc": [ + 3295 + ] + }, + { + "teal": 3540, + "source": "contracts/stakingPool.algo.ts:879", + "pc": [ + 3296, + 3297, + 3298 + ] + }, + { + "teal": 3543, + "source": "contracts/stakingPool.algo.ts:879", + "pc": [ + 3299 + ] + }, + { + "teal": 3547, + "source": "contracts/stakingPool.algo.ts:888", + "pc": [ + 3300, + 3301, + 3302 + ] + }, + { + "teal": 3550, + "source": "contracts/stakingPool.algo.ts:888", + "errorMessage": "can only be called by owner or manager of validator", + "pc": [ + 3303 + ] + }, + { + "teal": 3554, + "source": "contracts/stakingPool.algo.ts:889", + "pc": [ + 3304, + 3305, + 3306 + ] + }, + { + "teal": 3555, + "source": "contracts/stakingPool.algo.ts:889", + "pc": [ + 3307, + 3308 + ] + }, + { + "teal": 3560, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3309, + 3310 + ] + }, + { + "teal": 3561, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3311, + 3312 + ] + }, + { + "teal": 3562, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3313, + 3314 + ] + }, + { + "teal": 3563, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3315 + ] + }, + { + "teal": 3566, + "source": "contracts/stakingPool.algo.ts:890", + "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "pc": [ + 3316 + ] + }, + { + "teal": 3569, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3317, + 3318 + ] + }, + { + "teal": 3570, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3319, + 3320 + ] + }, + { + "teal": 3571, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3321, + 3322 + ] + }, + { + "teal": 3572, + "source": "contracts/stakingPool.algo.ts:890", + "pc": [ + 3323 + ] + }, + { + "teal": 3575, + "source": "contracts/stakingPool.algo.ts:890", + "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}", + "pc": [ + 3324 + ] + }, + { + "teal": 3587, + "source": "contracts/stakingPool.algo.ts:891", + "pc": [ + 3325 + ] + }, + { + "teal": 3588, + "source": "contracts/stakingPool.algo.ts:891", + "pc": [ + 3326, + 3327 + ] + }, + { + "teal": 3589, + "source": "contracts/stakingPool.algo.ts:891", + "pc": [ + 3328, + 3329 + ] + }, + { + "teal": 3593, + "source": "contracts/stakingPool.algo.ts:892", + "pc": [ + 3330, + 3331 + ] + }, + { + "teal": 3594, + "source": "contracts/stakingPool.algo.ts:892", + "pc": [ + 3332, + 3333 + ] + }, + { + "teal": 3598, + "source": "contracts/stakingPool.algo.ts:893", + "pc": [ + 3334, + 3335 + ] + }, + { + "teal": 3599, + "source": "contracts/stakingPool.algo.ts:893", + "pc": [ + 3336, + 3337 + ] + }, + { + "teal": 3603, + "source": "contracts/stakingPool.algo.ts:894", + "pc": [ + 3338, + 3339 + ] + }, + { + "teal": 3604, + "source": "contracts/stakingPool.algo.ts:894", + "pc": [ + 3340, + 3341 + ] + }, + { + "teal": 3608, + "source": "contracts/stakingPool.algo.ts:895", + "pc": [ + 3342, + 3343 + ] + }, + { + "teal": 3609, + "source": "contracts/stakingPool.algo.ts:895", + "pc": [ + 3344, + 3345 + ] + }, + { + "teal": 3613, + "source": "contracts/stakingPool.algo.ts:896", + "pc": [ + 3346, + 3347 + ] + }, + { + "teal": 3614, + "source": "contracts/stakingPool.algo.ts:896", + "pc": [ + 3348, + 3349 + ] + }, + { + "teal": 3618, + "source": "contracts/stakingPool.algo.ts:897", + "pc": [ + 3350, + 3351 + ] + }, + { + "teal": 3619, + "source": "contracts/stakingPool.algo.ts:897", + "pc": [ + 3352, + 3353 + ] + }, + { + "teal": 3623, + "source": "contracts/stakingPool.algo.ts:898", + "pc": [ + 3354, + 3355 + ] + }, + { + "teal": 3624, + "source": "contracts/stakingPool.algo.ts:898", + "pc": [ + 3356, + 3357 + ] + }, + { + "teal": 3627, + "source": "contracts/stakingPool.algo.ts:891", + "pc": [ + 3358 + ] + }, + { + "teal": 3628, + "source": "contracts/stakingPool.algo.ts:879", + "pc": [ + 3359 + ] + }, + { + "teal": 3633, + "source": "contracts/stakingPool.algo.ts:907", + "pc": [ + 3360, + 3361, + 3362 + ] + }, + { + "teal": 3634, + "source": "contracts/stakingPool.algo.ts:907", + "pc": [ + 3363 + ] + }, + { + "teal": 3635, + "source": "contracts/stakingPool.algo.ts:907", + "pc": [ + 3364 + ] + }, + { + "teal": 3642, + "source": "contracts/stakingPool.algo.ts:907", + "pc": [ + 3365, + 3366, + 3367 + ] + }, + { + "teal": 3647, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3368, + 3369 + ] + }, + { + "teal": 3648, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3370 + ] + }, + { + "teal": 3649, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3371 + ] + }, + { + "teal": 3650, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3372, + 3373 + ] + }, + { + "teal": 3651, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3374 + ] + }, + { + "teal": 3652, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3375 + ] + }, + { + "teal": 3653, + "source": "contracts/stakingPool.algo.ts:910", + "pc": [ + 3376, + 3377, + 3378 + ] + }, + { + "teal": 3658, + "source": "contracts/stakingPool.algo.ts:911", + "pc": [ + 3379, + 3380, + 3381 + ] + }, + { + "teal": 3661, + "source": "contracts/stakingPool.algo.ts:911", + "errorMessage": "can only be called by owner or manager of validator", + "pc": [ + 3382 + ] + }, + { + "teal": 3666, + "source": "contracts/stakingPool.algo.ts:914", + "pc": [ + 3383 + ] + }, + { + "teal": 3667, + "source": "contracts/stakingPool.algo.ts:914", + "pc": [ + 3384, + 3385 + ] + }, + { + "teal": 3668, + "source": "contracts/stakingPool.algo.ts:914", + "pc": [ + 3386, + 3387 + ] + }, + { + "teal": 3671, + "source": "contracts/stakingPool.algo.ts:914", + "pc": [ + 3388 + ] + }, + { + "teal": 3672, + "source": "contracts/stakingPool.algo.ts:914", + "pc": [ + 3389, + 3390 + ] + }, + { + "teal": 3675, + "source": "contracts/stakingPool.algo.ts:914", + "pc": [ + 3391 + ] + }, + { + "teal": 3676, + "source": "contracts/stakingPool.algo.ts:907", + "pc": [ + 3392 + ] + }, + { + "teal": 3681, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3393, + 3394, + 3395 + ] + }, + { + "teal": 3682, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3396, + 3397, + 3398 + ] + }, + { + "teal": 3685, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3399, + 3400, + 3401 + ] + }, + { + "teal": 3686, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3402 + ] + }, + { + "teal": 3689, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3403, + 3404, + 3405 + ] + }, + { + "teal": 3690, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3406 + ] + }, + { + "teal": 3691, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3407 + ] + }, + { + "teal": 3695, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3408, + 3409, + 3410 + ] + }, + { + "teal": 3699, + "source": "contracts/stakingPool.algo.ts:921", + "pc": [ + 3411, + 3412, + 3413 + ] + }, + { + "teal": 3702, + "source": "contracts/stakingPool.algo.ts:921", + "errorMessage": "can only be called by owner or manager of validator", + "pc": [ + 3414 + ] + }, + { + "teal": 3710, + "source": "contracts/stakingPool.algo.ts:923", + "pc": [ + 3415 + ] + }, + { + "teal": 3711, + "source": "contracts/stakingPool.algo.ts:923", + "pc": [ + 3416 + ] + }, + { + "teal": 3712, + "source": "contracts/stakingPool.algo.ts:923", + "pc": [ + 3417, + 3418 + ] + }, + { + "teal": 3716, + "source": "contracts/stakingPool.algo.ts:924", + "pc": [ + 3419, + 3420 + ] + }, + { + "teal": 3717, + "source": "contracts/stakingPool.algo.ts:924", + "pc": [ + 3421, + 3422 + ] + }, + { + "teal": 3721, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3437, + 3438, + 3439 + ] + }, + { + "teal": 3722, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3440, + 3441 + ] + }, + { + "teal": 3723, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3442, + 3443 + ] + }, + { + "teal": 3724, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3444, + 3445 + ] + }, + { + "teal": 3725, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3446, + 3447 + ] + }, + { + "teal": 3726, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3448 + ] + }, + { + "teal": 3727, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3449, + 3450 + ] + }, + { + "teal": 3728, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3451, + 3452 + ] + }, + { + "teal": 3729, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3453, + 3454 + ] + }, + { + "teal": 3733, + "source": "contracts/stakingPool.algo.ts:926", + "pc": [ + 3455, + 3456 + ] + }, + { + "teal": 3734, + "source": "contracts/stakingPool.algo.ts:926", + "pc": [ + 3457, + 3458 + ] + }, + { + "teal": 3737, + "source": "contracts/stakingPool.algo.ts:923", + "pc": [ + 3459 + ] + }, + { + "teal": 3738, + "source": "contracts/stakingPool.algo.ts:923", + "pc": [ + 3460, + 3461 + ] + }, + { + "teal": 3741, + "source": "contracts/stakingPool.algo.ts:923", + "pc": [ + 3462 + ] + }, + { + "teal": 3742, + "source": "contracts/stakingPool.algo.ts:920", + "pc": [ + 3463 + ] + }, + { + "teal": 3747, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3464, + 3465 + ] + }, + { + "teal": 3750, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3466, + 3467, + 3468 + ] + }, + { + "teal": 3751, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3469 + ] + }, + { + "teal": 3752, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3470 + ] + }, + { + "teal": 3753, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3471, + 3472 + ] + }, + { + "teal": 3754, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3473 + ] + }, + { + "teal": 3757, + "source": "contracts/stakingPool.algo.ts:936", + "errorMessage": "argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)", + "pc": [ + 3474 + ] + }, + { + "teal": 3760, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3475, + 3476, + 3477 + ] + }, + { + "teal": 3761, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3478 + ] + }, + { + "teal": 3762, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3479 + ] + }, + { + "teal": 3763, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3480 + ] + }, + { + "teal": 3764, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3481 + ] + }, + { + "teal": 3773, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3482, + 3483, + 3484 + ] + }, + { + "teal": 3776, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3485 + ] + }, + { + "teal": 3780, + "source": "contracts/stakingPool.algo.ts:937", + "pc": [ + 3486 + ] + }, + { + "teal": 3781, + "source": "contracts/stakingPool.algo.ts:937", + "pc": [ + 3487 + ] + }, + { + "teal": 3782, + "source": "contracts/stakingPool.algo.ts:937", + "pc": [ + 3488, + 3489 + ] + }, + { + "teal": 3783, + "source": "contracts/stakingPool.algo.ts:937", + "pc": [ + 3490, + 3491, + 3492 + ] + }, + { + "teal": 3784, + "source": "contracts/stakingPool.algo.ts:937", + "pc": [ + 3493 + ] + }, + { + "teal": 3785, + "source": "contracts/stakingPool.algo.ts:937", + "pc": [ + 3494 + ] + }, + { + "teal": 3788, + "source": "contracts/stakingPool.algo.ts:937", + "errorMessage": "caller must be part of same validator set!", + "pc": [ + 3495 + ] + }, + { + "teal": 3792, + "source": "contracts/stakingPool.algo.ts:938", + "pc": [ + 3496, + 3497 + ] + }, + { + "teal": 3793, + "source": "contracts/stakingPool.algo.ts:938", + "pc": [ + 3498 + ] + }, + { + "teal": 3794, + "source": "contracts/stakingPool.algo.ts:938", + "pc": [ + 3499 + ] + }, + { + "teal": 3795, + "source": "contracts/stakingPool.algo.ts:938", + "pc": [ + 3500 + ] + }, + { + "teal": 3798, + "source": "contracts/stakingPool.algo.ts:938", + "errorMessage": "callee must be pool 1", + "pc": [ + 3501 + ] + }, + { + "teal": 3802, + "source": "contracts/stakingPool.algo.ts:939", + "pc": [ + 3502, + 3503 + ] + }, + { + "teal": 3803, + "source": "contracts/stakingPool.algo.ts:939", + "pc": [ + 3504, + 3505, + 3506 + ] + }, + { + "teal": 3804, + "source": "contracts/stakingPool.algo.ts:939", + "pc": [ + 3507 + ] + }, + { + "teal": 3805, + "source": "contracts/stakingPool.algo.ts:939", + "pc": [ + 3508 + ] + }, + { + "teal": 3806, + "source": "contracts/stakingPool.algo.ts:939", + "pc": [ + 3509 + ] + }, + { + "teal": 3809, + "source": "contracts/stakingPool.algo.ts:939", + "errorMessage": "caller must NOT be pool 1", + "pc": [ + 3510 + ] + }, + { + "teal": 3816, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3511 + ] + }, + { + "teal": 3817, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3512 + ] + }, + { + "teal": 3818, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3513, + 3514 + ] + }, + { + "teal": 3819, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3515, + 3516 + ] + }, + { + "teal": 3820, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3517, + 3518 + ] + }, + { + "teal": 3824, + "source": "contracts/stakingPool.algo.ts:942", + "pc": [ + 3519 + ] + }, + { + "teal": 3825, + "source": "contracts/stakingPool.algo.ts:942", + "pc": [ + 3520 + ] + }, + { + "teal": 3826, + "source": "contracts/stakingPool.algo.ts:942", + "pc": [ + 3521, + 3522 + ] + }, + { + "teal": 3830, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3523, + 3524 + ] + }, + { + "teal": 3831, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3525, + 3526, + 3527 + ] + }, + { + "teal": 3832, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3528 + ] + }, + { + "teal": 3833, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3529 + ] + }, + { + "teal": 3834, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3530, + 3531 + ] + }, + { + "teal": 3835, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3532, + 3533 + ] + }, + { + "teal": 3836, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3534, + 3535, + 3536 + ] + }, + { + "teal": 3837, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3537 + ] + }, + { + "teal": 3838, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3538 + ] + }, + { + "teal": 3839, + "source": "contracts/stakingPool.algo.ts:943", + "pc": [ + 3539, + 3540 + ] + }, + { + "teal": 3842, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3541 + ] + }, + { + "teal": 3843, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3542, + 3543 + ] + }, + { + "teal": 3846, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3544 + ] + }, + { + "teal": 3847, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3545, + 3546 + ] + }, + { + "teal": 3848, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3547 + ] + }, + { + "teal": 3849, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3548 + ] + }, + { + "teal": 3850, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3549, + 3550 + ] + }, + { + "teal": 3851, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3551, + 3552, + 3553 + ] + }, + { + "teal": 3852, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3554 + ] + }, + { + "teal": 3853, + "source": "contracts/stakingPool.algo.ts:941", + "pc": [ + 3555, + 3556 + ] + }, + { + "teal": 3857, + "source": "contracts/stakingPool.algo.ts:945", + "pc": [ + 3557, + 3558 + ] + }, + { + "teal": 3858, + "source": "contracts/stakingPool.algo.ts:945", + "pc": [ + 3559, + 3560 + ] + }, + { + "teal": 3859, + "source": "contracts/stakingPool.algo.ts:945", + "pc": [ + 3561, + 3562, + 3563 + ] + }, + { + "teal": 3860, + "source": "contracts/stakingPool.algo.ts:945", + "pc": [ + 3564 + ] + }, + { + "teal": 3861, + "source": "contracts/stakingPool.algo.ts:945", + "pc": [ + 3565 + ] + }, + { + "teal": 3862, + "source": "contracts/stakingPool.algo.ts:945", + "pc": [ + 3566 + ] + }, + { + "teal": 3866, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3567, + 3568 + ] + }, + { + "teal": 3867, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3569, + 3570 + ] + }, + { + "teal": 3868, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3571, + 3572, + 3573 + ] + }, + { + "teal": 3869, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3574 + ] + }, + { + "teal": 3870, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3575, + 3576 + ] + }, + { + "teal": 3871, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3577 + ] + }, + { + "teal": 3872, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3578 + ] + }, + { + "teal": 3873, + "source": "contracts/stakingPool.algo.ts:946", + "pc": [ + 3579 + ] + }, + { + "teal": 3880, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3580 + ] + }, + { + "teal": 3881, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3581 + ] + }, + { + "teal": 3882, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3582, + 3583 + ] + }, + { + "teal": 3883, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3584, + 3585 + ] + }, + { + "teal": 3884, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3586, + 3587 + ] + }, + { + "teal": 3888, + "source": "contracts/stakingPool.algo.ts:949", + "pc": [ + 3588 + ] + }, + { + "teal": 3889, + "source": "contracts/stakingPool.algo.ts:949", + "pc": [ + 3589 + ] + }, + { + "teal": 3890, + "source": "contracts/stakingPool.algo.ts:949", + "pc": [ + 3590, + 3591 + ] + }, + { + "teal": 3894, + "source": "contracts/stakingPool.algo.ts:950", + "pc": [ + 3592 + ] + }, + { + "teal": 3895, + "source": "contracts/stakingPool.algo.ts:950", + "pc": [ + 3593 + ] + }, + { + "teal": 3896, + "source": "contracts/stakingPool.algo.ts:950", + "pc": [ + 3594 + ] + }, + { + "teal": 3897, + "source": "contracts/stakingPool.algo.ts:950", + "pc": [ + 3595, + 3596 + ] + }, + { + "teal": 3900, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3597 + ] + }, + { + "teal": 3901, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3598, + 3599 + ] + }, + { + "teal": 3904, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3600 + ] + }, + { + "teal": 3905, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3601, + 3602 + ] + }, + { + "teal": 3906, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3603 + ] + }, + { + "teal": 3907, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3604 + ] + }, + { + "teal": 3908, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3605, + 3606 + ] + }, + { + "teal": 3909, + "source": "contracts/stakingPool.algo.ts:948", + "pc": [ + 3607, + 3608, + 3609 + ] + }, + { + "teal": 3912, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3610, + 3611 + ] + }, + { + "teal": 3913, + "source": "contracts/stakingPool.algo.ts:936", + "pc": [ + 3612 + ] + }, + { + "teal": 3917, + "source": "contracts/stakingPool.algo.ts:954", + "pc": [ + 3613, + 3614, + 3615 + ] + }, + { + "teal": 3920, + "source": "contracts/stakingPool.algo.ts:954", + "pc": [ + 3616 + ] + }, + { + "teal": 3927, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3617 + ] + }, + { + "teal": 3928, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3618 + ] + }, + { + "teal": 3929, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3619, + 3620 + ] + }, + { + "teal": 3930, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3621, + 3622, + 3623, + 3624, + 3625, + 3626 + ] + }, + { + "teal": 3931, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3627, + 3628 + ] + }, + { + "teal": 3935, + "source": "contracts/stakingPool.algo.ts:956", + "pc": [ + 3629 + ] + }, + { + "teal": 3936, + "source": "contracts/stakingPool.algo.ts:956", + "pc": [ + 3630 + ] + }, + { + "teal": 3937, + "source": "contracts/stakingPool.algo.ts:956", + "pc": [ + 3631, + 3632 + ] + }, + { + "teal": 3941, + "source": "contracts/stakingPool.algo.ts:957", + "pc": [ + 3633 + ] + }, + { + "teal": 3942, + "source": "contracts/stakingPool.algo.ts:957", + "pc": [ + 3634 + ] + }, + { + "teal": 3943, + "source": "contracts/stakingPool.algo.ts:957", + "pc": [ + 3635 + ] + }, + { + "teal": 3944, + "source": "contracts/stakingPool.algo.ts:957", + "pc": [ + 3636, + 3637 + ] + }, + { + "teal": 3947, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3638 + ] + }, + { + "teal": 3948, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3639, + 3640 + ] + }, + { + "teal": 3951, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3641 + ] + }, + { + "teal": 3952, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3642, + 3643 + ] + }, + { + "teal": 3953, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3644 + ] + }, + { + "teal": 3954, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3645 + ] + }, + { + "teal": 3955, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3646, + 3647 + ] + }, + { + "teal": 3956, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3648, + 3649, + 3650 + ] + }, + { + "teal": 3957, + "source": "contracts/stakingPool.algo.ts:955", + "pc": [ + 3651, + 3652 + ] + }, + { + "teal": 3961, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3653, + 3654 + ] + }, + { + "teal": 3962, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3655, + 3656 + ] + }, + { + "teal": 3963, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3657, + 3658, + 3659 + ] + }, + { + "teal": 3964, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3660 + ] + }, + { + "teal": 3965, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3661 + ] + }, + { + "teal": 3966, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3662, + 3663, + 3664 + ] + }, + { + "teal": 3967, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3665, + 3666 + ] + }, + { + "teal": 3968, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3667, + 3668 + ] + }, + { + "teal": 3969, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3669, + 3670, + 3671 + ] + }, + { + "teal": 3970, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3672 + ] + }, + { + "teal": 3971, + "source": "contracts/stakingPool.algo.ts:959", + "pc": [ + 3673 + ] + }, + { + "teal": 3975, + "source": "contracts/stakingPool.algo.ts:954", + "pc": [ + 3674, + 3675 + ] + }, + { + "teal": 3976, + "source": "contracts/stakingPool.algo.ts:954", + "pc": [ + 3676 + ] + }, + { + "teal": 3983, + "source": "contracts/stakingPool.algo.ts:966", + "pc": [ + 3677, + 3678, + 3679 + ] + }, + { + "teal": 3986, + "source": "contracts/stakingPool.algo.ts:966", + "pc": [ + 3680 + ] + }, + { + "teal": 3990, + "source": "contracts/stakingPool.algo.ts:967", + "pc": [ + 3681, + 3682, + 3683 + ] + }, + { + "teal": 3991, + "source": "contracts/stakingPool.algo.ts:967", + "pc": [ + 3684, + 3685 + ] + }, + { + "teal": 3995, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3686, + 3687 + ] + }, + { + "teal": 3996, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3688, + 3689 + ] + }, + { + "teal": 3997, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3690 + ] + }, + { + "teal": 3998, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3691 + ] + }, + { + "teal": 3999, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3692, + 3693 + ] + }, + { + "teal": 4000, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3694 + ] + }, + { + "teal": 4001, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3695 + ] + }, + { + "teal": 4002, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3696 + ] + }, + { + "teal": 4003, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3697 + ] + }, + { + "teal": 4004, + "source": "contracts/stakingPool.algo.ts:969", + "pc": [ + 3698 + ] + }, + { + "teal": 4007, + "source": "contracts/stakingPool.algo.ts:969", + "errorMessage": "wideRatio failed", + "pc": [ + 3699 + ] + }, + { + "teal": 4010, + "source": "contracts/stakingPool.algo.ts:966", + "pc": [ + 3700, + 3701 + ] + }, + { + "teal": 4011, + "source": "contracts/stakingPool.algo.ts:966", + "pc": [ + 3702 + ] + }, + { + "teal": 4015, + "source": "contracts/stakingPool.algo.ts:972", + "pc": [ + 3703, + 3704, + 3705 + ] + }, + { + "teal": 4020, + "source": "contracts/stakingPool.algo.ts:974", + "pc": [ + 3706, + 3707 + ] + }, + { + "teal": 4021, + "source": "contracts/stakingPool.algo.ts:974", + "pc": [ + 3708, + 3709 + ] + }, + { + "teal": 4022, + "source": "contracts/stakingPool.algo.ts:974", + "pc": [ + 3710 + ] + }, + { + "teal": 4023, + "source": "contracts/stakingPool.algo.ts:974", + "pc": [ + 3711 + ] + }, + { + "teal": 4024, + "source": "contracts/stakingPool.algo.ts:974", + "pc": [ + 3712, + 3713, + 3714 + ] + }, + { + "teal": 4029, + "source": "contracts/stakingPool.algo.ts:975", + "pc": [ + 3715, + 3716 + ] + }, + { + "teal": 4030, + "source": "contracts/stakingPool.algo.ts:975", + "pc": [ + 3717 + ] + }, + { + "teal": 4035, + "source": "contracts/stakingPool.algo.ts:977", + "pc": [ + 3718 + ] + }, + { + "teal": 4036, + "source": "contracts/stakingPool.algo.ts:972", + "pc": [ + 3719 + ] + }, + { + "teal": 4040, + "source": "contracts/stakingPool.algo.ts:980", + "pc": [ + 3720, + 3721, + 3722 + ] + }, + { + "teal": 4044, + "source": "contracts/stakingPool.algo.ts:981", + "pc": [ + 3723 + ] + }, + { + "teal": 4045, + "source": "contracts/stakingPool.algo.ts:980", + "pc": [ + 3724 + ] + }, + { + "teal": 4051, + "source": "contracts/stakingPool.algo.ts:987", + "pc": [ + 3725, + 3726, + 3727 + ] + }, + { + "teal": 4054, + "source": "contracts/stakingPool.algo.ts:987", + "pc": [ + 3728 + ] + }, + { + "teal": 4055, + "source": "contracts/stakingPool.algo.ts:987", + "pc": [ + 3729, + 3730 + ] + }, + { + "teal": 4059, + "source": "contracts/stakingPool.algo.ts:988", + "pc": [ + 3731, + 3732 + ] + }, + { + "teal": 4060, + "source": "contracts/stakingPool.algo.ts:988", + "pc": [ + 3733 + ] + }, + { + "teal": 4061, + "source": "contracts/stakingPool.algo.ts:988", + "pc": [ + 3734 + ] + }, + { + "teal": 4062, + "source": "contracts/stakingPool.algo.ts:988", + "pc": [ + 3735, + 3736 + ] + }, + { + "teal": 4067, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3737, + 3738 + ] + }, + { + "teal": 4068, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3739, + 3740 + ] + }, + { + "teal": 4069, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3741 + ] + }, + { + "teal": 4070, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3742, + 3743 + ] + }, + { + "teal": 4071, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3744 + ] + }, + { + "teal": 4072, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3745 + ] + }, + { + "teal": 4073, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3746 + ] + }, + { + "teal": 4074, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3747 + ] + }, + { + "teal": 4077, + "source": "contracts/stakingPool.algo.ts:989", + "errorMessage": "currentBinSize as uint64 overflowed 64 bits", + "pc": [ + 3748 + ] + }, + { + "teal": 4078, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3757, + 3758 + ] + }, + { + "teal": 4079, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3759 + ] + }, + { + "teal": 4080, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3760 + ] + }, + { + "teal": 4081, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3761 + ] + }, + { + "teal": 4082, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3762 + ] + }, + { + "teal": 4083, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3763, + 3764 + ] + }, + { + "teal": 4084, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3765 + ] + }, + { + "teal": 4085, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3766 + ] + }, + { + "teal": 4086, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3767 + ] + }, + { + "teal": 4087, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3768 + ] + }, + { + "teal": 4088, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3769 + ] + }, + { + "teal": 4089, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3770 + ] + }, + { + "teal": 4090, + "source": "contracts/stakingPool.algo.ts:989", + "pc": [ + 3771, + 3772, + 3773 + ] + }, + { + "teal": 4096, + "source": "contracts/stakingPool.algo.ts:990", + "pc": [ + 3774, + 3775 + ] + }, + { + "teal": 4097, + "source": "contracts/stakingPool.algo.ts:990", + "pc": [ + 3776, + 3777 + ] + }, + { + "teal": 4098, + "source": "contracts/stakingPool.algo.ts:990", + "pc": [ + 3778 + ] + }, + { + "teal": 4099, + "source": "contracts/stakingPool.algo.ts:990", + "pc": [ + 3779, + 3780, + 3781 + ] + }, + { + "teal": 4104, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3782 + ] + }, + { + "teal": 4105, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3783 + ] + }, + { + "teal": 4106, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3784, + 3785 + ] + }, + { + "teal": 4107, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3786 + ] + }, + { + "teal": 4108, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3787, + 3788 + ] + }, + { + "teal": 4109, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3789, + 3790 + ] + }, + { + "teal": 4110, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3791 + ] + }, + { + "teal": 4111, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3792, + 3793 + ] + }, + { + "teal": 4112, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3794, + 3795 + ] + }, + { + "teal": 4113, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3796, + 3797 + ] + }, + { + "teal": 4114, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3798, + 3799 + ] + }, + { + "teal": 4115, + "source": "contracts/stakingPool.algo.ts:991", + "pc": [ + 3800 + ] + }, + { + "teal": 4120, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3801, + 3802 + ] + }, + { + "teal": 4121, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820 + ] + }, + { + "teal": 4122, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3821 + ] + }, + { + "teal": 4123, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3822 + ] + }, + { + "teal": 4124, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3823 + ] + }, + { + "teal": 4125, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3824, + 3825 + ] + }, + { + "teal": 4126, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3826 + ] + }, + { + "teal": 4129, + "source": "contracts/stakingPool.algo.ts:993", + "errorMessage": "currentBinSize * (365 as uint128) overflowed 128 bits", + "pc": [ + 3827 + ] + }, + { + "teal": 4130, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3828, + 3829 + ] + }, + { + "teal": 4131, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3830 + ] + }, + { + "teal": 4132, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3831 + ] + }, + { + "teal": 4133, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3832 + ] + }, + { + "teal": 4134, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3833 + ] + }, + { + "teal": 4135, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3834, + 3835 + ] + }, + { + "teal": 4136, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3836 + ] + }, + { + "teal": 4137, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3837 + ] + }, + { + "teal": 4138, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3838 + ] + }, + { + "teal": 4139, + "source": "contracts/stakingPool.algo.ts:993", + "pc": [ + 3839, + 3840 + ] + }, + { + "teal": 4143, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3841, + 3842 + ] + }, + { + "teal": 4144, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3843 + ] + }, + { + "teal": 4145, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3844, + 3845 + ] + }, + { + "teal": 4146, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3846 + ] + }, + { + "teal": 4147, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3847 + ] + }, + { + "teal": 4148, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3848 + ] + }, + { + "teal": 4149, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3849, + 3850 + ] + }, + { + "teal": 4150, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3851 + ] + }, + { + "teal": 4153, + "source": "contracts/stakingPool.algo.ts:994", + "errorMessage": "this.stakeAccumulator.value / currentBinSize overflowed 128 bits", + "pc": [ + 3852 + ] + }, + { + "teal": 4154, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3853, + 3854 + ] + }, + { + "teal": 4155, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3855 + ] + }, + { + "teal": 4156, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3856 + ] + }, + { + "teal": 4157, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3857 + ] + }, + { + "teal": 4158, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3858 + ] + }, + { + "teal": 4159, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3859, + 3860 + ] + }, + { + "teal": 4160, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3861 + ] + }, + { + "teal": 4161, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3862 + ] + }, + { + "teal": 4162, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3863 + ] + }, + { + "teal": 4163, + "source": "contracts/stakingPool.algo.ts:994", + "pc": [ + 3864, + 3865 + ] + }, + { + "teal": 4168, + "source": "contracts/stakingPool.algo.ts:995", + "pc": [ + 3866, + 3867 + ] + }, + { + "teal": 4169, + "source": "contracts/stakingPool.algo.ts:995", + "pc": [ + 3868, + 3869 + ] + }, + { + "teal": 4170, + "source": "contracts/stakingPool.algo.ts:995", + "pc": [ + 3870 + ] + }, + { + "teal": 4171, + "source": "contracts/stakingPool.algo.ts:995", + "pc": [ + 3871, + 3872, + 3873 + ] + }, + { + "teal": 4178, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3874, + 3875 + ] + }, + { + "teal": 4179, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3876 + ] + }, + { + "teal": 4180, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3877 + ] + }, + { + "teal": 4181, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3885, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895 + ] + }, + { + "teal": 4182, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3896 + ] + }, + { + "teal": 4183, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3897, + 3898 + ] + }, + { + "teal": 4184, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3899 + ] + }, + { + "teal": 4185, + "source": "contracts/stakingPool.algo.ts:1001", + "pc": [ + 3900, + 3901 + ] + }, + { + "teal": 4186, + "source": "contracts/stakingPool.algo.ts:1001", + "pc": [ + 3902, + 3903 + ] + }, + { + "teal": 4187, + "source": "contracts/stakingPool.algo.ts:1001", + "pc": [ + 3904 + ] + }, + { + "teal": 4188, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3905 + ] + }, + { + "teal": 4189, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3906 + ] + }, + { + "teal": 4190, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3907 + ] + }, + { + "teal": 4191, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3908, + 3909 + ] + }, + { + "teal": 4192, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3910 + ] + }, + { + "teal": 4195, + "source": "contracts/stakingPool.algo.ts:1000", + "errorMessage": "(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits", + "pc": [ + 3911 + ] + }, + { + "teal": 4196, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3912, + 3913 + ] + }, + { + "teal": 4197, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3914 + ] + }, + { + "teal": 4198, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3915 + ] + }, + { + "teal": 4199, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3916 + ] + }, + { + "teal": 4200, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3917 + ] + }, + { + "teal": 4201, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3918, + 3919 + ] + }, + { + "teal": 4202, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3920 + ] + }, + { + "teal": 4203, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3921 + ] + }, + { + "teal": 4204, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3922 + ] + }, + { + "teal": 4205, + "source": "contracts/stakingPool.algo.ts:999", + "pc": [ + 3923, + 3924 + ] + }, + { + "teal": 4209, + "source": "contracts/stakingPool.algo.ts:1003", + "pc": [ + 3925, + 3926, + 3927, + 3928, + 3929, + 3930, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942 + ] + }, + { + "teal": 4210, + "source": "contracts/stakingPool.algo.ts:1003", + "pc": [ + 3943, + 3944 + ] + }, + { + "teal": 4215, + "source": "contracts/stakingPool.algo.ts:1005", + "pc": [ + 3945, + 3946 + ] + }, + { + "teal": 4216, + "source": "contracts/stakingPool.algo.ts:1005", + "pc": [ + 3947, + 3948, + 3949, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3962, + 3963, + 3964 + ] + }, + { + "teal": 4217, + "source": "contracts/stakingPool.algo.ts:1005", + "pc": [ + 3965 + ] + }, + { + "teal": 4218, + "source": "contracts/stakingPool.algo.ts:1005", + "pc": [ + 3966, + 3967, + 3968 + ] + }, + { + "teal": 4223, + "source": "contracts/stakingPool.algo.ts:1006", + "pc": [ + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3981, + 3982, + 3983, + 3984, + 3985, + 3986 + ] + }, + { + "teal": 4224, + "source": "contracts/stakingPool.algo.ts:1006", + "pc": [ + 3987, + 3988 + ] + }, + { + "teal": 4231, + "source": "contracts/stakingPool.algo.ts:1008", + "pc": [ + 3989, + 3990 + ] + }, + { + "teal": 4232, + "source": "contracts/stakingPool.algo.ts:1008", + "pc": [ + 3991 + ] + }, + { + "teal": 4233, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 3992 + ] + }, + { + "teal": 4234, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 3993, + 3994 + ] + }, + { + "teal": 4235, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 3995, + 3996 + ] + }, + { + "teal": 4236, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 3997 + ] + }, + { + "teal": 4237, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 3998 + ] + }, + { + "teal": 4238, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 3999, + 4000 + ] + }, + { + "teal": 4239, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4001 + ] + }, + { + "teal": 4240, + "source": "contracts/stakingPool.algo.ts:1010", + "pc": [ + 4002, + 4003 + ] + }, + { + "teal": 4241, + "source": "contracts/stakingPool.algo.ts:1010", + "pc": [ + 4004, + 4005 + ] + }, + { + "teal": 4242, + "source": "contracts/stakingPool.algo.ts:1010", + "pc": [ + 4006 + ] + }, + { + "teal": 4243, + "source": "contracts/stakingPool.algo.ts:1010", + "pc": [ + 4007, + 4008 + ] + }, + { + "teal": 4244, + "source": "contracts/stakingPool.algo.ts:1010", + "pc": [ + 4009 + ] + }, + { + "teal": 4245, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4010 + ] + }, + { + "teal": 4246, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4011 + ] + }, + { + "teal": 4247, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4012 + ] + }, + { + "teal": 4248, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4013, + 4014 + ] + }, + { + "teal": 4249, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4015 + ] + }, + { + "teal": 4252, + "source": "contracts/stakingPool.algo.ts:1009", + "errorMessage": "(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits", + "pc": [ + 4016 + ] + }, + { + "teal": 4253, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4017, + 4018 + ] + }, + { + "teal": 4254, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4019 + ] + }, + { + "teal": 4255, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4020 + ] + }, + { + "teal": 4256, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4021 + ] + }, + { + "teal": 4257, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4022 + ] + }, + { + "teal": 4258, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4023, + 4024 + ] + }, + { + "teal": 4259, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4025 + ] + }, + { + "teal": 4260, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4026 + ] + }, + { + "teal": 4261, + "source": "contracts/stakingPool.algo.ts:1009", + "pc": [ + 4027 + ] + }, + { + "teal": 4262, + "source": "contracts/stakingPool.algo.ts:1008", + "pc": [ + 4028 + ] + }, + { + "teal": 4267, + "source": "contracts/stakingPool.algo.ts:1014", + "pc": [ + 4029, + 4030, + 4031 + ] + }, + { + "teal": 4271, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4032, + 4033 + ] + }, + { + "teal": 4272, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4034, + 4035 + ] + }, + { + "teal": 4273, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4036 + ] + }, + { + "teal": 4274, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4037 + ] + }, + { + "teal": 4275, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4038, + 4039 + ] + }, + { + "teal": 4276, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4040 + ] + }, + { + "teal": 4277, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4041 + ] + }, + { + "teal": 4278, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4042 + ] + }, + { + "teal": 4279, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4043 + ] + }, + { + "teal": 4280, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4044 + ] + }, + { + "teal": 4281, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4045, + 4046 + ] + }, + { + "teal": 4282, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4047 + ] + }, + { + "teal": 4285, + "source": "contracts/stakingPool.algo.ts:1015", + "errorMessage": "(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits", + "pc": [ + 4048 + ] + }, + { + "teal": 4286, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4049, + 4050 + ] + }, + { + "teal": 4287, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4051 + ] + }, + { + "teal": 4288, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4052 + ] + }, + { + "teal": 4289, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4053 + ] + }, + { + "teal": 4290, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4054 + ] + }, + { + "teal": 4291, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4055, + 4056 + ] + }, + { + "teal": 4292, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4057 + ] + }, + { + "teal": 4293, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4058 + ] + }, + { + "teal": 4294, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4059 + ] + }, + { + "teal": 4295, + "source": "contracts/stakingPool.algo.ts:1015", + "pc": [ + 4060 + ] + }, + { + "teal": 4299, + "source": "contracts/stakingPool.algo.ts:1016", + "pc": [ + 4061, + 4062 + ] + }, + { + "teal": 4300, + "source": "contracts/stakingPool.algo.ts:1016", + "pc": [ + 4063 + ] + }, + { + "teal": 4301, + "source": "contracts/stakingPool.algo.ts:1016", + "pc": [ + 4064 + ] + }, + { + "teal": 4305, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4065, + 4066 + ] + }, + { + "teal": 4306, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4067, + 4068 + ] + }, + { + "teal": 4307, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4069, + 4070 + ] + }, + { + "teal": 4308, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4071, + 4072 + ] + }, + { + "teal": 4309, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4073 + ] + }, + { + "teal": 4310, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4074 + ] + }, + { + "teal": 4311, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4075 + ] + }, + { + "teal": 4312, + "source": "contracts/stakingPool.algo.ts:1017", + "pc": [ + 4076 + ] + }, + { + "teal": 4315, + "source": "contracts/stakingPool.algo.ts:987", + "pc": [ + 4077 + ] + }, + { + "teal": 4319, + "source": "contracts/stakingPool.algo.ts:1021", + "pc": [ + 4078, + 4079, + 4080 + ] + }, + { + "teal": 4322, + "source": "contracts/stakingPool.algo.ts:1021", + "pc": [ + 4081 + ] + }, + { + "teal": 4327, + "source": "contracts/stakingPool.algo.ts:1026", + "pc": [ + 4082, + 4083 + ] + }, + { + "teal": 4328, + "source": "contracts/stakingPool.algo.ts:1026", + "pc": [ + 4084, + 4085 + ] + }, + { + "teal": 4329, + "source": "contracts/stakingPool.algo.ts:1026", + "pc": [ + 4086 + ] + }, + { + "teal": 4330, + "source": "contracts/stakingPool.algo.ts:1026", + "pc": [ + 4087, + 4088, + 4089 + ] + }, + { + "teal": 4335, + "source": "contracts/stakingPool.algo.ts:1028", + "pc": [ + 4090, + 4091 + ] + }, + { + "teal": 4336, + "source": "contracts/stakingPool.algo.ts:1028", + "pc": [ + 4092, + 4093 + ] + }, + { + "teal": 4337, + "source": "contracts/stakingPool.algo.ts:1028", + "pc": [ + 4094 + ] + }, + { + "teal": 4341, + "source": "contracts/stakingPool.algo.ts:1029", + "pc": [ + 4095 + ] + }, + { + "teal": 4347, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4096, + 4097 + ] + }, + { + "teal": 4348, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4098 + ] + }, + { + "teal": 4349, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4099 + ] + }, + { + "teal": 4350, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4100, + 4101 + ] + }, + { + "teal": 4351, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4102, + 4103 + ] + }, + { + "teal": 4352, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4104, + 4105 + ] + }, + { + "teal": 4353, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4106 + ] + }, + { + "teal": 4354, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4107, + 4108 + ] + }, + { + "teal": 4355, + "source": "contracts/stakingPool.algo.ts:1033", + "pc": [ + 4109 + ] + }, + { + "teal": 4356, + "source": "contracts/stakingPool.algo.ts:1032", + "pc": [ + 4110, + 4111 + ] + }, + { + "teal": 4361, + "source": "contracts/stakingPool.algo.ts:1034", + "pc": [ + 4112, + 4113 + ] + }, + { + "teal": 4362, + "source": "contracts/stakingPool.algo.ts:1034", + "pc": [ + 4114 + ] + }, + { + "teal": 4363, + "source": "contracts/stakingPool.algo.ts:1034", + "pc": [ + 4115 + ] + }, + { + "teal": 4364, + "source": "contracts/stakingPool.algo.ts:1034", + "pc": [ + 4116, + 4117, + 4118 + ] + }, + { + "teal": 4369, + "source": "contracts/stakingPool.algo.ts:1036", + "pc": [ + 4119, + 4120 + ] + }, + { + "teal": 4370, + "source": "contracts/stakingPool.algo.ts:1036", + "pc": [ + 4121, + 4122 + ] + }, + { + "teal": 4371, + "source": "contracts/stakingPool.algo.ts:1036", + "pc": [ + 4123 + ] + }, + { + "teal": 4375, + "source": "contracts/stakingPool.algo.ts:1037", + "pc": [ + 4124 + ] + }, + { + "teal": 4380, + "source": "contracts/stakingPool.algo.ts:1042", + "pc": [ + 4125, + 4126 + ] + }, + { + "teal": 4381, + "source": "contracts/stakingPool.algo.ts:1042", + "pc": [ + 4127, + 4128, + 4129, + 4130 + ] + }, + { + "teal": 4382, + "source": "contracts/stakingPool.algo.ts:1042", + "pc": [ + 4131, + 4132 + ] + }, + { + "teal": 4383, + "source": "contracts/stakingPool.algo.ts:1042", + "pc": [ + 4133 + ] + }, + { + "teal": 4384, + "source": "contracts/stakingPool.algo.ts:1042", + "pc": [ + 4134 + ] + }, + { + "teal": 4385, + "source": "contracts/stakingPool.algo.ts:1021", + "pc": [ + 4135 + ] + }, + { + "teal": 4388, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4136, + 4137, + 4138, + 4139, + 4140, + 4141 + ] + }, + { + "teal": 4389, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4142, + 4143, + 4144 + ] + }, + { + "teal": 4390, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4145, + 4146, + 4147, + 4148 + ] + }, + { + "teal": 4393, + "source": "contracts/stakingPool.algo.ts:37", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 4149 + ] + }, + { + "teal": 4396, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4150, + 4151, + 4152, + 4153, + 4154, + 4155 + ] + }, + { + "teal": 4397, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4156, + 4157, + 4158, + 4159, + 4160, + 4161 + ] + }, + { + "teal": 4398, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4162, + 4163, + 4164, + 4165, + 4166, + 4167 + ] + }, + { + "teal": 4399, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4168, + 4169, + 4170, + 4171, + 4172, + 4173 + ] + }, + { + "teal": 4400, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4174, + 4175, + 4176, + 4177, + 4178, + 4179 + ] + }, + { + "teal": 4401, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4180, + 4181, + 4182, + 4183, + 4184, + 4185 + ] + }, + { + "teal": 4402, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4186, + 4187, + 4188, + 4189, + 4190, + 4191 + ] + }, + { + "teal": 4403, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4192, + 4193, + 4194, + 4195, + 4196, + 4197 + ] + }, + { + "teal": 4404, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4198, + 4199, + 4200, + 4201, + 4202, + 4203 + ] + }, + { + "teal": 4405, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4204, + 4205, + 4206, + 4207, + 4208, + 4209 + ] + }, + { + "teal": 4406, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4210, + 4211, + 4212, + 4213, + 4214, + 4215 + ] + }, + { + "teal": 4407, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4216, + 4217, + 4218, + 4219, + 4220, + 4221 + ] + }, + { + "teal": 4408, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4222, + 4223 + ] + }, + { + "teal": 4409, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4224, + 4225, + 4226 + ] + }, + { + "teal": 4410, + "source": "contracts/stakingPool.algo.ts:37", + "pc": [ + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4237, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4250, + 4251, + 4252, + 4253, + 4254 + ] + }, + { + "teal": 4413, + "source": "contracts/stakingPool.algo.ts:37", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 4255 + ] + } + ], + "pcOffsetMethod": "cblocks" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gbWluRW50cnlTdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gY3JlYXRpbmdDb250cmFjdElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbihjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElELCB2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCwgbWluRW50cnlTdGFrZTogdWludDY0KTogdm9pZAovLwovLyBJbml0aWFsaXplIHRoZSBzdGFraW5nIHBvb2wgdy8gb3duZXIgYW5kIG1hbmFnZXIsIGJ1dCBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QuCi8vIEBwYXJhbSB7dWludDY0fSBjcmVhdGluZ0NvbnRyYWN0SWQgLSBpZCBvZiBjb250cmFjdCB0aGF0IGNvbnN0cnVjdGVkIHVzIC0gdGhlIHZhbGlkYXRvciBhcHBsaWNhdGlvbiAoc2luZ2xlIGdsb2JhbCBpbnN0YW5jZSkKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIC0gaWQgb2YgdmFsaWRhdG9yIHdlJ3JlIGEgc3Rha2luZyBwb29sIG9mCi8vIEBwYXJhbSB7dWludDY0fSBwb29sSWQgLSB3aGljaCBwb29sIGlkIGFyZSB3ZQovLyBAcGFyYW0ge3VpbnQ2NH0gbWluRW50cnlTdGFrZSAtIG1pbmltdW0gYW1vdW50IHRvIGJlIGluIHBvb2wsIGJ1dCBhbHNvIG1pbmltdW0gYW1vdW50IGJhbGFuY2UgY2FuJ3QgZ28gYmVsb3cgKHdpdGhvdXQgcmVtb3ZpbmcgYWxsISkKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byA0IDAKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyCgkvLyBjcmVhdGluZ0NvbnRyYWN0SWQgPT09IEFwcElELmZyb21VaW50NjQoMCkKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglpbnQgMAoJPT0KCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgPT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50IDAKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDUKCS8vIGFzc2VydChwb29sSWQgPT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgk9PQoJYXNzZXJ0CgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDcKCS8vIGFzc2VydCh2YWxpZGF0b3JJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwOAoJLy8gYXNzZXJ0KHBvb2xJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50IDAKCSE9Cglhc3NlcnQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEwCgkvLyBhc3NlcnQobWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC00IC8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJaW50IDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTExCgkvLyB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSA9IGNyZWF0aW5nQ29udHJhY3RJZAoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJZnJhbWVfZGlnIC0xIC8vIGNyZWF0aW5nQ29udHJhY3RJZDogQXBwSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEyCgkvLyB0aGlzLnZhbGlkYXRvcklkLnZhbHVlID0gdmFsaWRhdG9ySWQKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMwoJLy8gdGhpcy5wb29sSWQudmFsdWUgPSBwb29sSWQKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTQKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWludCAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIwCgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMQoJLy8gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlID0gZ2xvYmFscy5yb3VuZCAtIChnbG9iYWxzLnJvdW5kICUgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUpCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglnbG9iYWwgUm91bmQKCWdsb2JhbCBSb3VuZAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIyCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAwIGFzIHVpbnQxMjgKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjMKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEzNgoJLy8gcmV0dXJuIFNDQk9YX1BFUkJPWCArIHRvdGFsTnVtQnl0ZXMgKiBTQ0JPWF9QRVJCWVRFCglpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJaW50IDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMCAobWJyUGF5bWVudCkgZm9yIGluaXRTdG9yYWdlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgaW5pdFN0b3JhZ2UocGF5KXZvaWQKCWNhbGxzdWIgaW5pdFN0b3JhZ2UKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdG9yYWdlKG1iclBheW1lbnQ6IFBheVR4bik6IHZvaWQKLy8KLy8gQ2FsbGVkIGFmdGVyIHdlJ3JlIGNyZWF0ZWQgYW5kIHRoZW4gZnVuZGVkLCBzbyB3ZSBjYW4gY3JlYXRlIG91ciBsYXJnZSBzdGFrZXJzIGxlZGdlciBzdG9yYWdlCi8vIENhbGxlciBoYXMgdG8gZ2V0IE1CUiBhbW91bnRzIGZyb20gVmFsaWRhdG9yUmVnaXN0cnkgdG8ga25vdyBob3cgbXVjaCB0byBmdW5kIHVzIHRvIGNvdmVyIHRoZSBib3ggc3RvcmFnZSBjb3N0Ci8vIElmIHRoaXMgaXMgcG9vbCAxIEFORCB0aGUgdmFsaWRhdG9yIGhhcyBzcGVjaWZpZWQgYSByZXdhcmQgdG9rZW4sIG9wdC1pbiB0byB0aGF0IHRva2VuCi8vIHNvIHRoYXQgdGhlIHZhbGlkYXRvciBjYW4gc2VlZCB0aGUgcG9vbCB3aXRoIGZ1dHVyZSByZXdhcmRzIG9mIHRoYXQgdG9rZW4uCi8vIEBwYXJhbSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgc3Rha2luZyBwb29scycgc3RvcmFnZQppbml0U3RvcmFnZToKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDMKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNDcKCS8vIGFzc2VydCghdGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkJykKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTUyCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU0CgkvLyBpc1Rva2VuRWxpZ2libGUgPSB2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCAhPT0gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWludCAwCgkhPQoJZnJhbWVfYnVyeSAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NQoJLy8gZXh0cmFNQlIgPSBpc1Rva2VuRWxpZ2libGUgJiYgdGhpcy5wb29sSWQudmFsdWUgPT09IDEgPyBBU1NFVF9IT0xESU5HX0ZFRSA6IDAKCWZyYW1lX2RpZyAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJZHVwCglieiAqc2tpcF9hbmQwCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgkmJgoKKnNraXBfYW5kMDoKCWJ6ICp0ZXJuYXJ5MF9mYWxzZQoJaW50IDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnQgMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnQgMTAwMDAwCglmcmFtZV9kaWcgMiAvLyBleHRyYU1CUjogdWludDY0CgkrCglpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWZyYW1lX2J1cnkgMyAvLyBQb29sSW5pdE1icjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYyCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBQb29sSW5pdE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6IlBvb2xJbml0TWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2MwoJLy8gdGhpcy5zdGFrZXJzLmNyZWF0ZSgpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCglpbnQgMTI4MDAKCWJveF9jcmVhdGUKCXBvcAoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjUKCS8vIGlzVG9rZW5FbGlnaWJsZSAmJiB0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMQoJZnJhbWVfZGlnIDEgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCglkdXAKCWJ6ICpza2lwX2FuZDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjkKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNzAKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjFfZW5kOgoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9hZGRTdGFrZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnQgMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50IHBheQoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZWRBbW91bnRQYXltZW50KSBmb3IgYWRkU3Rha2UgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgYWRkU3Rha2UKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHN0YWtlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBBZGRzIHN0YWtlIHRvIHRoZSBnaXZlbiBhY2NvdW50LgovLyBDYW4gT05MWSBiZSBjYWxsZWQgYnkgdGhlIHZhbGlkYXRvciBjb250cmFjdCB0aGF0IGNyZWF0ZWQgdXMKLy8gTXVzdCByZWNlaXZlIHBheW1lbnQgZnJvbSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciBhbW91bnQgYmVpbmcgc3Rha2VkLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCBwcmlvciBwYXltZW50IGNvbWluZyBmcm9tIHZhbGlkYXRvciBjb250cmFjdCB0byB1cyBvbiBiZWhhbGYgb2Ygc3Rha2VyLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhY2NvdW50IGFkZGluZyBuZXcgc3Rha2UKLy8gQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdGFraW5nIHBvb2wgaXMgZnVsbC4KLy8gQHJldHVybnMge3VpbnQ2NH0gbmV3ICdlbnRyeSByb3VuZCcgcm91bmQgbnVtYmVyIG9mIHN0YWtlIGFkZAphZGRTdGFrZToKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxODYKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMuZXhpc3RzLCAnc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QnKQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyBzdGFrZSBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTkzCgkvLyBhc3NlcnQoc3Rha2VyICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTk2CgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjAwCgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50LAoJLy8gICAgICAgICB9KQoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSByZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgUmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoicmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50In0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIwOQoJLy8gZW50cnlSb3VuZCA9IGdsb2JhbHMucm91bmQgKyBBTEdPUkFORF9TVEFLSU5HX0JMT0NLX0RFTEFZCglnbG9iYWwgUm91bmQKCWludCAzMjAKCSsKCWZyYW1lX2J1cnkgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTAKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJKwoJZ2xvYmFsIFJvdW5kCgktCglmcmFtZV9idXJ5IDIgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9CgkvLyAgICAgICAgICAgICB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWl0b2IKCWZyYW1lX2RpZyAyIC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJYisKCWR1cAoJYml0bGVuCglpbnQgMTI4Cgk8PQoKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gaTogdWludDY0CgoqZm9yXzA6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMF9lbmQKCgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjNfZW5kCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjYKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNwoJLy8gY21wU3Rha2VyLmVudHJ5Um91bmQgPSBlbnRyeVJvdW5kCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzIKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWIgKmFkZFN0YWtlKnJldHVybgoKKmlmM19lbmQ6CgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIGNtcFN0YWtlci5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAwCgk9PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDI6CglieiAqaWY0X2VuZAoKCS8vICppZjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjRfZW5kOgoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMyAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzOQoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBTdGFraW5nIHBvb2wgZnVsbAoJZXJyCgoqaWY1X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI0NgoJLy8gYXNzZXJ0KHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50ID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcpCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ4CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXS5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMQoJLQoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgMzIKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglnbG9iYWwgWmVyb0FkZHJlc3MKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDkKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSB7CgkvLyAgICAgICAgICAgICBhY2NvdW50OiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBiYWxhbmNlOiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCwKCS8vICAgICAgICAgICAgIHRvdGFsUmV3YXJkZWQ6IDAsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkJhbGFuY2U6IDAsCgkvLyAgICAgICAgICAgICBlbnRyeVJvdW5kOiBlbnRyeVJvdW5kLAoJLy8gICAgICAgICB9CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAxCgktCglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NgoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlICs9IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNTcKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCiphZGRTdGFrZSpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZToKCS8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIHJlbW92ZVN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKCWNhbGxzdWIgcmVtb3ZlU3Rha2UKCWludCAxCglyZXR1cm4KCi8vIHJlbW92ZVN0YWtlKHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9VbnN0YWtlOiB1aW50NjQpOiB2b2lkCi8vCi8vIFJlbW92ZXMgc3Rha2Ugb24gYmVoYWxmIG9mIGNhbGxlciAocmVtb3Zpbmcgb3duIHN0YWtlKS4gIElmIGFueSB0b2tlbiByZXdhcmRzIGV4aXN0LCB0aG9zZSBhcmUgYWx3YXlzIHNlbnQgaW4KLy8gZnVsbC4gQWxzbyBub3RpZmllcyB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciB0aGlzIHBvb2xzIHZhbGlkYXRvciBvZiB0aGUgc3Rha2VyIC8gYmFsYW5jZSBjaGFuZ2VzLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIGFjY291bnQgdG8gcmVtb3ZlLiAgbm9ybWFsbHkgc2FtZSBhcyBzZW5kZXIsIGJ1dCB0aGUgdmFsaWRhdG9yIG93bmVyIG9yIG1hbmFnZXIgY2FuIGFsc28gY2FsbAovLyB0aGlzIHRvIHJlbW92ZSB0aGUgc3BlY2lmaWVkIHN0YWtlciBleHBsaWNpdGx5LiBUaGUgcmVtb3ZlZCBzdGFrZSBNVVNUIG9ubHkgZ28gdG8gdGhlIHN0YWtlciBvZiBjb3Vyc2UuICBUaGlzIGlzCi8vIHNvIGEgdmFsaWRhdG9yIGNhbiBzaHV0IGRvd24gYSBwb29vbCBhbmQgcmVmdW5kIHRoZSBzdGFrZXJzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBraWNrIG91dCBzdGFrZXJzIHdobyBubyBsb25nZXIKLy8gbWVldCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyAoZGV0ZXJtaW5lZCBieSB0aGUgbm9kZSBkYWVtb24pLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9VbnN0YWtlIC0gVGhlIGFtb3VudCBvZiBzdGFrZSB0byBiZSByZW1vdmVkLiAgU3BlY2lmeSAwIHRvIHJlbW92ZSBhbGwgc3Rha2UuCi8vIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWNjb3VudCBoYXMgaW5zdWZmaWNpZW50IGJhbGFuY2Ugb3IgaWYgdGhlIGFjY291bnQgaXMgbm90IGZvdW5kLgpyZW1vdmVTdGFrZToKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDYKCgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjc0CgkvLyBzdGFrZXIgIT09IHRoaXMudHhuLnNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJIT0KCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwKCS8vICAgICAgICAgICAgICAgICAnSWYgc3Rha2VyIGlzIG5vdCBzZW5kZXIgaW4gcmVtb3ZlU3Rha2UgY2FsbCwgdGhlbiBzZW5kZXIgTVVTVCBiZSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICAgICApCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCippZjZfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgxCgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgzCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMV9lbmQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg0CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg4CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjhfZW5kCgoJLy8gKmlmOF9jb25zZXF1ZW50CgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg5CgkvLyBhbW91bnRUb1Vuc3Rha2UgPT09IDAKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWY5X2VuZAoKCS8vICppZjlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjkxCgkvLyBhbW91bnRUb1Vuc3Rha2UgPSBjbXBTdGFrZXIuYmFsYW5jZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2J1cnkgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCippZjlfZW5kOgoJLy8gKmlmMTBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTMKCS8vIGNtcFN0YWtlci5iYWxhbmNlIDwgYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgk8CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZQoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTYKCS8vIGNtcFN0YWtlci5iYWxhbmNlIC09IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMzIgLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTkKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA+IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglpbnQgMAoJPgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDIKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzA0CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwNQoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMyAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxMl9lbmQKCippZjEyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjIKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjMKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTJfZW5kOgoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzI4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgICAgIGNtcFN0YWtlci5iYWxhbmNlID09PSAwIHx8IGNtcFN0YWtlci5iYWxhbmNlID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkJywKCS8vICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJaW50IDAKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglieXRlIDB4NmQ2OTZlNDU2ZTc0NzI3OTUzNzQ2MTZiNjUgLy8gIm1pbkVudHJ5U3Rha2UiCglhcHBfZ2xvYmFsX2dldAoJPj0KCXx8Cgoqc2tpcF9vcjA6CgkvLyBjYW5ub3QgcmVkdWNlIGJhbGFuY2UgYmVsb3cgbWluaW11bSBhbGxvd2VkIHN0YWtlIHVubGVzcyBhbGwgaXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM2CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICBub3RlOiAndW5zdGFrZWQnLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJYnl0ZSAweDc1NmU3Mzc0NjE2YjY1NjQgLy8gInVuc3Rha2VkIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MQoJLy8gc3Rha2VyUmVtb3ZlZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCgkvLyAqaWYxM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNDUKCS8vIGNtcFN0YWtlci5hY2NvdW50ID0gZ2xvYmFscy56ZXJvQWRkcmVzcwoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMAoJZ2xvYmFsIFplcm9BZGRyZXNzCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ4CgkvLyBzdGFrZXJSZW1vdmVkID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgNCAvLyBzdGFrZXJSZW1vdmVkOiBib29sCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTEKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzU0CgkvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOCA9IChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKGFtb3VudFRvVW5zdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgNiAvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYxCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM2MgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludCAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTEKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50IDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjE3X2Vsc2UKCgkvLyAqaWYxN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTkKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDAxCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA0IC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA2CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQwNwoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgNCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDgKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDkKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTEKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTIKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxN19lbmQKCippZjE3X2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTcKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MjcKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc3Rha2VSZW1vdmVkPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvLyBubyBhbGdvIHJlbW92ZWQKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBzdGFrZXIgaXNuJ3QgYmVpbmcgcmVtb3ZlZC4KCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDI4CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJY29uY2F0Cgl0eG5hIEFwcGxpY2F0aW9ucyAwCglpdG9iCgljb25jYXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlckluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VySW5mbyhhZGRyZXNzKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0U3Rha2VySW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFN0YWtlckluZm8oc3Rha2VyOiBBZGRyZXNzKTogU3Rha2VkSW5mbwovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHJldHVybnMge1N0YWtlZEluZm99IC0gVGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHN0YWtlci4KLy8gQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHN0YWtlcidzIGFjY291bnQgaXMgbm90IGZvdW5kLgpnZXRTdGFrZXJJbmZvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmMThfZW5kCgoJLy8gKmlmMThfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDU0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxOF9lbmQ6CgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NgoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCAzMgoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKmdldFN0YWtlckluZm8qcmV0dXJuCgoqaWYxOV9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCgoqZ2V0U3Rha2VySW5mbypyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9wYXlUb2tlblJld2FyZDoKCS8vIGFtb3VudFRvU2VuZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChzdGFrZXIpIGZvciBwYXlUb2tlblJld2FyZCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBwYXlUb2tlblJld2FyZAoJaW50IDEKCXJldHVybgoKLy8gcGF5VG9rZW5SZXdhcmQoc3Rha2VyOiBBZGRyZXNzLCByZXdhcmRUb2tlbjogdWludDY0LCBhbW91bnRUb1NlbmQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gW0ludGVybmFsIHByb3RvY29sIG1ldGhvZF0gUmVtb3ZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiAnY29tbXVuaXR5IHRva2VuJyByZXdhcmRzIGZvciBhIHN0YWtlci4KLy8gVGhpcyBjYW4gT05MWSBiZSBjYWxsZWQgYnkgb3VyIHZhbGlkYXRvciBhbmQgb25seSBpZiB3ZSdyZSBwb29sIDEgLSB3aXRoIHRoZSB0b2tlbi4KLy8gTm90ZTogdGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIGFzIHBhcnQgb2YgT1dORVIgd2FudGluZyB0byBzZW5kIHRoZSByZXdhcmQgdG9rZW5zCi8vIHNvbWV3aGVyZSBlbHNlIChpZSBpZiB0aGV5J3JlIHN1bnNldHRpbmcgdGhlaXIgdmFsaWRhdG9yIGFuZCBuZWVkIHRoZSByZXdhcmQgdG9rZW5zIGJhY2spLgovLyBJdCdzIHVwIHRvIHRoZSB2YWxpZGF0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGJhbGFuY2UgaW4gcmV3YXJkVG9rZW5IZWxkQmFjayBpcyBob25vcmVkLgovLyBAcGFyYW0gc3Rha2VyIC0gdGhlIHN0YWtlciBhY2NvdW50IHRvIHNlbmQgcmV3YXJkcyB0bwovLyBAcGFyYW0gcmV3YXJkVG9rZW4gLSBpZCBvZiByZXdhcmQgdG9rZW4gKHRvIGF2b2lkIHJlLWVudHJhbmN5IGluIGNhbGxpbmcgdmFsaWRhdG9yIGJhY2sgdG8gZ2V0IGlkKQovLyBAcGFyYW0gYW1vdW50VG9TZW5kIC0gYW1vdW50IHRvIHNlbmQgdGhlIHN0YWtlciAodGhlcmUgaXMgc2lnbmlmaWNhbnQgdHJ1c3QgaGVyZSghKSAtIGFsc28gd2h5IG9ubHkgdmFsaWRhdG9yIGNhbiBjYWxsIHVzCnBheVRva2VuUmV3YXJkOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICAndGhpcyBjYW4gb25seSBiZSBjYWxsZWQgdmlhIHRoZSB2YWxpZGF0b3IgY29udHJhY3QnLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzkKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ211c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMnKQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgk9PQoKCS8vIG11c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuICE9PSAwLCAnY2FuIG9ubHkgY2xhaW0gdG9rZW4gcmV3YXJkcyBmcm9tIHZhbGlkYXRvciB0aGF0IGhhcyB0aGVtJykKCWZyYW1lX2RpZyAtMiAvLyByZXdhcmRUb2tlbjogdWludDY0CglpbnQgMAoJIT0KCgkvLyBjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pLAoJLy8gICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZCwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pCglmcmFtZV9kaWcgLTIgLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODUKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg2CgkvLyBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCiphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXI6CgkvLyBhbGdvZFZlcjogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGV4ZWN1dGUgdXBkYXRlQWxnb2RWZXIoc3RyaW5nKXZvaWQKCWNhbGxzdWIgdXBkYXRlQWxnb2RWZXIKCWludCAxCglyZXR1cm4KCi8vIHVwZGF0ZUFsZ29kVmVyKGFsZ29kVmVyOiBzdHJpbmcpOiB2b2lkCi8vCi8vIFVwZGF0ZSB0aGUgKGhvbm9yIHN5c3RlbSkgYWxnb2QgdmVyc2lvbiBmb3IgdGhlIG5vZGUgYXNzb2NpYXRlZCB0byB0aGlzIHBvb2wuICBUaGUgbm9kZSBtYW5hZ2VtZW50IGRhZW1vbgovLyBzaG91bGQgY29tcGFyZSBpdHMgY3VycmVudCBub2RlcyB2ZXJzaW9uIHRvIHRoZSB2ZXJzaW9uIHN0b3JlZCBpbiBnbG9iYWwgc3RhdGUsIHVwZGF0aW5nIHdoZW4gZGlmZmVyZW50LgovLyBUaGUgcmV0aSBub2RlIGRhZW1vbiBjb21wb3NlcyBpdHMgb3duIHZlcnNpb24gc3RyaW5nIHVzaW5nIGZvcm1hdDoKLy8ge21ham9yfS57bWlub3J9LntidWlsZH0ge2JyYW5jaH0gW3tjb21taXQgaGFzaH1dLAovLyBpZTogMy4yMi4wIHJlbC9zdGFibGUgWzZiNTA4OTc1XQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0FMTCBdCi8vIEBwYXJhbSB7c3RyaW5nfSBhbGdvZFZlciAtIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFsZ29yYW5kIG5vZGUgZGFlbW9uIHZlcnNpb24gKHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biBtZXRhIHZlcnNpb24pCnVwZGF0ZUFsZ29kVmVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAwCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MDEKCS8vIHRoaXMuYWxnb2RWZXIudmFsdWUgPSBhbGdvZFZlcgoJYnl0ZSAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50IDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MTYKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjMKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB2YWxpZGF0b3JDb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2OSA0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI0CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAyIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjUKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyOAoJLy8gbGFzdFBheW91dEVwb2NoID0gdGhpcy5sYXN0UGF5b3V0LnZhbHVlIC0gKHRoaXMubGFzdFBheW91dC52YWx1ZSAlIGVwb2NoUm91bmRMZW5ndGgpCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIGxhc3RQYXlvdXRFcG9jaDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTMwCgkvLyBhc3NlcnQobGFzdFBheW91dEVwb2NoICE9PSB0aGlzRXBvY2hCZWdpbiwgImNhbid0IGNhbGwgZXBvY2hCYWxhbmNlVXBkYXRlIGluIHNhbWUgZXBvY2ggYXMgcHJpb3IgY2FsbCIpCglmcmFtZV9kaWcgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMgoJLy8gdGhpcy5jaGVja0lmQmluQ2xvc2VkKCkKCWNhbGxzdWIgY2hlY2tJZkJpbkNsb3NlZAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNQoJLy8gdGhpcy5sYXN0UGF5b3V0LnZhbHVlID0gY3VyUm91bmQKCWJ5dGUgMHg2YzYxNzM3NDUwNjE3OTZmNzU3NCAvLyAibGFzdFBheW91dCIKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTM2CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlICs9IDEKCWJ5dGUgMHg2NTcwNmY2MzY4NGU3NTZkNjI2NTcyIC8vICJlcG9jaE51bWJlciIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50IDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkhPQoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTUxCgkvLyBwb29sT25lQXBwSUQgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFBvb2xBcHBJZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTMKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBwb29sT25lQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1NQoJLy8gcG9vbE9uZUFkZHJlc3MgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkuYWRkcmVzcwoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfYnVyeSA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjIyX2Vsc2UKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjEKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnNldFRva2VuUGF5b3V0UmF0aW8+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTYyCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTY4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjkKCS8vIG1ldGhvZEFyZ3M6IFt7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH1dCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU3NwoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJLQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg4CgkvLyBhbGdvU2F0dXJhdGlvbkFtdCA9IHRoaXMuYWxnb1NhdHVyYXRpb25MZXZlbCgpCgljYWxsc3ViIGFsZ29TYXR1cmF0aW9uTGV2ZWwKCWZyYW1lX2J1cnkgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoKCS8vICppZjIzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk2CgkvLyB2YWxpZGF0b3JTdGF0ZS50b3RhbEFsZ29TdGFrZWQgPiBhbGdvU2F0dXJhdGlvbkFtdAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0Cgk+CglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1OTcKCS8vIGlzUG9vbFNhdHVyYXRlZCA9IHRydWUKCWludCAxCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjAzCgkvLyB0b2tlblJld2FyZEF2YWlsID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA0CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNQoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA2CgkvLyBleGNlc3NUb0ZlZVNpbmsgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA3CgkvLyBpc1Rva2VuRWxpZ2libGUKCWZyYW1lX2RpZyA1IC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA4CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICAgICAgcG9vbE9uZUFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEwIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTMKCS8vIHRva2VuUmV3YXJkQmFsID49IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQKCWZyYW1lX2RpZyAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJPj0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYxOQoJLy8gb3VyUG9vbFBjdE9mV2hvbGUgPSB0b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW3RoaXMucG9vbElkLnZhbHVlIC0gMV0KCWZyYW1lX2RpZyA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCglpbnQgMAoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgktCglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2J1cnkgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYyMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IHdpZGVSYXRpbyhbdmFsaWRhdG9yQ29uZmlnLnJld2FyZFBlclBheW91dCwgb3VyUG9vbFBjdE9mV2hvbGVdLCBbMV8wMDBfMDAwXSkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2MSA4CglidG9pCglmcmFtZV9kaWcgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKKmlmMjVfZW5kOgoKKmlmMjRfZW5kOgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjUKCS8vIHRva2VuUmV3YXJkQXZhaWwgPT09IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzAKCS8vIGFsZ29SZXdhcmRBdmFpbCA8IDFfMDAwXzAwMAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMV8wMDBfMDAwCgk8CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzEKCS8vIGxvZygnIXRva2VuJiYhbm9hbGdvIHRvIHBheScpCglieXRlIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnQgMAoJaW50IDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTUKCS8vIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU2CgkvLyByZWNlaXZlcjogYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS5mZWVTaW5rCgl0eG4gRmlyc3RWYWxpZAoJaW50IDEKCS0KCWJsb2NrIEJsa0ZlZVNpbmsKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTcKCS8vIG5vdGU6ICdwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rJwoJYnl0ZSAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnQgMl8xMDBfMDAwCgk8CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NQoJLy8gbWFuYWdlclRvcE9mZiA9IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDwgMl8xMDBfMDAwID8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgOiAyXzEwMF8wMDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMl8xMDBfMDAwCgk8CglieiAqdGVybmFyeTFfZmFsc2UKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgliICp0ZXJuYXJ5MV9lbmQKCip0ZXJuYXJ5MV9mYWxzZToKCWludCAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODcKCS8vIGFtb3VudDogbWFuYWdlclRvcE9mZgoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODgKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcubWFuYWdlcgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODkKCS8vIG5vdGU6ICd2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcycKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50IDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NAoJLy8gYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgktCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NQoJLy8gcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTc3IDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njk2CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCcKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCA0MDAKCTwKCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDY0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnQgMTAwMAoJKgoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgkvCglmcmFtZV9idXJ5IDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCgkvLyAqaWYzOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1OAoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjAKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnVG9rZW5SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSwgMTAwMF0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI2IC8vIG9yaWdUb2tlblJld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmMzhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzcyCgkvLyBzdGFrZXJSZXdhcmQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ0FsZ29SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlLCAxMDAwXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNSAvLyBvcmlnQWxnb1Jld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc3OAoJLy8gYWxnb1Jld2FyZEF2YWlsIC09IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODEKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDMyIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODIKCS8vIGNtcFN0YWtlci50b3RhbFJld2FyZGVkICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDQwIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODMKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzg1CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk3CgkvLyBuZXdQb29sVG90YWxTdGFrZSA+IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzlfZW5kCgoJLy8gKmlmMzlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoKKmZvcl81OgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl81X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmNDBfZW5kCgoJLy8gKmlmNDBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MDMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgNjQKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgNDggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE5CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDM3IC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCippZjQzX2VuZDoKCS8vICppZjQ0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODIxCgkvLyBhbGdvUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgYWxnb1Jld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI4CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0MCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODMwCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKKmlmNDRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODM0CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl81X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgoqaWYzOV9lbmQ6CgoqaWYzM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDQKCS8vIHJvdW5kc0xlZnRJbkJpbiA9IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIC0gZ2xvYmFscy5yb3VuZAoJYnl0ZSAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IC8vICJiaW5Sb3VuZFN0YXJ0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMzkgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGluY3JlYXNlZFN0YWtlCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ2CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPQoJLy8gICAgICAgICAgICAgdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlICsgKGluY3JlYXNlZFN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZSAweDcyNjU3NzYxNzI2NDQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInJld2FyZEFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU0CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlVXBkYXRlZFZpYVJld2FyZHM+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBnb09ubGluZShwYXksYnl0ZVtdLGJ5dGVbXSxieXRlW10sdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2dvT25saW5lOgoJLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyB2b3RlTGFzdDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdm90ZUZpcnN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBzdGF0ZVByb29mUEs6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBzZWxlY3Rpb25QSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIHZvdGVQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGZlZVBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnQgMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQga2V5cmVnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkyCgkvLyB2b3RlUEs6IHZvdGVQSwoJZnJhbWVfZGlnIC0yIC8vIHZvdGVQSzogYnl0ZXMKCWl0eG5fZmllbGQgVm90ZVBLCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkzCgkvLyBzZWxlY3Rpb25QSzogc2VsZWN0aW9uUEsKCWZyYW1lX2RpZyAtMyAvLyBzZWxlY3Rpb25QSzogYnl0ZXMKCWl0eG5fZmllbGQgU2VsZWN0aW9uUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTQKCS8vIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLCglmcmFtZV9kaWcgLTQgLy8gc3RhdGVQcm9vZlBLOiBieXRlcwoJaXR4bl9maWVsZCBTdGF0ZVByb29mUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTUKCS8vIHZvdGVGaXJzdDogdm90ZUZpcnN0CglmcmFtZV9kaWcgLTUgLy8gdm90ZUZpcnN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUZpcnN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk2CgkvLyB2b3RlTGFzdDogdm90ZUxhc3QKCWZyYW1lX2RpZyAtNiAvLyB2b3RlTGFzdDogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVMYXN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk3CgkvLyB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbgoJZnJhbWVfZGlnIC03IC8vIHZvdGVLZXlEaWx1dGlvbjogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVLZXlEaWx1dGlvbgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5OAoJLy8gZmVlOiBleHRyYUZlZQoJZnJhbWVfZGlnIDAgLy8gZXh0cmFGZWU6IHVpbnQ2NAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT2ZmbGluZSgpdm9pZAoqYWJpX3JvdXRlX2dvT2ZmbGluZToKCS8vIGV4ZWN1dGUgZ29PZmZsaW5lKCl2b2lkCgljYWxsc3ViIGdvT2ZmbGluZQoJaW50IDEKCXJldHVybgoKLy8gZ29PZmZsaW5lKCk6IHZvaWQKLy8KLy8gTWFya3MgYSBzdGFraW5nIHBvb2wga2V5IE9GRkxJTkUuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KZ29PZmZsaW5lOgoJcHJvdG8gMCAwCgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTAKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcwoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMQoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoqaWY0NV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTQKCS8vIHNlbmRPZmZsaW5lS2V5UmVnaXN0cmF0aW9uKHt9KQoJaXR4bl9iZWdpbgoJaW50IGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50IDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjQKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglieXRlIDB4NzY2NTcyNjk2Njc5NWY2ZTY2NjQ1ZjYxNjQ2NDcyIC8vICJ2ZXJpZnlfbmZkX2FkZHIiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI2CgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElkKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgcG9vbHMgIT0gMSAtIGNhbGxpbmcgVVMsIHBvb2wgIzEKLy8gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSBhcmUgaW4gZmFjdCBiZWluZyBjYWxsZWQgYnkgYW5vdGhlciBvZiBPVVIgcG9vbHMgKG5vdCB1cykKLy8gYW5kIHRoZW4gd2UnbGwgY2FsbCB0aGUgdmFsaWRhdG9yIG9uIHRoZWlyIGJlaGFsZiB0byB1cGRhdGUgdGhlIHRva2VuIHBheW91dHMKLy8gQHBhcmFtIHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR1cGxlCnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzcKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvcklkLnZhbHVlID09PSBwb29sS2V5LmlkLCAnY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhJykKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzgKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ2NhbGxlZSBtdXN0IGJlIHBvb2wgMScpCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgoJLy8gY2FsbGVlIG11c3QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzkKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCAhPT0gMSwgJ2NhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJIT0KCgkvLyBjYWxsZXIgbXVzdCBOT1QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDEKCS8vIGNhbGxlclBvb2xBcHBJRCA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0UG9vbEFwcElkPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDkKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTUwCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCk6IGJvb2xlYW4KaXNPd25lck9yTWFuYWdlckNhbGxlcjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU1CgkvLyBPd25lckFuZE1hbmFnZXIgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcj4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU3CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTkKCS8vIHJldHVybiB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclswXSB8fCB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclsxXQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAwIDMyCgk9PQoJZHVwCglibnogKnNraXBfb3IyCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCglleHRyYWN0IDMyIDMyCgk9PQoJfHwKCipza2lwX29yMjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnQgMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoKCS8vICppZjQ3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTg5CgkvLyBnbG9iYWxzLnJvdW5kID49IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIChjdXJyZW50QmluU2l6ZSBhcyB1aW50NjQpCglnbG9iYWwgUm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gY3VycmVudEJpblNpemUgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludCA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCgkrCgk+PQoJYnogKmlmNDdfZW5kCgoJLy8gKmlmNDdfY29uc2VxdWVudAoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTAKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgMzAwCgk8CglieiAqaWY0OF9lbmQKCgkvLyAqaWY0OF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTEKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGUgYjY0IENvRUIgLy8gI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50IERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjQ4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MwoJLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOCA9IGN1cnJlbnRCaW5TaXplICogKDM2NSBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNmQKCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyBjdXJyZW50QmluU2l6ZSAqICgzNjUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk0CgkvLyBhdmdTdGFrZTogdWludDEyOCA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAvIGN1cnJlbnRCaW5TaXplCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYiE9CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTkKCS8vIGFwcjogdWludDEyOCA9CgkvLyAgICAgICAgICAgICAgICAgICAgICgoKHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgYXMgdWludDEyOCkgKiAoMTAwMDAgYXMgdWludDEyOCkpIC8gYXZnU3Rha2UpICoKCS8vICAgICAgICAgICAgICAgICAgICAgKGFwcHJveFJvdW5kc1BlclllYXIgLyBjdXJyZW50QmluU2l6ZSkKCWJ5dGUgMHg3MjY1Nzc2MTcyNjQ0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJyZXdhcmRBY2N1bXVsYXRvciIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAKCWIqCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYi8KCWZyYW1lX2RpZyAxIC8vIGFwcHJveFJvdW5kc1BlclllYXI6IHVpbnQxMjgKCWZyYW1lX2RpZyAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoJYi8KCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqXG4gICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDMgLy8gYXByOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwMwoJLy8gYWxwaGE6IHVpbnQxMjggPSAxMCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NWQ5NjRiODAwCgliPgoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwNgoJLy8gYWxwaGEgPSA5MCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNWEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCippZjUwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDgKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0KCS8vICAgICAgICAgICAgICAgICAgICAgKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpCglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYi0KCWIqCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJYi8KCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAodGhpcy53ZWlnaHRlZE1vdmluZ0F2ZXJhZ2UudmFsdWUgKiAoKDEwMCBhcyB1aW50MTI4KSAtIGFscGhhKSkgLyAoMTAwIGFzIHVpbnQxMjgpICtcbiAgICAgICAgICAgICAgICAgICAgKGFwciAqIGFscGhhKSAvICgxMDAgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoqaWY0OV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE0CgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9ICh0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSBhcyB1aW50MTI4KSAqICh0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIGFzIHVpbnQxMjgpICogKHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTYKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCippZjQ3X2VuZDoKCXJldHN1YgoKLy8gc2V0Um91bmRzUGVyRGF5KCk6IHZvaWQKc2V0Um91bmRzUGVyRGF5OgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjYKCS8vIHRoaXMudHhuLmZpcnN0VmFsaWQgPCAxMgoJdHhuIEZpcnN0VmFsaWQKCWludCAxMgoJPAoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOAoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglpbnQgMzA4NTcKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOQoJLy8gcmV0dXJuCglyZXRzdWIKCippZjUxX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzIKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9CgkvLyAgICAgICAgICAgICBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLnRpbWVzdGFtcCAtIGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMTFdLnRpbWVzdGFtcAoJdHhuIEZpcnN0VmFsaWQKCWludCAxCgktCglibG9jayBCbGtUaW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnQgMTEKCS0KCWJsb2NrIEJsa1RpbWVzdGFtcAoJLQoJZnJhbWVfYnVyeSAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM0CgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPT09IDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjUyX2VuZAoKCS8vICppZjUyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzYKCS8vIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlID0gQVBQUk9YX0FWR19ST1VORFNfUEVSX0RBWQoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJaW50IDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1Ml9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDQyCgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9ICgyNCAqIDYwICogNjAgKiAxMCkgLyBhdmdCbG9ja1RpbWVUZW50aHMKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJnYXMoKXZvaWQiCgltZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCgltZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCgltZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCgltZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCgltZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfaW5pdFN0b3JhZ2UgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3JlbW92ZVN0YWtlICphYmlfcm91dGVfY2xhaW1Ub2tlbnMgKmFiaV9yb3V0ZV9nZXRTdGFrZXJJbmZvICphYmlfcm91dGVfcGF5VG9rZW5SZXdhcmQgKmFiaV9yb3V0ZV91cGRhdGVBbGdvZFZlciAqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZSAqYWJpX3JvdXRlX2dvT25saW5lICphYmlfcm91dGVfZ29PZmZsaW5lICphYmlfcm91dGVfbGlua1RvTkZEICphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "templateVariables": { diff --git a/contracts/contracts/artifacts/StakingPool.src_map.json b/contracts/contracts/artifacts/StakingPool.src_map.json index 77bb3256..62d6e588 100644 --- a/contracts/contracts/artifacts/StakingPool.src_map.json +++ b/contracts/contracts/artifacts/StakingPool.src_map.json @@ -1,19063 +1,18753 @@ [ { "teal": 1, - "source": 37, - "pc": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296 - ] + "source": "contracts/stakingPool.algo.ts:37" }, { - "teal": 9, - "source": 37, + "teal": 2, + "source": "contracts/stakingPool.algo.ts:37" + }, + { + "teal": 3, + "source": "contracts/stakingPool.algo.ts:37" + }, + { + "teal": 15, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 297, - 298 + 1, + 2 ] }, { - "teal": 10, - "source": 37, + "teal": 16, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 299 + 3 ] }, { - "teal": 11, - "source": 37, + "teal": 17, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 300, - 301 + 4 ] }, { "teal": 18, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 302, - 303 + 5 ] }, { "teal": 19, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 304 + 6, + 7 ] }, { "teal": 20, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 305 + 8 ] }, { "teal": 21, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 306 + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 ] }, { - "teal": 22, - "source": 37, + "teal": 25, + "source": "contracts/stakingPool.algo.ts:37", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", "pc": [ - 307, - 308 + 35 ] }, { - "teal": 23, - "source": 37, + "teal": 30, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 309 + 36, + 37, + 38 ] }, { - "teal": 24, - "source": 37, + "teal": 31, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335 + 39 ] }, { - "teal": 28, - "source": 37, - "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "teal": 34, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 336 + 40, + 41, + 42 ] }, { - "teal": 33, - "source": 101, + "teal": 35, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 337, - 338, - 339 + 43 ] }, { - "teal": 34, - "source": 101, + "teal": 38, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 340 + 44, + 45, + 46 ] }, { - "teal": 37, - "source": 101, + "teal": 39, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 341, - 342, - 343 + 47 ] }, { - "teal": 38, - "source": 101, + "teal": 42, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 344 + 48, + 49, + 50 ] }, { - "teal": 41, - "source": 101, + "teal": 43, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 345, - 346, - 347 + 51 ] }, { - "teal": 42, - "source": 101, + "teal": 46, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 348 + 52, + 53, + 54 ] }, { - "teal": 45, - "source": 101, + "teal": 47, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 349, - 350, - 351 + 55 ] }, { - "teal": 46, - "source": 101, + "teal": 48, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 352 + 56 ] }, { - "teal": 49, - "source": 101, + "teal": 58, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 353, - 354, - 355 + 57, + 58, + 59 ] }, { - "teal": 50, - "source": 101, + "teal": 63, + "source": "contracts/stakingPool.algo.ts:102", "pc": [ - 356 + 60, + 61 ] }, { - "teal": 51, - "source": 101, + "teal": 64, + "source": "contracts/stakingPool.algo.ts:102", "pc": [ - 357 + 62 ] }, { - "teal": 61, - "source": 101, + "teal": 65, + "source": "contracts/stakingPool.algo.ts:102", "pc": [ - 358, - 359, - 360 + 63 ] }, { "teal": 66, - "source": 102, + "source": "contracts/stakingPool.algo.ts:102", "pc": [ - 361, - 362 + 64, + 65, + 66 ] }, { - "teal": 67, - "source": 102, + "teal": 71, + "source": "contracts/stakingPool.algo.ts:104", "pc": [ - 363 + 67, + 68 ] }, { - "teal": 68, - "source": 102, + "teal": 72, + "source": "contracts/stakingPool.algo.ts:104", "pc": [ - 364 + 69 ] }, { - "teal": 69, - "source": 102, + "teal": 73, + "source": "contracts/stakingPool.algo.ts:104", "pc": [ - 365, - 366, - 367 + 70 ] }, { "teal": 74, - "source": 104, + "source": "contracts/stakingPool.algo.ts:104", "pc": [ - 368, - 369 + 71 ] }, { - "teal": 75, - "source": 104, + "teal": 78, + "source": "contracts/stakingPool.algo.ts:105", "pc": [ - 370 + 72, + 73 ] }, { - "teal": 76, - "source": 104, + "teal": 79, + "source": "contracts/stakingPool.algo.ts:105", "pc": [ - 371 + 74 ] }, { - "teal": 77, - "source": 104, + "teal": 80, + "source": "contracts/stakingPool.algo.ts:105", "pc": [ - 372 + 75 ] }, { "teal": 81, - "source": 105, + "source": "contracts/stakingPool.algo.ts:105", "pc": [ - 373, - 374 + 76 ] }, { "teal": 82, - "source": 105, + "source": "contracts/stakingPool.algo.ts:102", "pc": [ - 375 + 77, + 78, + 79 ] }, { - "teal": 83, - "source": 105, + "teal": 87, + "source": "contracts/stakingPool.algo.ts:107", "pc": [ - 376 + 80, + 81 ] }, { - "teal": 84, - "source": 105, + "teal": 88, + "source": "contracts/stakingPool.algo.ts:107", "pc": [ - 377 + 82 ] }, { - "teal": 85, - "source": 102, + "teal": 89, + "source": "contracts/stakingPool.algo.ts:107", "pc": [ - 378, - 379, - 380 + 83 ] }, { "teal": 90, - "source": 107, + "source": "contracts/stakingPool.algo.ts:107", "pc": [ - 381, - 382 + 84 ] }, { - "teal": 91, - "source": 107, + "teal": 94, + "source": "contracts/stakingPool.algo.ts:108", "pc": [ - 383 + 85, + 86 ] }, { - "teal": 92, - "source": 107, + "teal": 95, + "source": "contracts/stakingPool.algo.ts:108", "pc": [ - 384 + 87 ] }, { - "teal": 93, - "source": 107, + "teal": 96, + "source": "contracts/stakingPool.algo.ts:108", "pc": [ - 385 + 88 ] }, { "teal": 97, - "source": 108, + "source": "contracts/stakingPool.algo.ts:108", "pc": [ - 386, - 387 + 89 ] }, { - "teal": 98, - "source": 108, + "teal": 102, + "source": "contracts/stakingPool.algo.ts:110", "pc": [ - 388 + 90, + 91 ] }, { - "teal": 99, - "source": 108, + "teal": 103, + "source": "contracts/stakingPool.algo.ts:110", "pc": [ - 389 + 92, + 93, + 94, + 95 ] }, { - "teal": 100, - "source": 108, + "teal": 104, + "source": "contracts/stakingPool.algo.ts:110", "pc": [ - 390 + 96 ] }, { - "teal": 105, - "source": 110, + "teal": 107, + "source": "contracts/stakingPool.algo.ts:110", + "errorMessage": "staking pool must have minimum entry of 1 algo", "pc": [ - 391, - 392 + 97 ] }, { - "teal": 106, - "source": 110, + "teal": 111, + "source": "contracts/stakingPool.algo.ts:111", "pc": [ - 393, - 394 + 98 ] }, { - "teal": 107, - "source": 110, + "teal": 112, + "source": "contracts/stakingPool.algo.ts:111", "pc": [ - 395 + 99, + 100 ] }, { - "teal": 110, - "source": 110, - "errorMessage": "staking pool must have minimum entry of 1 algo", + "teal": 113, + "source": "contracts/stakingPool.algo.ts:111", "pc": [ - 396 + 101 ] }, { - "teal": 114, - "source": 111, + "teal": 117, + "source": "contracts/stakingPool.algo.ts:112", "pc": [ - 397 + 102 ] }, { - "teal": 115, - "source": 111, + "teal": 118, + "source": "contracts/stakingPool.algo.ts:112", "pc": [ - 398, - 399 + 103, + 104 ] }, { - "teal": 116, - "source": 111, + "teal": 119, + "source": "contracts/stakingPool.algo.ts:112", "pc": [ - 400 + 105 ] }, { - "teal": 120, - "source": 112, + "teal": 123, + "source": "contracts/stakingPool.algo.ts:113", "pc": [ - 401 + 106, + 107 ] }, { - "teal": 121, - "source": 112, + "teal": 124, + "source": "contracts/stakingPool.algo.ts:113", "pc": [ - 402, - 403 + 108, + 109 ] }, { - "teal": 122, - "source": 112, + "teal": 125, + "source": "contracts/stakingPool.algo.ts:113", "pc": [ - 404 + 110 ] }, { - "teal": 126, - "source": 113, + "teal": 129, + "source": "contracts/stakingPool.algo.ts:114", "pc": [ - 405 + 111, + 112 ] }, { - "teal": 127, - "source": 113, + "teal": 130, + "source": "contracts/stakingPool.algo.ts:114", "pc": [ - 406, - 407 + 113 ] }, { - "teal": 128, - "source": 113, + "teal": 131, + "source": "contracts/stakingPool.algo.ts:114", "pc": [ - 408 + 114 ] }, { - "teal": 132, - "source": 114, + "teal": 135, + "source": "contracts/stakingPool.algo.ts:115", "pc": [ - 409, - 410 + 115, + 116 ] }, { - "teal": 133, - "source": 114, + "teal": 136, + "source": "contracts/stakingPool.algo.ts:115", "pc": [ - 411 + 117 ] }, { - "teal": 134, - "source": 114, + "teal": 137, + "source": "contracts/stakingPool.algo.ts:115", "pc": [ - 412 + 118 ] }, { - "teal": 138, - "source": 115, + "teal": 141, + "source": "contracts/stakingPool.algo.ts:116", "pc": [ - 413, - 414 + 119, + 120 ] }, { - "teal": 139, - "source": 115, + "teal": 142, + "source": "contracts/stakingPool.algo.ts:116", "pc": [ - 415 + 121, + 122 ] }, { - "teal": 140, - "source": 115, + "teal": 143, + "source": "contracts/stakingPool.algo.ts:116", "pc": [ - 416 + 123 ] }, { - "teal": 144, - "source": 116, + "teal": 147, + "source": "contracts/stakingPool.algo.ts:117", "pc": [ - 417, - 418 + 124, + 125 ] }, { - "teal": 145, - "source": 116, + "teal": 148, + "source": "contracts/stakingPool.algo.ts:117", "pc": [ - 419, - 420 + 126, + 127 ] }, { - "teal": 146, - "source": 116, + "teal": 149, + "source": "contracts/stakingPool.algo.ts:117", "pc": [ - 421 + 128 ] }, { - "teal": 150, - "source": 117, + "teal": 153, + "source": "contracts/stakingPool.algo.ts:118", "pc": [ - 422, - 423 + 129, + 130 ] }, { - "teal": 151, - "source": 117, + "teal": 154, + "source": "contracts/stakingPool.algo.ts:118", "pc": [ - 424, - 425 + 131 ] }, { - "teal": 152, - "source": 117, + "teal": 155, + "source": "contracts/stakingPool.algo.ts:118", "pc": [ - 426 + 132 ] }, { - "teal": 156, - "source": 118, + "teal": 159, + "source": "contracts/stakingPool.algo.ts:120", "pc": [ - 427, - 428 + 133, + 134, + 135 ] }, { - "teal": 157, - "source": 118, + "teal": 163, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 429 + 136, + 137 ] }, { - "teal": 158, - "source": 118, + "teal": 164, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 430 + 138, + 139 ] }, { - "teal": 162, - "source": 120, + "teal": 165, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 431, - 432, - 433 + 140, + 141 ] }, { "teal": 166, - "source": 121, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 434, - 435 + 142, + 143 ] }, { "teal": 167, - "source": 121, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 436, - 437 + 144 ] }, { "teal": 168, - "source": 121, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 438, - 439 + 145 ] }, { "teal": 169, - "source": 121, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 440, - 441 + 146 ] }, { "teal": 170, - "source": 121, + "source": "contracts/stakingPool.algo.ts:121", "pc": [ - 442 + 147 ] }, { - "teal": 171, - "source": 121, + "teal": 174, + "source": "contracts/stakingPool.algo.ts:122", "pc": [ - 443 + 148, + 149 ] }, { - "teal": 172, - "source": 121, + "teal": 175, + "source": "contracts/stakingPool.algo.ts:122", "pc": [ - 444 + 150, + 151 ] }, { - "teal": 173, - "source": 121, + "teal": 176, + "source": "contracts/stakingPool.algo.ts:122", "pc": [ - 445 + 152 ] }, { - "teal": 177, - "source": 122, + "teal": 180, + "source": "contracts/stakingPool.algo.ts:123", "pc": [ - 446, - 447 + 153, + 154 ] }, { - "teal": 178, - "source": 122, + "teal": 181, + "source": "contracts/stakingPool.algo.ts:123", "pc": [ - 448, - 449 + 155 ] }, { - "teal": 179, - "source": 122, + "teal": 182, + "source": "contracts/stakingPool.algo.ts:123", "pc": [ - 450 + 156 ] }, { - "teal": 183, - "source": 123, + "teal": 186, + "source": "contracts/stakingPool.algo.ts:124", "pc": [ - 451, - 452 + 157, + 158 ] }, { - "teal": 184, - "source": 123, + "teal": 187, + "source": "contracts/stakingPool.algo.ts:124", "pc": [ - 453 + 159, + 160 ] }, { - "teal": 185, - "source": 123, + "teal": 188, + "source": "contracts/stakingPool.algo.ts:124", "pc": [ - 454 + 161 ] }, { "teal": 189, - "source": 124, + "source": "contracts/stakingPool.algo.ts:101", "pc": [ - 455, - 456 + 162 ] }, { - "teal": 190, - "source": 124, + "teal": 194, + "source": "contracts/stakingPool.algo.ts:130", "pc": [ - 457, - 458 + 163, + 164, + 165 ] }, { - "teal": 191, - "source": 124, + "teal": 195, + "source": "contracts/stakingPool.algo.ts:130", "pc": [ - 459 + 166 ] }, { - "teal": 192, - "source": 101, + "teal": 196, + "source": "contracts/stakingPool.algo.ts:130", "pc": [ - 460 + 167 ] }, { - "teal": 197, - "source": 130, + "teal": 202, + "source": "contracts/stakingPool.algo.ts:130", "pc": [ - 461, - 462, - 463 + 168, + 169, + 170 ] }, { - "teal": 198, - "source": 130, + "teal": 203, + "source": "contracts/stakingPool.algo.ts:130", "pc": [ - 464 + 171 ] }, { - "teal": 199, - "source": 130, + "teal": 207, + "source": "contracts/stakingPool.algo.ts:132", "pc": [ - 465 + 172, + 173, + 174 ] }, { - "teal": 205, - "source": 130, + "teal": 211, + "source": "contracts/stakingPool.algo.ts:136", "pc": [ - 466, - 467, - 468 + 175, + 176, + 177 ] }, { - "teal": 206, - "source": 130, + "teal": 212, + "source": "contracts/stakingPool.algo.ts:136", "pc": [ - 469 + 178, + 179 ] }, { - "teal": 210, - "source": 132, + "teal": 213, + "source": "contracts/stakingPool.algo.ts:136", "pc": [ - 470, - 471, - 472 + 180, + 181 ] }, { "teal": 214, - "source": 136, + "source": "contracts/stakingPool.algo.ts:136", "pc": [ - 473, - 474, - 475 + 182 ] }, { "teal": 215, - "source": 136, + "source": "contracts/stakingPool.algo.ts:136", "pc": [ - 476, - 477 + 183 ] }, { "teal": 216, - "source": 136, + "source": "contracts/stakingPool.algo.ts:132", "pc": [ - 478, - 479 + 184 ] }, { - "teal": 217, - "source": 136, + "teal": 221, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 480 + 185, + 186 ] }, { - "teal": 218, - "source": 136, + "teal": 222, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 481 + 187 ] }, { - "teal": 219, - "source": 132, + "teal": 223, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 482 + 188 ] }, { "teal": 224, - "source": 146, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 483, - 484 + 189 ] }, { "teal": 225, - "source": 146, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 485 + 190, + 191 ] }, { "teal": 226, - "source": 146, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 486 + 192 ] }, { "teal": 227, - "source": 146, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 487 + 193 ] }, { - "teal": 228, - "source": 146, + "teal": 230, + "source": "contracts/stakingPool.algo.ts:146", + "errorMessage": "argument 0 (mbrPayment) for initStorage must be a pay transaction", "pc": [ - 488, - 489 + 194 ] }, { - "teal": 229, - "source": 146, + "teal": 233, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 490 + 195, + 196, + 197 ] }, { - "teal": 230, - "source": 146, + "teal": 234, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 491 + 198 ] }, { - "teal": 233, - "source": 146, - "errorMessage": "argument 0 (mbrPayment) for initStorage must be a pay transaction", + "teal": 235, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 492 + 199 ] }, { - "teal": 236, - "source": 146, + "teal": 245, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 493, - 494, - 495 + 200, + 201, + 202 ] }, { - "teal": 237, - "source": 146, + "teal": 248, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 496 + 203 ] }, { - "teal": 238, - "source": 146, + "teal": 249, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 497 + 204, + 205 ] }, { - "teal": 248, - "source": 146, + "teal": 253, + "source": "contracts/stakingPool.algo.ts:147", "pc": [ - 498, - 499, - 500 + 206 ] }, { - "teal": 251, - "source": 146, + "teal": 254, + "source": "contracts/stakingPool.algo.ts:147", "pc": [ - 501, - 502 + 207 ] }, { - "teal": 252, - "source": 146, + "teal": 255, + "source": "contracts/stakingPool.algo.ts:147", "pc": [ - 503, - 504 + 208 ] }, { "teal": 256, - "source": 147, + "source": "contracts/stakingPool.algo.ts:147", "pc": [ - 505 + 209 ] }, { "teal": 257, - "source": 147, + "source": "contracts/stakingPool.algo.ts:147", "pc": [ - 506 + 210 ] }, { - "teal": 258, - "source": 147, + "teal": 260, + "source": "contracts/stakingPool.algo.ts:147", + "errorMessage": "staking pool already initialized", "pc": [ - 507 + 211 ] }, { - "teal": 259, - "source": 147, + "teal": 267, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 508 + 212 ] }, { - "teal": 260, - "source": 147, + "teal": 268, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 509 + 213 ] }, { - "teal": 263, - "source": 147, - "errorMessage": "staking pool already initialized", + "teal": 269, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 510 + 214, + 215 ] }, { "teal": 270, - "source": 150, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 511 + 216, + 217 ] }, { "teal": 271, - "source": 150, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 512 + 218, + 219 ] }, { - "teal": 272, - "source": 150, + "teal": 275, + "source": "contracts/stakingPool.algo.ts:151", "pc": [ - 513, - 514 + 220 ] }, { - "teal": 273, - "source": 150, + "teal": 276, + "source": "contracts/stakingPool.algo.ts:151", "pc": [ - 515, - 516 + 221 ] }, { - "teal": 274, - "source": 150, + "teal": 277, + "source": "contracts/stakingPool.algo.ts:151", "pc": [ - 517, - 518 + 222, + 223 ] }, { - "teal": 278, - "source": 151, + "teal": 281, + "source": "contracts/stakingPool.algo.ts:152", "pc": [ - 519 + 224 ] }, { - "teal": 279, - "source": 151, + "teal": 282, + "source": "contracts/stakingPool.algo.ts:152", "pc": [ - 520 + 225 ] }, { - "teal": 280, - "source": 151, + "teal": 283, + "source": "contracts/stakingPool.algo.ts:152", "pc": [ - 521, - 522 + 226 ] }, { "teal": 284, - "source": 152, + "source": "contracts/stakingPool.algo.ts:152", "pc": [ - 523 + 227, + 228 ] }, { - "teal": 285, - "source": 152, + "teal": 287, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 524 + 229 ] }, { - "teal": 286, - "source": 152, + "teal": 288, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 525 + 230, + 231 ] }, { - "teal": 287, - "source": 152, + "teal": 291, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 526, - 527 + 232 ] }, { - "teal": 290, - "source": 150, + "teal": 292, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 528 + 233, + 234 ] }, { - "teal": 291, - "source": 150, + "teal": 293, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 529, - 530 + 235 ] }, { "teal": 294, - "source": 150, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 531 + 236 ] }, { "teal": 295, - "source": 150, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 532, - 533 + 237, + 238 ] }, { "teal": 296, - "source": 150, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 534 + 239, + 240, + 241 ] }, { "teal": 297, - "source": 150, + "source": "contracts/stakingPool.algo.ts:150", "pc": [ - 535 + 242, + 243 ] }, { - "teal": 298, - "source": 150, + "teal": 301, + "source": "contracts/stakingPool.algo.ts:154", "pc": [ - 536, - 537 + 244, + 245 ] }, { - "teal": 299, - "source": 150, + "teal": 302, + "source": "contracts/stakingPool.algo.ts:154", "pc": [ - 538, - 539, - 540 + 246, + 247, + 248 ] }, { - "teal": 300, - "source": 150, + "teal": 303, + "source": "contracts/stakingPool.algo.ts:154", "pc": [ - 541, - 542 + 249 ] }, { "teal": 304, - "source": 154, + "source": "contracts/stakingPool.algo.ts:154", "pc": [ - 543, - 544 + 250 ] }, { "teal": 305, - "source": 154, + "source": "contracts/stakingPool.algo.ts:154", "pc": [ - 545, - 546, - 547 + 251 ] }, { "teal": 306, - "source": 154, + "source": "contracts/stakingPool.algo.ts:154", "pc": [ - 548 + 252, + 253 ] }, { - "teal": 307, - "source": 154, + "teal": 310, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 549 + 254, + 255 ] }, { - "teal": 308, - "source": 154, + "teal": 311, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 550 + 256 ] }, { - "teal": 309, - "source": 154, + "teal": 312, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 551, - 552 + 257, + 258, + 259 ] }, { "teal": 313, - "source": 155, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 553, - 554 + 260, + 261 ] }, { "teal": 314, - "source": 155, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 555 + 262 ] }, { "teal": 315, - "source": 155, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 556, - 557, - 558 + 263 ] }, { "teal": 316, - "source": 155, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 559 + 264 ] }, { "teal": 317, - "source": 155, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 560 + 265 ] }, { - "teal": 318, - "source": 155, + "teal": 320, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 561 + 266, + 267, + 268 ] }, { - "teal": 319, - "source": 155, + "teal": 321, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 562 + 269, + 270 ] }, { - "teal": 320, - "source": 155, + "teal": 322, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 563 + 271, + 272, + 273 ] }, { - "teal": 323, - "source": 155, + "teal": 325, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 564, - 565, - 566 + 274 ] }, { - "teal": 324, - "source": 155, + "teal": 328, + "source": "contracts/stakingPool.algo.ts:155", "pc": [ - 567, - 568 + 275, + 276 ] }, { - "teal": 325, - "source": 155, + "teal": 335, + "source": "contracts/stakingPool.algo.ts:157", "pc": [ - 569, - 570, - 571 + 277, + 278 ] }, { - "teal": 328, - "source": 155, + "teal": 336, + "source": "contracts/stakingPool.algo.ts:158", "pc": [ - 572 + 279, + 280 ] }, { - "teal": 331, - "source": 155, + "teal": 337, + "source": "contracts/stakingPool.algo.ts:157", "pc": [ - 573, - 574 + 281 ] }, { "teal": 338, - "source": 157, + "source": "contracts/stakingPool.algo.ts:159", "pc": [ - 575, - 576 + 282, + 283, + 284 ] }, { "teal": 339, - "source": 158, + "source": "contracts/stakingPool.algo.ts:159", "pc": [ - 577, - 578 + 285, + 286, + 287 ] }, { "teal": 340, - "source": 157, + "source": "contracts/stakingPool.algo.ts:158", "pc": [ - 579 + 288 ] }, { "teal": 341, - "source": 159, + "source": "contracts/stakingPool.algo.ts:156", "pc": [ - 580, - 581, - 582 + 289, + 290 ] }, { - "teal": 342, - "source": 159, + "teal": 346, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 583, - 584, - 585 + 291, + 292 ] }, { - "teal": 343, - "source": 158, + "teal": 347, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 586 + 293, + 294 ] }, { - "teal": 344, - "source": 156, + "teal": 348, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 587, - 588 + 295, + 296 ] }, { "teal": 349, - "source": 162, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 589, - 590 + 297 ] }, { - "teal": 350, - "source": 162, + "teal": 352, + "source": "contracts/stakingPool.algo.ts:162", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 591, - 592 + 298 ] }, { - "teal": 351, - "source": 162, + "teal": 355, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 593, - 594 + 299, + 300 ] }, { - "teal": 352, - "source": 162, + "teal": 356, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 595 + 301, + 302 ] }, { - "teal": 355, - "source": 162, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "teal": 357, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 596 + 303, + 304 ] }, { "teal": 358, - "source": 162, + "source": "contracts/stakingPool.algo.ts:162", "pc": [ - 597, - 598 + 305 ] }, { - "teal": 359, - "source": 162, + "teal": 361, + "source": "contracts/stakingPool.algo.ts:162", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}", "pc": [ - 599, - 600 + 306 ] }, { - "teal": 360, - "source": 162, + "teal": 365, + "source": "contracts/stakingPool.algo.ts:163", "pc": [ - 601, - 602 + 307 ] }, { - "teal": 361, - "source": 162, + "teal": 366, + "source": "contracts/stakingPool.algo.ts:163", "pc": [ - 603 + 308, + 309, + 310 ] }, { - "teal": 364, - "source": 162, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}", + "teal": 367, + "source": "contracts/stakingPool.algo.ts:163", "pc": [ - 604 + 311 ] }, { "teal": 368, - "source": 163, + "source": "contracts/stakingPool.algo.ts:163", "pc": [ - 605 + 312 ] }, { - "teal": 369, - "source": 163, + "teal": 373, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 606, - 607, - 608 + 313, + 314 ] }, { - "teal": 370, - "source": 163, + "teal": 374, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 609 + 315 ] }, { - "teal": 371, - "source": 163, + "teal": 375, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 610 + 316, + 317, + 318 ] }, { "teal": 376, - "source": 165, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 611, - 612 + 319, + 320 ] }, { "teal": 377, - "source": 165, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 613 + 321 ] }, { "teal": 378, - "source": 165, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 614, - 615, - 616 + 322 ] }, { "teal": 379, - "source": 165, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 617 + 323 ] }, { "teal": 380, - "source": 165, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 618 + 324 ] }, { - "teal": 381, - "source": 165, + "teal": 383, + "source": "contracts/stakingPool.algo.ts:165", "pc": [ - 619 + 325, + 326, + 327 ] }, { - "teal": 382, - "source": 165, + "teal": 392, + "source": "contracts/stakingPool.algo.ts:167", "pc": [ - 620 + 328 ] }, { - "teal": 383, - "source": 165, + "teal": 393, + "source": "contracts/stakingPool.algo.ts:167", "pc": [ - 621 + 329, + 330 ] }, { - "teal": 386, - "source": 165, + "teal": 394, + "source": "contracts/stakingPool.algo.ts:167", "pc": [ - 622, - 623, - 624 + 331, + 332 ] }, { - "teal": 395, - "source": 167, + "teal": 398, + "source": "contracts/stakingPool.algo.ts:168", "pc": [ - 625 + 333, + 334 ] }, { - "teal": 396, - "source": 167, + "teal": 399, + "source": "contracts/stakingPool.algo.ts:168", "pc": [ - 626, - 627 + 335, + 336, + 337 ] }, { - "teal": 397, - "source": 167, + "teal": 400, + "source": "contracts/stakingPool.algo.ts:168", "pc": [ - 628, - 629 + 338 ] }, { "teal": 401, - "source": 168, + "source": "contracts/stakingPool.algo.ts:168", "pc": [ - 630, - 631 + 339, + 340 ] }, { - "teal": 402, - "source": 168, + "teal": 405, + "source": "contracts/stakingPool.algo.ts:169", "pc": [ - 632, - 633, - 634 + 341, + 342 ] }, { - "teal": 403, - "source": 168, + "teal": 406, + "source": "contracts/stakingPool.algo.ts:169", "pc": [ - 635 + 343, + 344 ] }, { - "teal": 404, - "source": 168, + "teal": 410, + "source": "contracts/stakingPool.algo.ts:170", "pc": [ - 636, - 637 + 345 ] }, { - "teal": 408, - "source": 169, + "teal": 411, + "source": "contracts/stakingPool.algo.ts:170", "pc": [ - 638, - 639 + 346, + 347 ] }, { - "teal": 409, - "source": 169, + "teal": 414, + "source": "contracts/stakingPool.algo.ts:167", "pc": [ - 640, - 641 + 348 ] }, { - "teal": 413, - "source": 170, + "teal": 415, + "source": "contracts/stakingPool.algo.ts:167", "pc": [ - 642 + 349, + 350 ] }, { - "teal": 414, - "source": 170, + "teal": 418, + "source": "contracts/stakingPool.algo.ts:167", "pc": [ - 643, - 644 + 351 ] }, { - "teal": 417, - "source": 167, + "teal": 421, + "source": "contracts/stakingPool.algo.ts:146", "pc": [ - 645 + 352 ] }, { - "teal": 418, - "source": 167, + "teal": 426, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 646, - 647 + 353, + 354 ] }, { - "teal": 421, - "source": 167, + "teal": 429, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 648 + 355, + 356, + 357 ] }, { - "teal": 424, - "source": 146, + "teal": 430, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 649 + 358 ] }, { - "teal": 429, - "source": 185, + "teal": 431, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 650, - 651 + 359 ] }, { "teal": 432, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 652, - 653, - 654 + 360, + 361 ] }, { "teal": 433, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 655 + 362 ] }, { - "teal": 434, - "source": 185, + "teal": 436, + "source": "contracts/stakingPool.algo.ts:185", + "errorMessage": "argument 0 (staker) for addStake must be a address", "pc": [ - 656 + 363 ] }, { - "teal": 435, - "source": 185, + "teal": 439, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 657, - 658 + 364, + 365 ] }, { - "teal": 436, - "source": 185, + "teal": 440, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 659 + 366 ] }, { - "teal": 439, - "source": 185, - "errorMessage": "argument 0 (staker) for addStake must be a address", + "teal": 441, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 660 + 367 ] }, { "teal": 442, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 661, - 662 + 368 ] }, { "teal": 443, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 663 + 369, + 370 ] }, { "teal": 444, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 664 + 371 ] }, { "teal": 445, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 665 + 372 ] }, { - "teal": 446, - "source": 185, + "teal": 448, + "source": "contracts/stakingPool.algo.ts:185", + "errorMessage": "argument 1 (stakedAmountPayment) for addStake must be a pay transaction", "pc": [ - 666, - 667 + 373 ] }, { - "teal": 447, - "source": 185, + "teal": 451, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 668 + 374, + 375, + 376 ] }, { - "teal": 448, - "source": 185, + "teal": 452, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 669 + 377 ] }, { - "teal": 451, - "source": 185, - "errorMessage": "argument 1 (stakedAmountPayment) for addStake must be a pay transaction", + "teal": 453, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 670 + 378 ] }, { "teal": 454, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 671, - 672, - 673 + 379 ] }, { "teal": 455, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 674 + 380 ] }, { "teal": 456, - "source": 185, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 675 + 381 ] }, { - "teal": 457, - "source": 185, + "teal": 469, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 676 + 382, + 383, + 384 ] }, { - "teal": 458, - "source": 185, + "teal": 472, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 677 + 385 ] }, { - "teal": 459, - "source": 185, + "teal": 473, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 678 + 386, + 387 ] }, { - "teal": 472, - "source": 185, + "teal": 477, + "source": "contracts/stakingPool.algo.ts:186", "pc": [ - 679, - 680, - 681 + 388 ] }, { - "teal": 475, - "source": 185, + "teal": 478, + "source": "contracts/stakingPool.algo.ts:186", "pc": [ - 682, - 683 + 389 ] }, { - "teal": 476, - "source": 185, + "teal": 479, + "source": "contracts/stakingPool.algo.ts:186", "pc": [ - 684, - 685 + 390 ] }, { "teal": 480, - "source": 186, + "source": "contracts/stakingPool.algo.ts:186", "pc": [ - 686 + 391 ] }, { - "teal": 481, - "source": 186, + "teal": 483, + "source": "contracts/stakingPool.algo.ts:186", + "errorMessage": "staking pool must be initialized first", "pc": [ - 687 + 392 ] }, { - "teal": 482, - "source": 186, + "teal": 490, + "source": "contracts/stakingPool.algo.ts:190", "pc": [ - 688 + 393, + 394 ] }, { - "teal": 483, - "source": 186, + "teal": 491, + "source": "contracts/stakingPool.algo.ts:190", "pc": [ - 689 + 395 ] }, { - "teal": 486, - "source": 186, - "errorMessage": "staking pool must be initialized first", + "teal": 492, + "source": "contracts/stakingPool.algo.ts:190", "pc": [ - 690 + 396 ] }, { "teal": 493, - "source": 190, + "source": "contracts/stakingPool.algo.ts:190", "pc": [ - 691, - 692 + 397, + 398 ] }, { "teal": 494, - "source": 190, + "source": "contracts/stakingPool.algo.ts:190", "pc": [ - 693 + 399 ] }, { "teal": 495, - "source": 190, + "source": "contracts/stakingPool.algo.ts:190", "pc": [ - 694 + 400 ] }, { - "teal": 496, - "source": 190, + "teal": 498, + "source": "contracts/stakingPool.algo.ts:189", + "errorMessage": "stake can only be added via the validator contract", "pc": [ - 695, - 696 + 401 ] }, { - "teal": 497, - "source": 190, + "teal": 502, + "source": "contracts/stakingPool.algo.ts:193", "pc": [ - 697 + 402, + 403 ] }, { - "teal": 498, - "source": 190, + "teal": 503, + "source": "contracts/stakingPool.algo.ts:193", "pc": [ - 698 + 404, + 405 ] }, { - "teal": 501, - "source": 189, - "errorMessage": "stake can only be added via the validator contract", + "teal": 504, + "source": "contracts/stakingPool.algo.ts:193", "pc": [ - 699 + 406 ] }, { "teal": 505, - "source": 193, + "source": "contracts/stakingPool.algo.ts:193", "pc": [ - 700, - 701 + 407 ] }, { - "teal": 506, - "source": 193, + "teal": 509, + "source": "contracts/stakingPool.algo.ts:196", "pc": [ - 702, - 703 + 408, + 409, + 410 ] }, { - "teal": 507, - "source": 193, + "teal": 518, + "source": "contracts/stakingPool.algo.ts:200", "pc": [ - 704 + 411, + 412 ] }, { - "teal": 508, - "source": 193, + "teal": 519, + "source": "contracts/stakingPool.algo.ts:201", "pc": [ - 705 + 413, + 414 ] }, { - "teal": 512, - "source": 196, + "teal": 520, + "source": "contracts/stakingPool.algo.ts:201", "pc": [ - 706, - 707, - 708 + 415 ] }, { "teal": 521, - "source": 200, + "source": "contracts/stakingPool.algo.ts:201", "pc": [ - 709, - 710 + 416 ] }, { "teal": 522, - "source": 201, + "source": "contracts/stakingPool.algo.ts:201", "pc": [ - 711, - 712 + 417, + 418 ] }, { "teal": 523, - "source": 201, + "source": "contracts/stakingPool.algo.ts:201", "pc": [ - 713 + 419 ] }, { "teal": 524, - "source": 201, + "source": "contracts/stakingPool.algo.ts:201", "pc": [ - 714 + 420 ] }, { - "teal": 525, - "source": 201, + "teal": 527, + "source": "contracts/stakingPool.algo.ts:201", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}", "pc": [ - 715, - 716 + 421 ] }, { - "teal": 526, - "source": 201, + "teal": 530, + "source": "contracts/stakingPool.algo.ts:200", "pc": [ - 717 + 422, + 423 ] }, { - "teal": 527, - "source": 201, + "teal": 531, + "source": "contracts/stakingPool.algo.ts:202", "pc": [ - 718 + 424, + 425 ] }, { - "teal": 530, - "source": 201, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}", + "teal": 532, + "source": "contracts/stakingPool.algo.ts:202", "pc": [ - 719 + 426, + 427 ] }, { "teal": 533, - "source": 200, + "source": "contracts/stakingPool.algo.ts:202", "pc": [ - 720, - 721 + 428 ] }, { - "teal": 534, - "source": 202, + "teal": 536, + "source": "contracts/stakingPool.algo.ts:202", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 722, - 723 + 429 ] }, { - "teal": 535, - "source": 202, + "teal": 539, + "source": "contracts/stakingPool.algo.ts:200", "pc": [ - 724, - 725 + 430, + 431 ] }, { - "teal": 536, - "source": 202, + "teal": 540, + "source": "contracts/stakingPool.algo.ts:203", "pc": [ - 726 + 432, + 433 ] }, { - "teal": 539, - "source": 202, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "teal": 541, + "source": "contracts/stakingPool.algo.ts:203", "pc": [ - 727 + 434, + 435 ] }, { "teal": 542, - "source": 200, + "source": "contracts/stakingPool.algo.ts:203", "pc": [ - 728, - 729 + 436, + 437 ] }, { "teal": 543, - "source": 203, + "source": "contracts/stakingPool.algo.ts:203", "pc": [ - 730, - 731 + 438 ] }, { - "teal": 544, - "source": 203, + "teal": 546, + "source": "contracts/stakingPool.algo.ts:203", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}", "pc": [ - 732, - 733 + 439 ] }, { - "teal": 545, - "source": 203, + "teal": 550, + "source": "contracts/stakingPool.algo.ts:209", "pc": [ - 734, - 735 + 440, + 441 ] }, { - "teal": 546, - "source": 203, + "teal": 551, + "source": "contracts/stakingPool.algo.ts:209", "pc": [ - 736 + 442, + 443, + 444 ] }, { - "teal": 549, - "source": 203, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}", + "teal": 552, + "source": "contracts/stakingPool.algo.ts:209", "pc": [ - 737 + 445 ] }, { "teal": 553, - "source": 209, + "source": "contracts/stakingPool.algo.ts:209", "pc": [ - 738, - 739 + 446, + 447 ] }, { - "teal": 554, - "source": 209, + "teal": 557, + "source": "contracts/stakingPool.algo.ts:210", "pc": [ - 740, - 741, - 742 + 448 ] }, { - "teal": 555, - "source": 209, + "teal": 558, + "source": "contracts/stakingPool.algo.ts:210", "pc": [ - 743 + 449, + 450 ] }, { - "teal": 556, - "source": 209, + "teal": 562, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 744, - 745 + 451, + 452 ] }, { - "teal": 560, - "source": 210, + "teal": 563, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 746 + 453 ] }, { - "teal": 561, - "source": 210, + "teal": 564, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 747, - 748 + 454, + 455 ] }, { "teal": 565, - "source": 212, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 749, - 750 + 456, + 457 ] }, { "teal": 566, - "source": 212, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 751 + 458 ] }, { "teal": 567, - "source": 212, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 752, - 753 + 459, + 460 ] }, { "teal": 568, - "source": 212, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 754, - 755 + 461 ] }, { "teal": 569, - "source": 212, + "source": "contracts/stakingPool.algo.ts:212", "pc": [ - 756 + 462 ] }, { - "teal": 570, - "source": 212, + "teal": 573, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 757, - 758 + 463, + 464 ] }, { - "teal": 571, - "source": 212, + "teal": 574, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 759 + 465 ] }, { - "teal": 572, - "source": 212, + "teal": 575, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 760 + 466, + 467 ] }, { "teal": 576, - "source": 214, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 761, - 762 + 468 ] }, { "teal": 577, - "source": 214, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 763 + 469 ] }, { "teal": 578, - "source": 214, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 764, - 765 + 470, + 471 ] }, { "teal": 579, - "source": 214, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 766 + 472 ] }, { "teal": 580, - "source": 214, + "source": "contracts/stakingPool.algo.ts:214", "pc": [ - 767 + 473, + 474 ] }, { - "teal": 581, - "source": 214, + "teal": 585, + "source": "contracts/stakingPool.algo.ts:215", "pc": [ - 768, - 769 + 475, + 476 ] }, { - "teal": 582, - "source": 214, + "teal": 586, + "source": "contracts/stakingPool.algo.ts:215", "pc": [ - 770 + 477 ] }, { - "teal": 583, - "source": 214, + "teal": 587, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 771, - 772 + 478 ] }, { "teal": 588, - "source": 215, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 773, - 774 + 479, + 480 ] }, { "teal": 589, - "source": 215, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 775 + 481, + 482 ] }, { "teal": 590, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 776 + 483 ] }, { "teal": 591, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 777, - 778 + 484, + 485 ] }, { "teal": 592, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 779, - 780 + 486 ] }, { "teal": 593, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 781 + 487 ] }, { "teal": 594, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 782, - 783 + 488 ] }, { "teal": 595, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 784 + 489 ] }, { "teal": 596, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 785 + 490 ] }, { "teal": 597, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 786 + 491, + 492 ] }, { "teal": 598, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 787 + 493 ] }, { - "teal": 599, - "source": 216, + "teal": 601, + "source": "contracts/stakingPool.algo.ts:216", + "errorMessage": "this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", "pc": [ - 788 + 494 ] }, { - "teal": 600, - "source": 216, + "teal": 602, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 789, - 790 + 495, + 496 ] }, { - "teal": 601, - "source": 216, + "teal": 603, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 791 + 497 ] }, { "teal": 604, - "source": 216, - "errorMessage": "this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 792 + 498 ] }, { "teal": 605, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 793, - 794 + 499 ] }, { "teal": 606, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 795 + 500 ] }, { "teal": 607, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 796 + 501, + 502 ] }, { "teal": 608, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 797 + 503 ] }, { "teal": 609, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 798 + 504 ] }, { "teal": 610, - "source": 216, + "source": "contracts/stakingPool.algo.ts:216", "pc": [ - 799, - 800 + 505 ] }, { "teal": 611, - "source": 216, + "source": "contracts/stakingPool.algo.ts:215", "pc": [ - 801 + 506 ] }, { - "teal": 612, - "source": 216, + "teal": 615, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 802 + 507 ] }, { - "teal": 613, - "source": 216, + "teal": 616, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 803 + 508, + 509 ] }, { - "teal": 614, - "source": 215, + "teal": 621, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 804 + 510, + 511 ] }, { - "teal": 618, - "source": 219, + "teal": 622, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 805 + 512, + 513 ] }, { - "teal": 619, - "source": 219, + "teal": 623, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 806, - 807 + 514 ] }, { "teal": 624, - "source": 219, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 808, - 809 + 515, + 516, + 517 ] }, { - "teal": 625, - "source": 219, + "teal": 629, + "source": "contracts/stakingPool.algo.ts:220", "pc": [ - 810, - 811 + 518, + 519 ] }, { - "teal": 626, - "source": 219, + "teal": 630, + "source": "contracts/stakingPool.algo.ts:220", "pc": [ - 812 + 520, + 521 ] }, { - "teal": 627, - "source": 219, + "teal": 631, + "source": "contracts/stakingPool.algo.ts:220", "pc": [ - 813, - 814, - 815 + 522 ] }, { "teal": 632, - "source": 220, + "source": "contracts/stakingPool.algo.ts:220", "pc": [ - 816, - 817 + 523, + 524, + 525 ] }, { - "teal": 633, - "source": 220, + "teal": 637, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 818, - 819 + 526 ] }, { - "teal": 634, - "source": 220, + "teal": 638, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 820 + 527 ] }, { - "teal": 635, - "source": 220, + "teal": 639, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 821, - 822, - 823 + 528, + 529 ] }, { "teal": 640, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 824 + 530 ] }, { "teal": 641, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 825 + 531, + 532 ] }, { "teal": 642, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 826, - 827 + 533, + 534 ] }, { "teal": 643, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 828 + 535 ] }, { "teal": 644, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 829, - 830 + 536, + 537 ] }, { "teal": 645, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 831, - 832 + 538, + 539 ] }, { "teal": 646, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 833 + 540, + 541 ] }, { "teal": 647, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 834, - 835 + 542, + 543 ] }, { "teal": 648, - "source": 221, + "source": "contracts/stakingPool.algo.ts:221", "pc": [ - 836, - 837 + 544 ] }, { - "teal": 649, - "source": 221, + "teal": 653, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 838, - 839 + 545, + 546 ] }, { - "teal": 650, - "source": 221, + "teal": 654, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 840, - 841 + 547 ] }, { - "teal": 651, - "source": 221, + "teal": 655, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 842 + 548 ] }, { "teal": 656, - "source": 223, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 843, - 844 + 549 ] }, { "teal": 657, - "source": 223, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 845 + 550 ] }, { "teal": 658, - "source": 223, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 846 + 551, + 552 ] }, { "teal": 659, - "source": 223, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 847 + 553 ] }, { "teal": 660, - "source": 223, + "source": "contracts/stakingPool.algo.ts:223", "pc": [ - 848 + 554, + 555 ] }, { - "teal": 661, - "source": 223, + "teal": 665, + "source": "contracts/stakingPool.algo.ts:224", "pc": [ - 849, - 850 + 556, + 557 ] }, { - "teal": 662, - "source": 223, + "teal": 666, + "source": "contracts/stakingPool.algo.ts:224", "pc": [ - 851 + 558, + 559, + 560 ] }, { - "teal": 663, - "source": 223, + "teal": 667, + "source": "contracts/stakingPool.algo.ts:224", "pc": [ - 852, - 853 + 561, + 562 ] }, { "teal": 668, - "source": 224, + "source": "contracts/stakingPool.algo.ts:224", "pc": [ - 854, - 855 + 563 ] }, { "teal": 669, - "source": 224, + "source": "contracts/stakingPool.algo.ts:224", "pc": [ - 856, - 857, - 858 + 564, + 565, + 566 ] }, { - "teal": 670, - "source": 224, + "teal": 674, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 859, - 860 + 567, + 568 ] }, { - "teal": 671, - "source": 224, + "teal": 675, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 861 + 569, + 570 ] }, { - "teal": 672, - "source": 224, + "teal": 676, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 862, - 863, - 864 + 571, + 572 ] }, { "teal": 677, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 865, - 866 + 573, + 574, + 575 ] }, { "teal": 678, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 867, - 868 + 576 ] }, { "teal": 679, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 869, - 870 + 577, + 578 ] }, { "teal": 680, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 871, - 872, - 873 + 579, + 580 ] }, { "teal": 681, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 874 + 581 ] }, { "teal": 682, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 875, - 876 + 582 ] }, { "teal": 683, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 877, - 878 + 583 ] }, { "teal": 684, - "source": 226, + "source": "contracts/stakingPool.algo.ts:226", "pc": [ - 879 + 584, + 585 ] }, { - "teal": 685, - "source": 226, + "teal": 688, + "source": "contracts/stakingPool.algo.ts:227", "pc": [ - 880 + 586, + 587 ] }, { - "teal": 686, - "source": 226, + "teal": 689, + "source": "contracts/stakingPool.algo.ts:227", "pc": [ - 881 + 588, + 589 ] }, { - "teal": 687, - "source": 226, + "teal": 690, + "source": "contracts/stakingPool.algo.ts:227", "pc": [ - 882, - 883 + 590, + 591 ] }, { "teal": 691, - "source": 227, + "source": "contracts/stakingPool.algo.ts:227", "pc": [ - 884, - 885 + 592 ] }, { "teal": 692, - "source": 227, + "source": "contracts/stakingPool.algo.ts:227", "pc": [ - 886, - 887 + 593 ] }, { "teal": 693, - "source": 227, + "source": "contracts/stakingPool.algo.ts:227", "pc": [ - 888, - 889 + 594, + 595 ] }, { - "teal": 694, - "source": 227, + "teal": 697, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 890 + 596, + 597 ] }, { - "teal": 695, - "source": 227, + "teal": 698, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 891 + 598 ] }, { - "teal": 696, - "source": 227, + "teal": 699, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 892, - 893 + 599 ] }, { "teal": 700, - "source": 230, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 894, - 895 + 600, + 601 ] }, { "teal": 701, - "source": 230, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 896 + 602 ] }, { "teal": 702, - "source": 230, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 897 + 603, + 604 ] }, { "teal": 703, - "source": 230, + "source": "contracts/stakingPool.algo.ts:230", "pc": [ - 898, - 899 + 605 ] }, { - "teal": 704, - "source": 230, + "teal": 707, + "source": "contracts/stakingPool.algo.ts:232", "pc": [ - 900 + 606, + 607 ] }, { - "teal": 705, - "source": 230, + "teal": 708, + "source": "contracts/stakingPool.algo.ts:232", "pc": [ - 901, - 902 + 608, + 609, + 610 ] }, { - "teal": 706, - "source": 230, + "teal": 714, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 903 + 611, + 612 ] }, { - "teal": 710, - "source": 232, + "teal": 715, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 904, - 905 + 613 ] }, { - "teal": 711, - "source": 232, + "teal": 716, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 906, - 907, - 908 + 614 ] }, { "teal": 717, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 909, - 910 + 615 ] }, { "teal": 718, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 911 + 616, + 617, + 618 ] }, { "teal": 719, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 912 + 619, + 620 ] }, { "teal": 720, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 913 + 621, + 622, + 623 ] }, { "teal": 721, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 914, - 915, - 916 + 624, + 625 ] }, { "teal": 722, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 917, - 918 + 626 ] }, { "teal": 723, - "source": 234, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 919, - 920, - 921 + 627 ] }, { - "teal": 724, - "source": 234, + "teal": 726, + "source": "contracts/stakingPool.algo.ts:234", "pc": [ - 922, - 923 + 628, + 629, + 630 ] }, { - "teal": 725, - "source": 234, + "teal": 731, + "source": "contracts/stakingPool.algo.ts:235", "pc": [ - 924 + 631, + 632 ] }, { - "teal": 726, - "source": 234, + "teal": 732, + "source": "contracts/stakingPool.algo.ts:235", "pc": [ - 925 + 633 ] }, { - "teal": 729, - "source": 234, + "teal": 733, + "source": "contracts/stakingPool.algo.ts:235", "pc": [ - 926, - 927, - 928 + 634 ] }, { "teal": 734, - "source": 235, + "source": "contracts/stakingPool.algo.ts:235", "pc": [ - 929, - 930 + 635, + 636 ] }, { - "teal": 735, - "source": 235, + "teal": 741, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 931 + 637, + 638 ] }, { - "teal": 736, - "source": 235, + "teal": 742, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 932 + 639 ] }, { - "teal": 737, - "source": 235, + "teal": 743, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 933, - 934 + 640 ] }, { "teal": 744, - "source": 219, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 935, - 936 + 641, + 642 ] }, { "teal": 745, - "source": 219, + "source": "contracts/stakingPool.algo.ts:219", "pc": [ - 937 + 643, + 644, + 645 ] }, { - "teal": 746, - "source": 219, + "teal": 751, + "source": "contracts/stakingPool.algo.ts:239", "pc": [ - 938 + 646, + 647 ] }, { - "teal": 747, - "source": 219, + "teal": 752, + "source": "contracts/stakingPool.algo.ts:239", "pc": [ - 939, - 940 + 648 ] }, { - "teal": 748, - "source": 219, + "teal": 753, + "source": "contracts/stakingPool.algo.ts:239", "pc": [ - 941, - 942, - 943 + 649 ] }, { "teal": 754, - "source": 239, + "source": "contracts/stakingPool.algo.ts:239", "pc": [ - 944, - 945 + 650, + 651, + 652 ] }, { - "teal": 755, - "source": 239, + "teal": 758, + "source": "contracts/stakingPool.algo.ts:241", + "errorMessage": "Staking pool full", "pc": [ - 946 + 653 ] }, { - "teal": 756, - "source": 239, + "teal": 763, + "source": "contracts/stakingPool.algo.ts:246", "pc": [ - 947 + 654, + 655 ] }, { - "teal": 757, - "source": 239, + "teal": 764, + "source": "contracts/stakingPool.algo.ts:246", "pc": [ - 948, - 949, - 950 + 656, + 657 ] }, { - "teal": 761, - "source": 241, - "errorMessage": "Staking pool full", + "teal": 765, + "source": "contracts/stakingPool.algo.ts:246", "pc": [ - 951 + 658, + 659 ] }, { "teal": 766, - "source": 246, + "source": "contracts/stakingPool.algo.ts:246", "pc": [ - 952, - 953 + 660 ] }, { "teal": 767, - "source": 246, + "source": "contracts/stakingPool.algo.ts:246", "pc": [ - 954, - 955 + 661 ] }, { - "teal": 768, - "source": 246, + "teal": 770, + "source": "contracts/stakingPool.algo.ts:246", + "errorMessage": "must stake at least the minimum for this pool", "pc": [ - 956, - 957 + 662 ] }, { - "teal": 769, - "source": 246, + "teal": 774, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 958 + 663, + 664 ] }, { - "teal": 770, - "source": 246, + "teal": 775, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 959 + 665 ] }, { - "teal": 773, - "source": 246, - "errorMessage": "must stake at least the minimum for this pool", + "teal": 776, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 960 + 666 ] }, { "teal": 777, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 961, - 962 + 667 ] }, { "teal": 778, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 963 + 668 ] }, { "teal": 779, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 964 + 669 ] }, { "teal": 780, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 965 + 670 ] }, { "teal": 781, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 966 + 671, + 672 ] }, { "teal": 782, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 967 + 673 ] }, { "teal": 783, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 968 + 674, + 675 ] }, { "teal": 784, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 969, - 970 + 676 ] }, { "teal": 785, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 971 + 677, + 678 ] }, { "teal": 786, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 972, - 973 + 679 ] }, { "teal": 787, - "source": 248, + "source": "contracts/stakingPool.algo.ts:248", "pc": [ - 974 + 680 ] }, { - "teal": 788, - "source": 248, + "teal": 797, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 975, - 976 + 681, + 682 ] }, { - "teal": 789, - "source": 248, + "teal": 798, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 977 + 683 ] }, { - "teal": 790, - "source": 248, + "teal": 799, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 978 + 684 ] }, { "teal": 800, - "source": 249, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 979, - 980 + 685 ] }, { "teal": 801, - "source": 249, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 981 + 686 ] }, { "teal": 802, - "source": 249, + "source": "contracts/stakingPool.algo.ts:250", "pc": [ - 982 + 687, + 688 ] }, { "teal": 803, - "source": 249, + "source": "contracts/stakingPool.algo.ts:251", "pc": [ - 983 + 689, + 690 ] }, { "teal": 804, - "source": 249, + "source": "contracts/stakingPool.algo.ts:251", "pc": [ - 984 + 691, + 692 ] }, { "teal": 805, - "source": 250, + "source": "contracts/stakingPool.algo.ts:251", "pc": [ - 985, - 986 + 693 ] }, { "teal": 806, - "source": 251, + "source": "contracts/stakingPool.algo.ts:251", "pc": [ - 987, - 988 + 694 ] }, { "teal": 807, - "source": 251, + "source": "contracts/stakingPool.algo.ts:252", "pc": [ - 989, - 990 + 695, + 696 ] }, { "teal": 808, - "source": 251, + "source": "contracts/stakingPool.algo.ts:252", "pc": [ - 991 + 697 ] }, { "teal": 809, - "source": 251, + "source": "contracts/stakingPool.algo.ts:253", "pc": [ - 992 + 698, + 699 ] }, { "teal": 810, - "source": 252, + "source": "contracts/stakingPool.algo.ts:253", "pc": [ - 993, - 994 + 700 ] }, { "teal": 811, - "source": 252, + "source": "contracts/stakingPool.algo.ts:254", "pc": [ - 995 + 701, + 702 ] }, { "teal": 812, - "source": 253, + "source": "contracts/stakingPool.algo.ts:254", "pc": [ - 996, - 997 + 703 ] }, { "teal": 813, - "source": 253, + "source": "contracts/stakingPool.algo.ts:254", "pc": [ - 998 + 704 ] }, { "teal": 814, - "source": 254, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 999, - 1000 + 705 ] }, { "teal": 815, - "source": 254, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 1001 + 706, + 707 ] }, { "teal": 816, - "source": 254, + "source": "contracts/stakingPool.algo.ts:249", "pc": [ - 1002 + 708 ] }, { - "teal": 817, - "source": 249, + "teal": 820, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1003 + 709, + 710 ] }, { - "teal": 818, - "source": 249, + "teal": 821, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1004, - 1005 + 711 ] }, { - "teal": 819, - "source": 249, + "teal": 822, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1006 + 712 ] }, { "teal": 823, - "source": 256, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1007, - 1008 + 713 ] }, { "teal": 824, - "source": 256, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1009 + 714, + 715 ] }, { "teal": 825, - "source": 256, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1010 + 716 ] }, { "teal": 826, - "source": 256, + "source": "contracts/stakingPool.algo.ts:256", "pc": [ - 1011 + 717 ] }, { - "teal": 827, - "source": 256, + "teal": 830, + "source": "contracts/stakingPool.algo.ts:257", "pc": [ - 1012, - 1013 + 718, + 719 ] }, { - "teal": 828, - "source": 256, + "teal": 834, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 1014 + 720, + 721 ] }, { - "teal": 829, - "source": 256, + "teal": 837, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 1015 + 722, + 723 ] }, { - "teal": 833, - "source": 257, + "teal": 838, + "source": "contracts/stakingPool.algo.ts:185", "pc": [ - 1016, - 1017 + 724 ] }, { - "teal": 837, - "source": 185, + "teal": 843, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1018, - 1019 + 725, + 726, + 727 ] }, { - "teal": 840, - "source": 185, + "teal": 844, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1020, - 1021 + 728 ] }, { - "teal": 841, - "source": 185, + "teal": 847, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1022 + 729, + 730, + 731 ] }, { - "teal": 846, - "source": 271, + "teal": 848, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1023, - 1024, - 1025 + 732 ] }, { - "teal": 847, - "source": 271, + "teal": 849, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1026 + 733 ] }, { "teal": 850, - "source": 271, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1027, - 1028, - 1029 + 734, + 735 ] }, { "teal": 851, - "source": 271, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1030 + 736 ] }, { - "teal": 852, - "source": 271, + "teal": 854, + "source": "contracts/stakingPool.algo.ts:271", + "errorMessage": "argument 1 (staker) for removeStake must be a address", "pc": [ - 1031 + 737 ] }, { - "teal": 853, - "source": 271, + "teal": 857, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1032, - 1033 + 738, + 739, + 740 ] }, { - "teal": 854, - "source": 271, + "teal": 858, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1034 + 741 ] }, { - "teal": 857, - "source": 271, - "errorMessage": "argument 1 (staker) for removeStake must be a address", + "teal": 859, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1035 + 742 ] }, { - "teal": 860, - "source": 271, + "teal": 873, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1036, - 1037, - 1038 + 743, + 744, + 745 ] }, { - "teal": 861, - "source": 271, + "teal": 876, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1039 + 746 ] }, { - "teal": 862, - "source": 271, + "teal": 877, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1040 + 747, + 748 ] }, { - "teal": 876, - "source": 271, + "teal": 882, + "source": "contracts/stakingPool.algo.ts:274", "pc": [ - 1041, - 1042, - 1043 + 749, + 750 ] }, { - "teal": 879, - "source": 271, + "teal": 883, + "source": "contracts/stakingPool.algo.ts:274", "pc": [ - 1044, - 1045 + 751, + 752 ] }, { - "teal": 880, - "source": 271, + "teal": 884, + "source": "contracts/stakingPool.algo.ts:274", "pc": [ - 1046, - 1047 + 753 ] }, { "teal": 885, - "source": 274, + "source": "contracts/stakingPool.algo.ts:274", "pc": [ - 1048, - 1049 + 754, + 755, + 756 ] }, { - "teal": 886, - "source": 274, + "teal": 893, + "source": "contracts/stakingPool.algo.ts:276", "pc": [ - 1050, - 1051 + 757, + 758, + 759 ] }, { - "teal": 887, - "source": 274, + "teal": 896, + "source": "contracts/stakingPool.algo.ts:275", + "errorMessage": "If staker is not sender in removeStake call, then sender MUST be owner or manager of validator", "pc": [ - 1052 + 760 ] }, { - "teal": 888, - "source": 274, + "teal": 901, + "source": "contracts/stakingPool.algo.ts:281", "pc": [ - 1053, - 1054, - 1055 + 761, + 762, + 763 ] }, { - "teal": 896, - "source": 276, + "teal": 905, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1056, - 1057, - 1058 + 764 ] }, { - "teal": 899, - "source": 275, - "errorMessage": "If staker is not sender in removeStake call, then sender MUST be owner or manager of validator", + "teal": 906, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1059 + 765, + 766 ] }, { - "teal": 904, - "source": 281, + "teal": 911, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1060, - 1061, - 1062 + 767, + 768 ] }, { - "teal": 908, - "source": 283, + "teal": 912, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1063 + 769, + 770 ] }, { - "teal": 909, - "source": 283, + "teal": 913, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1064, - 1065 + 771 ] }, { "teal": 914, - "source": 283, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1066, - 1067 + 772, + 773, + 774 ] }, { - "teal": 915, - "source": 283, + "teal": 919, + "source": "contracts/stakingPool.algo.ts:284", "pc": [ - 1068, - 1069 + 775, + 776 ] }, { - "teal": 916, - "source": 283, + "teal": 920, + "source": "contracts/stakingPool.algo.ts:284", "pc": [ - 1070 + 777, + 778 ] }, { - "teal": 917, - "source": 283, + "teal": 921, + "source": "contracts/stakingPool.algo.ts:284", "pc": [ - 1071, - 1072, - 1073 + 779 ] }, { "teal": 922, - "source": 284, + "source": "contracts/stakingPool.algo.ts:284", "pc": [ - 1074, - 1075 + 780, + 781, + 782 ] }, { - "teal": 923, - "source": 284, + "teal": 927, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1076, - 1077 + 783 ] }, { - "teal": 924, - "source": 284, + "teal": 928, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1078 + 784 ] }, { - "teal": 925, - "source": 284, + "teal": 929, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1079, - 1080, - 1081 + 785, + 786 ] }, { "teal": 930, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1082 + 787 ] }, { "teal": 931, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1083 + 788, + 789 ] }, { "teal": 932, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1084, - 1085 + 790, + 791 ] }, { "teal": 933, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1086 + 792 ] }, { "teal": 934, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1087, - 1088 + 793, + 794 ] }, { "teal": 935, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1089, - 1090 + 795, + 796 ] }, { "teal": 936, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1091 + 797, + 798 ] }, { "teal": 937, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1092, - 1093 + 799, + 800 ] }, { "teal": 938, - "source": 285, + "source": "contracts/stakingPool.algo.ts:285", "pc": [ - 1094, - 1095 + 801 ] }, { - "teal": 939, - "source": 285, + "teal": 943, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1096, - 1097 + 802, + 803 ] }, { - "teal": 940, - "source": 285, + "teal": 944, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1098, - 1099 + 804 ] }, { - "teal": 941, - "source": 285, + "teal": 945, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1100 + 805 ] }, { "teal": 946, - "source": 287, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1101, - 1102 + 806 ] }, { "teal": 947, - "source": 287, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1103 + 807 ] }, { "teal": 948, - "source": 287, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1104 + 808, + 809 ] }, { "teal": 949, - "source": 287, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1105 + 810 ] }, { "teal": 950, - "source": 287, + "source": "contracts/stakingPool.algo.ts:287", "pc": [ - 1106 + 811, + 812 ] }, { - "teal": 951, - "source": 287, + "teal": 955, + "source": "contracts/stakingPool.algo.ts:288", "pc": [ - 1107, - 1108 + 813, + 814 ] }, { - "teal": 952, - "source": 287, + "teal": 956, + "source": "contracts/stakingPool.algo.ts:288", "pc": [ - 1109 + 815, + 816, + 817 ] }, { - "teal": 953, - "source": 287, + "teal": 957, + "source": "contracts/stakingPool.algo.ts:288", "pc": [ - 1110, - 1111 + 818, + 819 ] }, { "teal": 958, - "source": 288, + "source": "contracts/stakingPool.algo.ts:288", "pc": [ - 1112, - 1113 + 820 ] }, { "teal": 959, - "source": 288, + "source": "contracts/stakingPool.algo.ts:288", "pc": [ - 1114, - 1115, - 1116 + 821, + 822, + 823 ] }, { - "teal": 960, - "source": 288, + "teal": 965, + "source": "contracts/stakingPool.algo.ts:289", "pc": [ - 1117, - 1118 + 824, + 825 ] }, { - "teal": 961, - "source": 288, + "teal": 966, + "source": "contracts/stakingPool.algo.ts:289", "pc": [ - 1119 + 826 ] }, { - "teal": 962, - "source": 288, + "teal": 967, + "source": "contracts/stakingPool.algo.ts:289", "pc": [ - 1120, - 1121, - 1122 + 827 ] }, { "teal": 968, - "source": 289, + "source": "contracts/stakingPool.algo.ts:289", "pc": [ - 1123, - 1124 + 828, + 829, + 830 ] }, { - "teal": 969, - "source": 289, + "teal": 973, + "source": "contracts/stakingPool.algo.ts:291", "pc": [ - 1125 + 831, + 832 ] }, { - "teal": 970, - "source": 289, + "teal": 974, + "source": "contracts/stakingPool.algo.ts:291", "pc": [ - 1126 + 833, + 834, + 835 ] }, { - "teal": 971, - "source": 289, + "teal": 975, + "source": "contracts/stakingPool.algo.ts:291", "pc": [ - 1127, - 1128, - 1129 + 836 ] }, { "teal": 976, - "source": 291, + "source": "contracts/stakingPool.algo.ts:291", "pc": [ - 1130, - 1131 + 837, + 838 ] }, { - "teal": 977, - "source": 291, + "teal": 982, + "source": "contracts/stakingPool.algo.ts:293", "pc": [ - 1132, - 1133, - 1134 + 839, + 840 ] }, { - "teal": 978, - "source": 291, + "teal": 983, + "source": "contracts/stakingPool.algo.ts:293", "pc": [ - 1135 + 841, + 842, + 843 ] }, { - "teal": 979, - "source": 291, + "teal": 984, + "source": "contracts/stakingPool.algo.ts:293", "pc": [ - 1136, - 1137 + 844 ] }, { "teal": 985, - "source": 293, + "source": "contracts/stakingPool.algo.ts:293", "pc": [ - 1138, - 1139 + 845, + 846 ] }, { "teal": 986, - "source": 293, + "source": "contracts/stakingPool.algo.ts:293", "pc": [ - 1140, - 1141, - 1142 + 847 ] }, { "teal": 987, - "source": 293, + "source": "contracts/stakingPool.algo.ts:293", "pc": [ - 1143 + 848, + 849, + 850 ] }, { - "teal": 988, - "source": 293, + "teal": 991, + "source": "contracts/stakingPool.algo.ts:294", + "errorMessage": "Insufficient balance", "pc": [ - 1144, - 1145 + 851 ] }, { - "teal": 989, - "source": 293, + "teal": 996, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1146 + 852, + 853 ] }, { - "teal": 990, - "source": 293, + "teal": 997, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1147, - 1148, - 1149 + 854, + 855 ] }, { - "teal": 994, - "source": 294, - "errorMessage": "Insufficient balance", + "teal": 998, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1150 + 856, + 857 ] }, { "teal": 999, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1151, - 1152 + 858, + 859, + 860 ] }, { "teal": 1000, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1153, - 1154 + 861 ] }, { "teal": 1001, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1155, - 1156 + 862, + 863 ] }, { "teal": 1002, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1157, - 1158, - 1159 + 864 ] }, { "teal": 1003, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1160 + 865 ] }, { "teal": 1004, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1161, - 1162 + 866 ] }, { "teal": 1005, - "source": 296, + "source": "contracts/stakingPool.algo.ts:296", "pc": [ - 1163 + 867, + 868 ] }, { - "teal": 1006, - "source": 296, + "teal": 1009, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1164 + 869, + 870 ] }, { - "teal": 1007, - "source": 296, + "teal": 1010, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1165 + 871 ] }, { - "teal": 1008, - "source": 296, + "teal": 1011, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1166, - 1167 + 872, + 873 ] }, { "teal": 1012, - "source": 297, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1168, - 1169 + 874 ] }, { "teal": 1013, - "source": 297, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1170 + 875, + 876 ] }, { "teal": 1014, - "source": 297, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1171, - 1172 + 877 ] }, { "teal": 1015, - "source": 297, + "source": "contracts/stakingPool.algo.ts:297", "pc": [ - 1173 + 878 ] }, { - "teal": 1016, - "source": 297, + "teal": 1019, + "source": "contracts/stakingPool.algo.ts:299", "pc": [ - 1174, - 1175 + 879 ] }, { - "teal": 1017, - "source": 297, + "teal": 1020, + "source": "contracts/stakingPool.algo.ts:299", "pc": [ - 1176 + 880, + 881 ] }, { - "teal": 1018, - "source": 297, + "teal": 1025, + "source": "contracts/stakingPool.algo.ts:300", "pc": [ - 1177 + 882, + 883 ] }, { - "teal": 1022, - "source": 299, + "teal": 1026, + "source": "contracts/stakingPool.algo.ts:300", "pc": [ - 1178 + 884, + 885, + 886 ] }, { - "teal": 1023, - "source": 299, + "teal": 1027, + "source": "contracts/stakingPool.algo.ts:300", "pc": [ - 1179, - 1180 + 887 ] }, { "teal": 1028, - "source": 300, + "source": "contracts/stakingPool.algo.ts:300", "pc": [ - 1181, - 1182 + 888 ] }, { "teal": 1029, - "source": 300, + "source": "contracts/stakingPool.algo.ts:300", "pc": [ - 1183, - 1184, - 1185 + 889 ] }, { "teal": 1030, - "source": 300, + "source": "contracts/stakingPool.algo.ts:300", "pc": [ - 1186 + 890, + 891, + 892 ] }, { - "teal": 1031, - "source": 300, + "teal": 1036, + "source": "contracts/stakingPool.algo.ts:302", "pc": [ - 1187 + 893, + 894 ] }, { - "teal": 1032, - "source": 300, + "teal": 1037, + "source": "contracts/stakingPool.algo.ts:302", "pc": [ - 1188 + 895 ] }, { - "teal": 1033, - "source": 300, + "teal": 1038, + "source": "contracts/stakingPool.algo.ts:302", "pc": [ - 1189, - 1190, - 1191 + 896 ] }, { "teal": 1039, - "source": 302, + "source": "contracts/stakingPool.algo.ts:302", "pc": [ - 1192 + 897 ] }, { "teal": 1040, - "source": 302, + "source": "contracts/stakingPool.algo.ts:302", "pc": [ - 1193 + 898, + 899, + 900 ] }, { - "teal": 1041, - "source": 302, + "teal": 1048, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1194 + 901 ] }, { - "teal": 1042, - "source": 302, + "teal": 1049, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1195 + 902 ] }, { - "teal": 1043, - "source": 302, + "teal": 1050, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1196, - 1197, - 1198 + 903, + 904 ] }, { "teal": 1051, - "source": 303, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1199 + 905, + 906 ] }, { "teal": 1052, - "source": 303, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1200 + 907, + 908 ] }, { - "teal": 1053, - "source": 303, + "teal": 1056, + "source": "contracts/stakingPool.algo.ts:304", "pc": [ - 1201, - 1202 + 909 ] }, { - "teal": 1054, - "source": 303, + "teal": 1057, + "source": "contracts/stakingPool.algo.ts:304", "pc": [ - 1203, - 1204 + 910 ] }, { - "teal": 1055, - "source": 303, + "teal": 1058, + "source": "contracts/stakingPool.algo.ts:304", "pc": [ - 1205, - 1206 + 911, + 912 ] }, { - "teal": 1059, - "source": 304, + "teal": 1062, + "source": "contracts/stakingPool.algo.ts:305", "pc": [ - 1207 + 913 ] }, { - "teal": 1060, - "source": 304, + "teal": 1063, + "source": "contracts/stakingPool.algo.ts:305", "pc": [ - 1208 + 914 ] }, { - "teal": 1061, - "source": 304, + "teal": 1064, + "source": "contracts/stakingPool.algo.ts:305", "pc": [ - 1209, - 1210 + 915 ] }, { "teal": 1065, - "source": 305, + "source": "contracts/stakingPool.algo.ts:305", "pc": [ - 1211 + 916, + 917 ] }, { - "teal": 1066, - "source": 305, + "teal": 1068, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1212 + 918 ] }, { - "teal": 1067, - "source": 305, + "teal": 1069, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1213 + 919, + 920 ] }, { - "teal": 1068, - "source": 305, + "teal": 1072, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1214, - 1215 + 921 ] }, { - "teal": 1071, - "source": 303, + "teal": 1073, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1216 + 922, + 923 ] }, { - "teal": 1072, - "source": 303, + "teal": 1074, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1217, - 1218 + 924 ] }, { "teal": 1075, - "source": 303, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1219 + 925 ] }, { "teal": 1076, - "source": 303, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1220, - 1221 + 926, + 927 ] }, { "teal": 1077, - "source": 303, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1222 + 928, + 929, + 930 ] }, { "teal": 1078, - "source": 303, + "source": "contracts/stakingPool.algo.ts:303", "pc": [ - 1223 + 931, + 932 ] }, { - "teal": 1079, - "source": 303, + "teal": 1086, + "source": "contracts/stakingPool.algo.ts:311", "pc": [ - 1224, - 1225 + 933 ] }, { - "teal": 1080, - "source": 303, + "teal": 1087, + "source": "contracts/stakingPool.algo.ts:311", "pc": [ - 1226, - 1227, - 1228 + 934, + 935 ] }, { - "teal": 1081, - "source": 303, + "teal": 1088, + "source": "contracts/stakingPool.algo.ts:311", "pc": [ - 1229, - 1230 + 936, + 937 ] }, { - "teal": 1089, - "source": 311, + "teal": 1092, + "source": "contracts/stakingPool.algo.ts:312", "pc": [ - 1231 + 938, + 939 ] }, { - "teal": 1090, - "source": 311, + "teal": 1093, + "source": "contracts/stakingPool.algo.ts:312", "pc": [ - 1232, - 1233 + 940, + 941, + 942 ] }, { - "teal": 1091, - "source": 311, + "teal": 1094, + "source": "contracts/stakingPool.algo.ts:312", "pc": [ - 1234, - 1235 + 943 ] }, { "teal": 1095, - "source": 312, + "source": "contracts/stakingPool.algo.ts:312", "pc": [ - 1236, - 1237 + 944, + 945 ] }, { - "teal": 1096, - "source": 312, + "teal": 1099, + "source": "contracts/stakingPool.algo.ts:313", "pc": [ - 1238, - 1239, - 1240 + 946, + 947 ] }, { - "teal": 1097, - "source": 312, + "teal": 1100, + "source": "contracts/stakingPool.algo.ts:313", "pc": [ - 1241 + 948, + 949 ] }, { - "teal": 1098, - "source": 312, + "teal": 1104, + "source": "contracts/stakingPool.algo.ts:314", "pc": [ - 1242, - 1243 + 950, + 951 ] }, { - "teal": 1102, - "source": 313, + "teal": 1105, + "source": "contracts/stakingPool.algo.ts:314", "pc": [ - 1244, - 1245 + 952, + 953, + 954 ] }, { - "teal": 1103, - "source": 313, + "teal": 1106, + "source": "contracts/stakingPool.algo.ts:314", "pc": [ - 1246, - 1247 + 955 ] }, { "teal": 1107, - "source": 314, + "source": "contracts/stakingPool.algo.ts:314", "pc": [ - 1248, - 1249 + 956, + 957 ] }, { - "teal": 1108, - "source": 314, + "teal": 1110, + "source": "contracts/stakingPool.algo.ts:311", "pc": [ - 1250, - 1251, - 1252 + 958 ] }, { - "teal": 1109, - "source": 314, + "teal": 1111, + "source": "contracts/stakingPool.algo.ts:311", "pc": [ - 1253 + 959, + 960 ] }, { - "teal": 1110, - "source": 314, + "teal": 1114, + "source": "contracts/stakingPool.algo.ts:311", "pc": [ - 1254, - 1255 + 961 ] }, { - "teal": 1113, - "source": 311, + "teal": 1118, + "source": "contracts/stakingPool.algo.ts:316", "pc": [ - 1256 + 962, + 963 ] }, { - "teal": 1114, - "source": 311, + "teal": 1119, + "source": "contracts/stakingPool.algo.ts:316", "pc": [ - 1257, - 1258 + 964, + 965, + 966 ] }, { - "teal": 1117, - "source": 311, + "teal": 1120, + "source": "contracts/stakingPool.algo.ts:316", "pc": [ - 1259 + 967 ] }, { "teal": 1121, - "source": 316, + "source": "contracts/stakingPool.algo.ts:316", "pc": [ - 1260, - 1261 + 968, + 969 ] }, { - "teal": 1122, - "source": 316, + "teal": 1125, + "source": "contracts/stakingPool.algo.ts:317", "pc": [ - 1262, - 1263, - 1264 + 970, + 971 ] }, { - "teal": 1123, - "source": 316, + "teal": 1126, + "source": "contracts/stakingPool.algo.ts:317", "pc": [ - 1265 + 972, + 973 ] }, { - "teal": 1124, - "source": 316, + "teal": 1127, + "source": "contracts/stakingPool.algo.ts:317", "pc": [ - 1266, - 1267 + 974, + 975 ] }, { "teal": 1128, - "source": 317, + "source": "contracts/stakingPool.algo.ts:317", "pc": [ - 1268, - 1269 + 976, + 977 ] }, { "teal": 1129, - "source": 317, + "source": "contracts/stakingPool.algo.ts:302", "pc": [ - 1270, - 1271 + 978, + 979, + 980 ] }, { - "teal": 1130, - "source": 317, + "teal": 1134, + "source": "contracts/stakingPool.algo.ts:322", "pc": [ - 1272, - 1273 + 981, + 982 ] }, { - "teal": 1131, - "source": 317, + "teal": 1135, + "source": "contracts/stakingPool.algo.ts:322", "pc": [ - 1274, - 1275 + 983, + 984, + 985 ] }, { - "teal": 1132, - "source": 302, + "teal": 1136, + "source": "contracts/stakingPool.algo.ts:322", "pc": [ - 1276, - 1277, - 1278 + 986 ] }, { "teal": 1137, - "source": 322, + "source": "contracts/stakingPool.algo.ts:322", "pc": [ - 1279, - 1280 + 987, + 988 ] }, { - "teal": 1138, - "source": 322, + "teal": 1141, + "source": "contracts/stakingPool.algo.ts:323", "pc": [ - 1281, - 1282, - 1283 + 989, + 990 ] }, { - "teal": 1139, - "source": 322, + "teal": 1142, + "source": "contracts/stakingPool.algo.ts:323", "pc": [ - 1284 + 991, + 992 ] }, { - "teal": 1140, - "source": 322, + "teal": 1143, + "source": "contracts/stakingPool.algo.ts:323", "pc": [ - 1285, - 1286 + 993, + 994 ] }, { "teal": 1144, - "source": 323, + "source": "contracts/stakingPool.algo.ts:323", "pc": [ - 1287, - 1288 + 995, + 996 ] }, { - "teal": 1145, - "source": 323, + "teal": 1154, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1289, - 1290 + 997, + 998 ] }, { - "teal": 1146, - "source": 323, + "teal": 1155, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1291, - 1292 + 999, + 1000, + 1001 ] }, { - "teal": 1147, - "source": 323, + "teal": 1156, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1293, - 1294 + 1002 ] }, { "teal": 1157, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1295, - 1296 + 1003 ] }, { "teal": 1158, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1297, - 1298, - 1299 + 1004 ] }, { "teal": 1159, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1300 + 1005 ] }, { "teal": 1160, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1301 + 1006, + 1007, + 1008 ] }, { "teal": 1161, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1302 + 1009, + 1010 ] }, { "teal": 1162, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1303 + 1011, + 1012, + 1013 ] }, { "teal": 1163, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1304, - 1305, - 1306 + 1014 ] }, { "teal": 1164, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1307, - 1308 + 1015, + 1016 ] }, { "teal": 1165, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1309, - 1310, - 1311 + 1017 ] }, { "teal": 1166, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1312 + 1018 ] }, { "teal": 1167, - "source": 329, + "source": "contracts/stakingPool.algo.ts:329", "pc": [ - 1313, - 1314 + 1019 ] }, { - "teal": 1168, - "source": 329, + "teal": 1171, + "source": "contracts/stakingPool.algo.ts:328", + "errorMessage": "cannot reduce balance below minimum allowed stake unless all is removed", "pc": [ - 1315 + 1020 ] }, { - "teal": 1169, - "source": 329, + "teal": 1179, + "source": "contracts/stakingPool.algo.ts:336", "pc": [ - 1316 + 1021 ] }, { - "teal": 1170, - "source": 329, + "teal": 1180, + "source": "contracts/stakingPool.algo.ts:336", "pc": [ - 1317 + 1022 ] }, { - "teal": 1174, - "source": 328, - "errorMessage": "cannot reduce balance below minimum allowed stake unless all is removed", + "teal": 1181, + "source": "contracts/stakingPool.algo.ts:336", "pc": [ - 1318 + 1023, + 1024 ] }, { - "teal": 1182, - "source": 336, + "teal": 1185, + "source": "contracts/stakingPool.algo.ts:337", "pc": [ - 1319 + 1025, + 1026 ] }, { - "teal": 1183, - "source": 336, + "teal": 1186, + "source": "contracts/stakingPool.algo.ts:337", "pc": [ - 1320 + 1027, + 1028 ] }, { - "teal": 1184, - "source": 336, + "teal": 1190, + "source": "contracts/stakingPool.algo.ts:338", "pc": [ - 1321, - 1322 + 1029, + 1030 ] }, { - "teal": 1188, - "source": 337, + "teal": 1191, + "source": "contracts/stakingPool.algo.ts:338", "pc": [ - 1323, - 1324 + 1031, + 1032 ] }, { - "teal": 1189, - "source": 337, + "teal": 1195, + "source": "contracts/stakingPool.algo.ts:339", "pc": [ - 1325, - 1326 + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042 ] }, { - "teal": 1193, - "source": 338, + "teal": 1196, + "source": "contracts/stakingPool.algo.ts:339", "pc": [ - 1327, - 1328 + 1043, + 1044 ] }, { - "teal": 1194, - "source": 338, + "teal": 1199, + "source": "contracts/stakingPool.algo.ts:336", "pc": [ - 1329, - 1330 + 1045 ] }, { - "teal": 1198, - "source": 339, + "teal": 1200, + "source": "contracts/stakingPool.algo.ts:336", "pc": [ - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340 + 1046, + 1047 ] }, { - "teal": 1199, - "source": 339, + "teal": 1203, + "source": "contracts/stakingPool.algo.ts:336", "pc": [ - 1341, - 1342 + 1048 ] }, { - "teal": 1202, - "source": 336, + "teal": 1207, + "source": "contracts/stakingPool.algo.ts:341", "pc": [ - 1343 + 1049 ] }, { - "teal": 1203, - "source": 336, + "teal": 1208, + "source": "contracts/stakingPool.algo.ts:341", "pc": [ - 1344, - 1345 + 1050, + 1051 ] }, { - "teal": 1206, - "source": 336, + "teal": 1213, + "source": "contracts/stakingPool.algo.ts:342", "pc": [ - 1346 + 1052, + 1053 ] }, { - "teal": 1210, - "source": 341, + "teal": 1214, + "source": "contracts/stakingPool.algo.ts:342", "pc": [ - 1347 + 1054, + 1055, + 1056 ] }, { - "teal": 1211, - "source": 341, + "teal": 1215, + "source": "contracts/stakingPool.algo.ts:342", "pc": [ - 1348, - 1349 + 1057 ] }, { "teal": 1216, - "source": 342, + "source": "contracts/stakingPool.algo.ts:342", "pc": [ - 1350, - 1351 + 1058 ] }, { "teal": 1217, - "source": 342, + "source": "contracts/stakingPool.algo.ts:342", "pc": [ - 1352, - 1353, - 1354 + 1059 ] }, { "teal": 1218, - "source": 342, + "source": "contracts/stakingPool.algo.ts:342", "pc": [ - 1355 + 1060, + 1061, + 1062 ] }, { - "teal": 1219, - "source": 342, + "teal": 1223, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1356 + 1063, + 1064 ] }, { - "teal": 1220, - "source": 342, + "teal": 1224, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1357 + 1065 ] }, { - "teal": 1221, - "source": 342, + "teal": 1225, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1358, - 1359, - 1360 + 1066 ] }, { "teal": 1226, - "source": 344, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1361, - 1362 + 1067 ] }, { "teal": 1227, - "source": 344, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1363 + 1068, + 1069 ] }, { "teal": 1228, - "source": 344, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1364 + 1070 ] }, { "teal": 1229, - "source": 344, + "source": "contracts/stakingPool.algo.ts:344", "pc": [ - 1365 + 1071 ] }, { - "teal": 1230, - "source": 344, + "teal": 1233, + "source": "contracts/stakingPool.algo.ts:345", "pc": [ - 1366, - 1367 + 1072, + 1073 ] }, { - "teal": 1231, - "source": 344, + "teal": 1234, + "source": "contracts/stakingPool.algo.ts:345", "pc": [ - 1368 + 1074 ] }, { - "teal": 1232, - "source": 344, + "teal": 1235, + "source": "contracts/stakingPool.algo.ts:345", "pc": [ - 1369 + 1075, + 1076 ] }, { "teal": 1236, - "source": 345, + "source": "contracts/stakingPool.algo.ts:345", "pc": [ - 1370, - 1371 + 1077 ] }, { "teal": 1237, - "source": 345, + "source": "contracts/stakingPool.algo.ts:345", "pc": [ - 1372 + 1078, + 1079 ] }, { - "teal": 1238, - "source": 345, + "teal": 1241, + "source": "contracts/stakingPool.algo.ts:346", "pc": [ - 1373, - 1374 + 1080, + 1081 ] }, { - "teal": 1239, - "source": 345, + "teal": 1242, + "source": "contracts/stakingPool.algo.ts:346", "pc": [ - 1375 + 1082, + 1083 ] }, { - "teal": 1240, - "source": 345, + "teal": 1243, + "source": "contracts/stakingPool.algo.ts:346", "pc": [ - 1376, - 1377 + 1084, + 1085 ] }, { "teal": 1244, - "source": 346, + "source": "contracts/stakingPool.algo.ts:346", "pc": [ - 1378, - 1379 + 1086, + 1087 ] }, { - "teal": 1245, - "source": 346, + "teal": 1248, + "source": "contracts/stakingPool.algo.ts:347", "pc": [ - 1380, - 1381 + 1088, + 1089 ] }, { - "teal": 1246, - "source": 346, + "teal": 1249, + "source": "contracts/stakingPool.algo.ts:347", "pc": [ - 1382, - 1383 + 1090, + 1091 ] }, { - "teal": 1247, - "source": 346, + "teal": 1250, + "source": "contracts/stakingPool.algo.ts:347", "pc": [ - 1384, - 1385 + 1092, + 1093 ] }, { "teal": 1251, - "source": 347, + "source": "contracts/stakingPool.algo.ts:347", "pc": [ - 1386, - 1387 + 1094, + 1095 ] }, { - "teal": 1252, - "source": 347, + "teal": 1255, + "source": "contracts/stakingPool.algo.ts:348", "pc": [ - 1388, - 1389 + 1096 ] }, { - "teal": 1253, - "source": 347, + "teal": 1256, + "source": "contracts/stakingPool.algo.ts:348", "pc": [ - 1390, - 1391 + 1097, + 1098 ] }, { - "teal": 1254, - "source": 347, + "teal": 1261, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1392, - 1393 + 1099, + 1100 ] }, { - "teal": 1258, - "source": 348, + "teal": 1262, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1394 + 1101 ] }, { - "teal": 1259, - "source": 348, + "teal": 1263, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1395, - 1396 + 1102 ] }, { "teal": 1264, - "source": 351, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1397, - 1398 + 1103, + 1104 ] }, { "teal": 1265, - "source": 351, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1399 + 1105 ] }, { "teal": 1266, - "source": 351, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1400 + 1106, + 1107 ] }, { "teal": 1267, - "source": 351, + "source": "contracts/stakingPool.algo.ts:351", "pc": [ - 1401, - 1402 + 1108 ] }, { - "teal": 1268, - "source": 351, + "teal": 1271, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1403 + 1109, + 1110 ] }, { - "teal": 1269, - "source": 351, + "teal": 1272, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1404, - 1405 + 1111 ] }, { - "teal": 1270, - "source": 351, + "teal": 1273, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1406 + 1112, + 1113 ] }, { "teal": 1274, - "source": 353, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1407, - 1408 + 1114 ] }, { "teal": 1275, - "source": 353, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1409 + 1115 ] }, { "teal": 1276, - "source": 353, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1410, - 1411 + 1116, + 1117 ] }, { "teal": 1277, - "source": 353, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1412 + 1118 ] }, { "teal": 1278, - "source": 353, + "source": "contracts/stakingPool.algo.ts:353", "pc": [ - 1413 + 1119, + 1120 ] }, { - "teal": 1279, - "source": 353, + "teal": 1282, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1414, - 1415 + 1121, + 1122 ] }, { - "teal": 1280, - "source": 353, + "teal": 1283, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1416 + 1123 ] }, { - "teal": 1281, - "source": 353, + "teal": 1284, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1417, - 1418 + 1124, + 1125 ] }, { "teal": 1285, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1419, - 1420 + 1126 ] }, { "teal": 1286, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1421 + 1127 ] }, { "teal": 1287, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1422, - 1423 + 1128 ] }, { "teal": 1288, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1424 + 1129 ] }, { "teal": 1289, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1425 + 1130, + 1131 ] }, { "teal": 1290, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1426 + 1132 ] }, { - "teal": 1291, - "source": 354, + "teal": 1293, + "source": "contracts/stakingPool.algo.ts:354", + "errorMessage": "(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", "pc": [ - 1427 + 1133 ] }, { - "teal": 1292, - "source": 354, + "teal": 1294, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1428, - 1429 + 1134, + 1135 ] }, { - "teal": 1293, - "source": 354, + "teal": 1295, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1430 + 1136 ] }, { "teal": 1296, - "source": 354, - "errorMessage": "(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1431 + 1137 ] }, { "teal": 1297, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1432, - 1433 + 1138 ] }, { "teal": 1298, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1434 + 1139 ] }, { "teal": 1299, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1435 + 1140, + 1141 ] }, { "teal": 1300, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1436 + 1142 ] }, { "teal": 1301, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1437 + 1143 ] }, { "teal": 1302, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1438, - 1439 + 1144 ] }, { "teal": 1303, - "source": 354, + "source": "contracts/stakingPool.algo.ts:354", "pc": [ - 1440 + 1145, + 1146 ] }, { - "teal": 1304, - "source": 354, + "teal": 1307, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1441 + 1147, + 1148 ] }, { - "teal": 1305, - "source": 354, + "teal": 1308, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1442 + 1149 ] }, { - "teal": 1306, - "source": 354, + "teal": 1309, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1443, - 1444 + 1150 ] }, { "teal": 1310, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1445, - 1446 + 1151, + 1152 ] }, { "teal": 1311, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1447 + 1153 ] }, { "teal": 1312, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1448 + 1154 ] }, { "teal": 1313, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1449, - 1450 + 1155 ] }, { "teal": 1314, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1451 + 1156, + 1157 ] }, { "teal": 1315, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1452 + 1158 ] }, { - "teal": 1316, - "source": 355, + "teal": 1318, + "source": "contracts/stakingPool.algo.ts:355", + "errorMessage": "this.stakeAccumulator.value - subtractAmount overflowed 128 bits", "pc": [ - 1453 + 1159 ] }, { - "teal": 1317, - "source": 355, + "teal": 1319, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1454, - 1455 + 1160, + 1161 ] }, { - "teal": 1318, - "source": 355, + "teal": 1320, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1456 + 1162 ] }, { "teal": 1321, - "source": 355, - "errorMessage": "this.stakeAccumulator.value - subtractAmount overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1457 + 1163 ] }, { "teal": 1322, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1458, - 1459 + 1164 ] }, { "teal": 1323, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1460 + 1165 ] }, { "teal": 1324, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1461 + 1166, + 1167 ] }, { "teal": 1325, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1462 + 1168 ] }, { "teal": 1326, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1463 + 1169 ] }, { "teal": 1327, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1464, - 1465 + 1170 ] }, { "teal": 1328, - "source": 355, + "source": "contracts/stakingPool.algo.ts:355", "pc": [ - 1466 + 1171 ] }, { - "teal": 1329, - "source": 355, + "teal": 1341, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1467 + 1172 ] }, { - "teal": 1330, - "source": 355, + "teal": 1342, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1468 + 1173 ] }, { - "teal": 1331, - "source": 355, + "teal": 1343, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1469 + 1174, + 1175 ] }, { "teal": 1344, - "source": 360, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1470 + 1176, + 1177 ] }, { "teal": 1345, - "source": 360, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1471 + 1178, + 1179 ] }, { - "teal": 1346, - "source": 360, + "teal": 1349, + "source": "contracts/stakingPool.algo.ts:361", "pc": [ - 1472, - 1473 + 1180 ] }, { - "teal": 1347, - "source": 360, + "teal": 1350, + "source": "contracts/stakingPool.algo.ts:361", "pc": [ - 1474, - 1475 + 1181 ] }, { - "teal": 1348, - "source": 360, + "teal": 1351, + "source": "contracts/stakingPool.algo.ts:361", "pc": [ - 1476, - 1477 + 1182, + 1183 ] }, { - "teal": 1352, - "source": 361, + "teal": 1361, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1478 + 1184 ] }, { - "teal": 1353, - "source": 361, + "teal": 1362, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1479 + 1185 ] }, { - "teal": 1354, - "source": 361, + "teal": 1363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1480, - 1481 + 1186 ] }, { "teal": 1364, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1482 + 1187, + 1188 ] }, { "teal": 1365, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1483 + 1189 ] }, { "teal": 1366, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1484 + 1190 ] }, { "teal": 1367, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1485 + 1191 ] }, { "teal": 1368, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1486 + 1192, + 1193, + 1194 ] }, { "teal": 1369, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1487 + 1195 ] }, { "teal": 1370, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1488 + 1196 ] }, { "teal": 1371, - "source": 363, + "source": "contracts/stakingPool.algo.ts:363", "pc": [ - 1489, - 1490, - 1491 + 1197, + 1198 ] }, { "teal": 1372, - "source": 363, + "source": "contracts/stakingPool.algo.ts:364", "pc": [ - 1492 + 1199, + 1200 ] }, { "teal": 1373, - "source": 363, + "source": "contracts/stakingPool.algo.ts:364", "pc": [ - 1493 + 1201, + 1202 ] }, { "teal": 1374, - "source": 363, + "source": "contracts/stakingPool.algo.ts:365", "pc": [ - 1494, - 1495 + 1203, + 1204 ] }, { "teal": 1375, - "source": 364, + "source": "contracts/stakingPool.algo.ts:365", "pc": [ - 1496, - 1497 + 1205 ] }, { "teal": 1376, - "source": 364, + "source": "contracts/stakingPool.algo.ts:365", "pc": [ - 1498, - 1499 + 1206, + 1207 ] }, { "teal": 1377, - "source": 365, + "source": "contracts/stakingPool.algo.ts:366", "pc": [ - 1500, - 1501 + 1208, + 1209 ] }, { "teal": 1378, - "source": 365, + "source": "contracts/stakingPool.algo.ts:366", "pc": [ - 1502 + 1210 ] }, { "teal": 1379, - "source": 365, + "source": "contracts/stakingPool.algo.ts:366", "pc": [ - 1503, - 1504 + 1211, + 1212 ] }, { "teal": 1380, - "source": 366, + "source": "contracts/stakingPool.algo.ts:367", "pc": [ - 1505, - 1506 + 1213, + 1214 ] }, { "teal": 1381, - "source": 366, + "source": "contracts/stakingPool.algo.ts:367", "pc": [ - 1507 + 1215, + 1216 ] }, { "teal": 1382, - "source": 366, + "source": "contracts/stakingPool.algo.ts:367", "pc": [ - 1508, - 1509 + 1217 ] }, { "teal": 1383, - "source": 367, + "source": "contracts/stakingPool.algo.ts:367", "pc": [ - 1510, - 1511 + 1218, + 1219 ] }, { "teal": 1384, - "source": 367, + "source": "contracts/stakingPool.algo.ts:367", "pc": [ - 1512, - 1513 + 1220 ] }, { "teal": 1385, - "source": 367, + "source": "contracts/stakingPool.algo.ts:367", "pc": [ - 1514 + 1221, + 1222 ] }, { - "teal": 1386, - "source": 367, + "teal": 1388, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1515, - 1516 + 1223 ] }, { - "teal": 1387, - "source": 367, + "teal": 1389, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1517 + 1224, + 1225 ] }, { - "teal": 1388, - "source": 367, + "teal": 1392, + "source": "contracts/stakingPool.algo.ts:360", "pc": [ - 1518, - 1519 + 1226 ] }, { - "teal": 1391, - "source": 360, + "teal": 1396, + "source": "contracts/stakingPool.algo.ts:370", "pc": [ - 1520 + 1227 ] }, { - "teal": 1392, - "source": 360, + "teal": 1403, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1521, - 1522 + 1228, + 1229 ] }, { - "teal": 1395, - "source": 360, + "teal": 1404, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1523 + 1230 ] }, { - "teal": 1399, - "source": 370, + "teal": 1405, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1524 + 1231 ] }, { "teal": 1406, - "source": 283, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1525, - 1526 + 1232, + 1233 ] }, { "teal": 1407, - "source": 283, + "source": "contracts/stakingPool.algo.ts:283", "pc": [ - 1527 + 1234, + 1235, + 1236 ] }, { - "teal": 1408, - "source": 283, + "teal": 1411, + "source": "contracts/stakingPool.algo.ts:373", + "errorMessage": "account not found", "pc": [ - 1528 + 1237 ] }, { - "teal": 1409, - "source": 283, + "teal": 1412, + "source": "contracts/stakingPool.algo.ts:271", "pc": [ - 1529, - 1530 + 1238 ] }, { - "teal": 1410, - "source": 283, + "teal": 1417, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1531, - 1532, - 1533 + 1239, + 1240, + 1241 ] }, { - "teal": 1414, - "source": 373, - "errorMessage": "account not found", + "teal": 1418, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1534 + 1242 ] }, { - "teal": 1415, - "source": 271, + "teal": 1419, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1535 + 1243 ] }, { - "teal": 1420, - "source": 381, + "teal": 1427, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1536, - 1537, - 1538 + 1244, + 1245, + 1246 ] }, { - "teal": 1421, - "source": 381, + "teal": 1430, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1539 + 1247 ] }, { - "teal": 1422, - "source": 381, + "teal": 1431, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1540 + 1248, + 1249 ] }, { - "teal": 1430, - "source": 381, + "teal": 1435, + "source": "contracts/stakingPool.algo.ts:385", "pc": [ - 1541, - 1542, - 1543 + 1250, + 1251 ] }, { - "teal": 1433, - "source": 381, + "teal": 1436, + "source": "contracts/stakingPool.algo.ts:385", "pc": [ - 1544, - 1545 + 1252, + 1253 ] }, { - "teal": 1434, - "source": 381, + "teal": 1440, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1546, - 1547 + 1254 ] }, { - "teal": 1438, - "source": 385, + "teal": 1441, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1548, - 1549 + 1255, + 1256 ] }, { - "teal": 1439, - "source": 385, + "teal": 1446, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1550, - 1551 + 1257, + 1258 ] }, { - "teal": 1443, - "source": 387, + "teal": 1447, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1552 + 1259, + 1260 ] }, { - "teal": 1444, - "source": 387, + "teal": 1448, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1553, - 1554 + 1261 ] }, { "teal": 1449, - "source": 387, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1555, - 1556 + 1262, + 1263, + 1264 ] }, { - "teal": 1450, - "source": 387, + "teal": 1454, + "source": "contracts/stakingPool.algo.ts:388", "pc": [ - 1557, - 1558 + 1265, + 1266 ] }, { - "teal": 1451, - "source": 387, + "teal": 1455, + "source": "contracts/stakingPool.algo.ts:388", "pc": [ - 1559 + 1267, + 1268 ] }, { - "teal": 1452, - "source": 387, + "teal": 1456, + "source": "contracts/stakingPool.algo.ts:388", "pc": [ - 1560, - 1561, - 1562 + 1269 ] }, { "teal": 1457, - "source": 388, + "source": "contracts/stakingPool.algo.ts:388", "pc": [ - 1563, - 1564 + 1270, + 1271, + 1272 ] }, { - "teal": 1458, - "source": 388, + "teal": 1462, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1565, - 1566 + 1273 ] }, { - "teal": 1459, - "source": 388, + "teal": 1463, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1567 + 1274 ] }, { - "teal": 1460, - "source": 388, + "teal": 1464, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1568, - 1569, - 1570 + 1275, + 1276 ] }, { "teal": 1465, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1571 + 1277 ] }, { "teal": 1466, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1572 + 1278, + 1279 ] }, { "teal": 1467, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1573, - 1574 + 1280, + 1281 ] }, { "teal": 1468, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1575 + 1282 ] }, { "teal": 1469, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1576, - 1577 + 1283, + 1284 ] }, { "teal": 1470, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1578, - 1579 + 1285, + 1286 ] }, { "teal": 1471, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1580 + 1287, + 1288 ] }, { "teal": 1472, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1581, - 1582 + 1289, + 1290 ] }, { "teal": 1473, - "source": 389, + "source": "contracts/stakingPool.algo.ts:389", "pc": [ - 1583, - 1584 + 1291 ] }, { - "teal": 1474, - "source": 389, + "teal": 1478, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1585, - 1586 + 1292, + 1293 ] }, { - "teal": 1475, - "source": 389, + "teal": 1479, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1587, - 1588 + 1294 ] }, { - "teal": 1476, - "source": 389, + "teal": 1480, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1589 + 1295 ] }, { "teal": 1481, - "source": 391, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1590, - 1591 + 1296 ] }, { "teal": 1482, - "source": 391, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1592 + 1297 ] }, { "teal": 1483, - "source": 391, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1593 + 1298, + 1299 ] }, { "teal": 1484, - "source": 391, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1594 + 1300 ] }, { "teal": 1485, - "source": 391, + "source": "contracts/stakingPool.algo.ts:391", "pc": [ - 1595 + 1301, + 1302 ] }, { - "teal": 1486, - "source": 391, + "teal": 1490, + "source": "contracts/stakingPool.algo.ts:392", "pc": [ - 1596, - 1597 + 1303, + 1304 ] }, { - "teal": 1487, - "source": 391, + "teal": 1491, + "source": "contracts/stakingPool.algo.ts:392", "pc": [ - 1598 + 1305, + 1306, + 1307 ] }, { - "teal": 1488, - "source": 391, + "teal": 1492, + "source": "contracts/stakingPool.algo.ts:392", "pc": [ - 1599, - 1600 + 1308, + 1309 ] }, { "teal": 1493, - "source": 392, + "source": "contracts/stakingPool.algo.ts:392", "pc": [ - 1601, - 1602 + 1310 ] }, { "teal": 1494, - "source": 392, + "source": "contracts/stakingPool.algo.ts:392", "pc": [ - 1603, - 1604, - 1605 + 1311, + 1312, + 1313 ] }, { - "teal": 1495, - "source": 392, + "teal": 1500, + "source": "contracts/stakingPool.algo.ts:393", "pc": [ - 1606, - 1607 + 1314, + 1315 ] }, { - "teal": 1496, - "source": 392, + "teal": 1501, + "source": "contracts/stakingPool.algo.ts:393", "pc": [ - 1608 + 1316, + 1317, + 1318 ] }, { - "teal": 1497, - "source": 392, + "teal": 1502, + "source": "contracts/stakingPool.algo.ts:393", "pc": [ - 1609, - 1610, - 1611 + 1319 ] }, { "teal": 1503, - "source": 393, + "source": "contracts/stakingPool.algo.ts:393", "pc": [ - 1612, - 1613 + 1320 ] }, { "teal": 1504, - "source": 393, + "source": "contracts/stakingPool.algo.ts:393", "pc": [ - 1614, - 1615, - 1616 + 1321 ] }, { "teal": 1505, - "source": 393, + "source": "contracts/stakingPool.algo.ts:393", "pc": [ - 1617 + 1322, + 1323, + 1324 ] }, { - "teal": 1506, - "source": 393, + "teal": 1510, + "source": "contracts/stakingPool.algo.ts:394", "pc": [ - 1618 + 1325 ] }, { - "teal": 1507, - "source": 393, + "teal": 1515, + "source": "contracts/stakingPool.algo.ts:396", "pc": [ - 1619 + 1326 ] }, { - "teal": 1508, - "source": 393, + "teal": 1516, + "source": "contracts/stakingPool.algo.ts:396", "pc": [ - 1620, - 1621, - 1622 + 1327, + 1328 ] }, { - "teal": 1513, - "source": 394, + "teal": 1521, + "source": "contracts/stakingPool.algo.ts:398", "pc": [ - 1623 + 1329, + 1330 ] }, { - "teal": 1518, - "source": 396, + "teal": 1522, + "source": "contracts/stakingPool.algo.ts:398", "pc": [ - 1624 + 1331 ] }, { - "teal": 1519, - "source": 396, + "teal": 1523, + "source": "contracts/stakingPool.algo.ts:398", "pc": [ - 1625, - 1626 + 1332 ] }, { "teal": 1524, - "source": 398, + "source": "contracts/stakingPool.algo.ts:398", "pc": [ - 1627 + 1333 ] }, { "teal": 1525, - "source": 398, + "source": "contracts/stakingPool.algo.ts:398", "pc": [ - 1628 + 1334, + 1335, + 1336 ] }, { - "teal": 1526, - "source": 398, + "teal": 1533, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1629 + 1337 ] }, { - "teal": 1527, - "source": 398, + "teal": 1534, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1630 + 1338 ] }, { - "teal": 1528, - "source": 398, + "teal": 1535, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1631, - 1632, - 1633 + 1339, + 1340 ] }, { "teal": 1536, - "source": 399, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1634 + 1341, + 1342 ] }, { "teal": 1537, - "source": 399, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1635 + 1343, + 1344 ] }, { - "teal": 1538, - "source": 399, + "teal": 1541, + "source": "contracts/stakingPool.algo.ts:400", "pc": [ - 1636, - 1637 + 1345 ] }, { - "teal": 1539, - "source": 399, + "teal": 1542, + "source": "contracts/stakingPool.algo.ts:400", "pc": [ - 1638, - 1639 + 1346 ] }, { - "teal": 1540, - "source": 399, + "teal": 1543, + "source": "contracts/stakingPool.algo.ts:400", "pc": [ - 1640, - 1641 + 1347, + 1348 ] }, { - "teal": 1544, - "source": 400, + "teal": 1547, + "source": "contracts/stakingPool.algo.ts:401", "pc": [ - 1642 + 1349 ] }, { - "teal": 1545, - "source": 400, + "teal": 1548, + "source": "contracts/stakingPool.algo.ts:401", "pc": [ - 1643 + 1350 ] }, { - "teal": 1546, - "source": 400, + "teal": 1549, + "source": "contracts/stakingPool.algo.ts:401", "pc": [ - 1644, - 1645 + 1351 ] }, { "teal": 1550, - "source": 401, + "source": "contracts/stakingPool.algo.ts:401", "pc": [ - 1646 + 1352, + 1353 ] }, { - "teal": 1551, - "source": 401, + "teal": 1553, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1647 + 1354 ] }, { - "teal": 1552, - "source": 401, + "teal": 1554, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1648 + 1355, + 1356 ] }, { - "teal": 1553, - "source": 401, + "teal": 1557, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1649, - 1650 + 1357 ] }, { - "teal": 1556, - "source": 399, + "teal": 1558, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1651 + 1358, + 1359 ] }, { - "teal": 1557, - "source": 399, + "teal": 1559, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1652, - 1653 + 1360 ] }, { "teal": 1560, - "source": 399, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1654 + 1361 ] }, { "teal": 1561, - "source": 399, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1655, - 1656 + 1362, + 1363 ] }, { "teal": 1562, - "source": 399, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1657 + 1364, + 1365, + 1366 ] }, { "teal": 1563, - "source": 399, + "source": "contracts/stakingPool.algo.ts:399", "pc": [ - 1658 + 1367, + 1368 ] }, { - "teal": 1564, - "source": 399, + "teal": 1571, + "source": "contracts/stakingPool.algo.ts:406", "pc": [ - 1659, - 1660 + 1369 ] }, { - "teal": 1565, - "source": 399, + "teal": 1572, + "source": "contracts/stakingPool.algo.ts:406", "pc": [ - 1661, - 1662, - 1663 + 1370, + 1371 ] }, { - "teal": 1566, - "source": 399, + "teal": 1573, + "source": "contracts/stakingPool.algo.ts:406", "pc": [ - 1664, - 1665 + 1372, + 1373 ] }, { - "teal": 1574, - "source": 406, + "teal": 1577, + "source": "contracts/stakingPool.algo.ts:407", "pc": [ - 1666 + 1374, + 1375 ] }, { - "teal": 1575, - "source": 406, + "teal": 1578, + "source": "contracts/stakingPool.algo.ts:407", "pc": [ - 1667, - 1668 + 1376, + 1377, + 1378 ] }, { - "teal": 1576, - "source": 406, + "teal": 1579, + "source": "contracts/stakingPool.algo.ts:407", "pc": [ - 1669, - 1670 + 1379 ] }, { "teal": 1580, - "source": 407, + "source": "contracts/stakingPool.algo.ts:407", "pc": [ - 1671, - 1672 + 1380, + 1381 ] }, { - "teal": 1581, - "source": 407, + "teal": 1584, + "source": "contracts/stakingPool.algo.ts:408", "pc": [ - 1673, - 1674, - 1675 + 1382, + 1383 ] }, { - "teal": 1582, - "source": 407, + "teal": 1585, + "source": "contracts/stakingPool.algo.ts:408", "pc": [ - 1676 + 1384, + 1385 ] }, { - "teal": 1583, - "source": 407, + "teal": 1589, + "source": "contracts/stakingPool.algo.ts:409", "pc": [ - 1677, - 1678 + 1386, + 1387 ] }, { - "teal": 1587, - "source": 408, + "teal": 1590, + "source": "contracts/stakingPool.algo.ts:409", "pc": [ - 1679, - 1680 + 1388, + 1389, + 1390 ] }, { - "teal": 1588, - "source": 408, + "teal": 1591, + "source": "contracts/stakingPool.algo.ts:409", "pc": [ - 1681, - 1682 + 1391 ] }, { "teal": 1592, - "source": 409, + "source": "contracts/stakingPool.algo.ts:409", "pc": [ - 1683, - 1684 + 1392, + 1393 ] }, { - "teal": 1593, - "source": 409, + "teal": 1595, + "source": "contracts/stakingPool.algo.ts:406", "pc": [ - 1685, - 1686, - 1687 + 1394 ] }, { - "teal": 1594, - "source": 409, + "teal": 1596, + "source": "contracts/stakingPool.algo.ts:406", "pc": [ - 1688 + 1395, + 1396 ] }, { - "teal": 1595, - "source": 409, + "teal": 1599, + "source": "contracts/stakingPool.algo.ts:406", "pc": [ - 1689, - 1690 + 1397 ] }, { - "teal": 1598, - "source": 406, + "teal": 1603, + "source": "contracts/stakingPool.algo.ts:411", "pc": [ - 1691 + 1398, + 1399 ] }, { - "teal": 1599, - "source": 406, + "teal": 1604, + "source": "contracts/stakingPool.algo.ts:411", "pc": [ - 1692, - 1693 + 1400, + 1401, + 1402 ] }, { - "teal": 1602, - "source": 406, + "teal": 1605, + "source": "contracts/stakingPool.algo.ts:411", "pc": [ - 1694 + 1403 ] }, { "teal": 1606, - "source": 411, + "source": "contracts/stakingPool.algo.ts:411", "pc": [ - 1695, - 1696 + 1404, + 1405 ] }, { - "teal": 1607, - "source": 411, + "teal": 1610, + "source": "contracts/stakingPool.algo.ts:412", "pc": [ - 1697, - 1698, - 1699 + 1406, + 1407 ] }, { - "teal": 1608, - "source": 411, + "teal": 1611, + "source": "contracts/stakingPool.algo.ts:412", "pc": [ - 1700 + 1408, + 1409 ] }, { - "teal": 1609, - "source": 411, + "teal": 1612, + "source": "contracts/stakingPool.algo.ts:412", "pc": [ - 1701, - 1702 + 1410, + 1411 ] }, { "teal": 1613, - "source": 412, + "source": "contracts/stakingPool.algo.ts:412", "pc": [ - 1703, - 1704 + 1412, + 1413 ] }, { "teal": 1614, - "source": 412, + "source": "contracts/stakingPool.algo.ts:398", "pc": [ - 1705, - 1706 + 1414, + 1415, + 1416 ] }, { - "teal": 1615, - "source": 412, + "teal": 1619, + "source": "contracts/stakingPool.algo.ts:417", "pc": [ - 1707, - 1708 + 1417, + 1418 ] }, { - "teal": 1616, - "source": 412, + "teal": 1620, + "source": "contracts/stakingPool.algo.ts:417", "pc": [ - 1709, - 1710 + 1419, + 1420, + 1421 ] }, { - "teal": 1617, - "source": 398, + "teal": 1621, + "source": "contracts/stakingPool.algo.ts:417", "pc": [ - 1711, - 1712, - 1713 + 1422 ] }, { "teal": 1622, - "source": 417, + "source": "contracts/stakingPool.algo.ts:417", "pc": [ - 1714, - 1715 + 1423, + 1424 ] }, { - "teal": 1623, - "source": 417, + "teal": 1626, + "source": "contracts/stakingPool.algo.ts:418", "pc": [ - 1716, - 1717, - 1718 + 1425, + 1426 ] }, { - "teal": 1624, - "source": 417, + "teal": 1627, + "source": "contracts/stakingPool.algo.ts:418", "pc": [ - 1719 + 1427, + 1428 ] }, { - "teal": 1625, - "source": 417, + "teal": 1628, + "source": "contracts/stakingPool.algo.ts:418", "pc": [ - 1720, - 1721 + 1429, + 1430 ] }, { "teal": 1629, - "source": 418, + "source": "contracts/stakingPool.algo.ts:418", "pc": [ - 1722, - 1723 + 1431, + 1432 ] }, { - "teal": 1630, - "source": 418, + "teal": 1634, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1724, - 1725 + 1433, + 1434 ] }, { - "teal": 1631, - "source": 418, + "teal": 1635, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1726, - 1727 + 1435 ] }, { - "teal": 1632, - "source": 418, + "teal": 1636, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1728, - 1729 + 1436 ] }, { "teal": 1637, - "source": 422, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1730, - 1731 + 1437, + 1438 ] }, { "teal": 1638, - "source": 422, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1732 + 1439 ] }, { "teal": 1639, - "source": 422, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1733 + 1440, + 1441 ] }, { "teal": 1640, - "source": 422, + "source": "contracts/stakingPool.algo.ts:422", "pc": [ - 1734, - 1735 + 1442 ] }, { - "teal": 1641, - "source": 422, + "teal": 1653, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1736 + 1443 ] }, { - "teal": 1642, - "source": 422, + "teal": 1654, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1737, - 1738 + 1444 ] }, { - "teal": 1643, - "source": 422, + "teal": 1655, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1739 + 1445, + 1446 ] }, { "teal": 1656, - "source": 427, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1740 + 1447, + 1448 ] }, { "teal": 1657, - "source": 427, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1741 + 1449, + 1450 ] }, { - "teal": 1658, - "source": 427, + "teal": 1661, + "source": "contracts/stakingPool.algo.ts:428", "pc": [ - 1742, - 1743 + 1451 ] }, { - "teal": 1659, - "source": 427, + "teal": 1662, + "source": "contracts/stakingPool.algo.ts:428", "pc": [ - 1744, - 1745 + 1452 ] }, { - "teal": 1660, - "source": 427, + "teal": 1663, + "source": "contracts/stakingPool.algo.ts:428", "pc": [ - 1746, - 1747 + 1453, + 1454 ] }, { - "teal": 1664, - "source": 428, + "teal": 1673, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1748 + 1455 ] }, { - "teal": 1665, - "source": 428, + "teal": 1674, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1749 + 1456 ] }, { - "teal": 1666, - "source": 428, + "teal": 1675, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1750, - 1751 + 1457 ] }, { "teal": 1676, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1752 + 1458, + 1459 ] }, { "teal": 1677, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1753 + 1460 ] }, { "teal": 1678, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1754 + 1461 ] }, { "teal": 1679, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1755 + 1462 ] }, { "teal": 1680, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1756 + 1463, + 1464, + 1465 ] }, { "teal": 1681, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1757 + 1466 ] }, { "teal": 1682, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1758 + 1467 ] }, { "teal": 1683, - "source": 430, + "source": "contracts/stakingPool.algo.ts:430", "pc": [ - 1759, - 1760, - 1761 + 1468, + 1469 ] }, { "teal": 1684, - "source": 430, + "source": "contracts/stakingPool.algo.ts:431", "pc": [ - 1762 + 1470, + 1471 ] }, { "teal": 1685, - "source": 430, + "source": "contracts/stakingPool.algo.ts:431", "pc": [ - 1763 + 1472, + 1473 ] }, { "teal": 1686, - "source": 430, + "source": "contracts/stakingPool.algo.ts:432", "pc": [ - 1764, - 1765 + 1474, + 1475 ] }, { "teal": 1687, - "source": 431, + "source": "contracts/stakingPool.algo.ts:432", "pc": [ - 1766, - 1767 + 1476, + 1477 ] }, { "teal": 1688, - "source": 431, + "source": "contracts/stakingPool.algo.ts:433", "pc": [ - 1768, - 1769 + 1478, + 1479 ] }, { "teal": 1689, - "source": 432, + "source": "contracts/stakingPool.algo.ts:433", "pc": [ - 1770, - 1771 + 1480 ] }, { "teal": 1690, - "source": 432, + "source": "contracts/stakingPool.algo.ts:433", "pc": [ - 1772, - 1773 + 1481, + 1482 ] }, { "teal": 1691, - "source": 433, + "source": "contracts/stakingPool.algo.ts:434", "pc": [ - 1774, - 1775 + 1483 ] }, { "teal": 1692, - "source": 433, + "source": "contracts/stakingPool.algo.ts:434", "pc": [ - 1776 + 1484, + 1485 ] }, { "teal": 1693, - "source": 433, + "source": "contracts/stakingPool.algo.ts:434", "pc": [ - 1777, - 1778 + 1486 ] }, { "teal": 1694, - "source": 434, + "source": "contracts/stakingPool.algo.ts:434", "pc": [ - 1779 + 1487, + 1488 ] }, { "teal": 1695, - "source": 434, + "source": "contracts/stakingPool.algo.ts:434", "pc": [ - 1780, - 1781 + 1489 ] }, { "teal": 1696, - "source": 434, + "source": "contracts/stakingPool.algo.ts:434", "pc": [ - 1782 + 1490, + 1491 ] }, { - "teal": 1697, - "source": 434, + "teal": 1699, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1783, - 1784 + 1492 ] }, { - "teal": 1698, - "source": 434, + "teal": 1700, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1785 + 1493, + 1494 ] }, { - "teal": 1699, - "source": 434, + "teal": 1703, + "source": "contracts/stakingPool.algo.ts:427", "pc": [ - 1786, - 1787 + 1495 ] }, { - "teal": 1702, - "source": 427, + "teal": 1707, + "source": "contracts/stakingPool.algo.ts:437", "pc": [ - 1788 + 1496 ] }, { - "teal": 1703, - "source": 427, + "teal": 1714, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1789, - 1790 + 1497, + 1498 ] }, { - "teal": 1706, - "source": 427, + "teal": 1715, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1791 + 1499 ] }, { - "teal": 1710, - "source": 437, + "teal": 1716, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1792 + 1500 ] }, { "teal": 1717, - "source": 387, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1793, - 1794 + 1501, + 1502 ] }, { "teal": 1718, - "source": 387, + "source": "contracts/stakingPool.algo.ts:387", "pc": [ - 1795 + 1503, + 1504, + 1505 ] }, { - "teal": 1719, - "source": 387, + "teal": 1722, + "source": "contracts/stakingPool.algo.ts:440", + "errorMessage": "account not found", "pc": [ - 1796 + 1506 ] }, { - "teal": 1720, - "source": 387, + "teal": 1723, + "source": "contracts/stakingPool.algo.ts:381", "pc": [ - 1797, - 1798 + 1507 ] }, { - "teal": 1721, - "source": 387, + "teal": 1728, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1799, - 1800, - 1801 + 1508, + 1509 ] }, { - "teal": 1725, - "source": 440, - "errorMessage": "account not found", + "teal": 1731, + "source": "contracts/stakingPool.algo.ts:451", "pc": [ - 1802 + 1510, + 1511, + 1512 ] }, { - "teal": 1726, - "source": 381, + "teal": 1732, + "source": "contracts/stakingPool.algo.ts:451", "pc": [ - 1803 + 1513 ] }, { - "teal": 1731, - "source": 450, + "teal": 1733, + "source": "contracts/stakingPool.algo.ts:451", "pc": [ - 1804, - 1805 + 1514 ] }, { "teal": 1734, - "source": 451, + "source": "contracts/stakingPool.algo.ts:451", "pc": [ - 1806, - 1807, - 1808 + 1515, + 1516 ] }, { "teal": 1735, - "source": 451, + "source": "contracts/stakingPool.algo.ts:451", "pc": [ - 1809 + 1517 ] }, { - "teal": 1736, - "source": 451, + "teal": 1738, + "source": "contracts/stakingPool.algo.ts:451", + "errorMessage": "argument 0 (staker) for getStakerInfo must be a address", "pc": [ - 1810 + 1518 ] }, { - "teal": 1737, - "source": 451, + "teal": 1741, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1811, - 1812 + 1519, + 1520, + 1521 ] }, { - "teal": 1738, - "source": 451, + "teal": 1742, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1813 + 1522 ] }, { - "teal": 1741, - "source": 451, - "errorMessage": "argument 0 (staker) for getStakerInfo must be a address", + "teal": 1743, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1814 + 1523 ] }, { "teal": 1744, - "source": 450, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1815, - 1816, - 1817 + 1524 ] }, { "teal": 1745, - "source": 450, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1818 + 1525 ] }, { - "teal": 1746, - "source": 450, + "teal": 1755, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1819 + 1526, + 1527, + 1528 ] }, { - "teal": 1747, - "source": 450, + "teal": 1758, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1820 + 1529 ] }, { - "teal": 1748, - "source": 450, + "teal": 1762, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1821 + 1530 ] }, { - "teal": 1758, - "source": 450, + "teal": 1763, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1822, - 1823, - 1824 + 1531, + 1532 ] }, { - "teal": 1761, - "source": 450, + "teal": 1768, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1825, - 1826 + 1533, + 1534 ] }, { - "teal": 1765, - "source": 452, + "teal": 1769, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1827 + 1535, + 1536 ] }, { - "teal": 1766, - "source": 452, + "teal": 1770, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1828, - 1829 + 1537 ] }, { "teal": 1771, - "source": 452, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1830, - 1831 + 1538, + 1539, + 1540 ] }, { - "teal": 1772, - "source": 452, + "teal": 1776, + "source": "contracts/stakingPool.algo.ts:453", "pc": [ - 1832, - 1833 + 1541, + 1542 ] }, { - "teal": 1773, - "source": 452, + "teal": 1777, + "source": "contracts/stakingPool.algo.ts:453", "pc": [ - 1834 + 1543, + 1544 ] }, { - "teal": 1774, - "source": 452, + "teal": 1778, + "source": "contracts/stakingPool.algo.ts:453", "pc": [ - 1835, - 1836, - 1837 + 1545 ] }, { "teal": 1779, - "source": 453, + "source": "contracts/stakingPool.algo.ts:453", "pc": [ - 1838, - 1839 + 1546, + 1547, + 1548 ] }, { - "teal": 1780, - "source": 453, + "teal": 1784, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1840, - 1841 + 1549 ] }, { - "teal": 1781, - "source": 453, + "teal": 1785, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1842 + 1550 ] }, { - "teal": 1782, - "source": 453, + "teal": 1786, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1843, - 1844, - 1845 + 1551, + 1552 ] }, { "teal": 1787, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1846 + 1553 ] }, { "teal": 1788, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1847 + 1554, + 1555 ] }, { "teal": 1789, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1848, - 1849 + 1556, + 1557 ] }, { "teal": 1790, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1850 + 1558 ] }, { "teal": 1791, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1851, - 1852 + 1559, + 1560 ] }, { "teal": 1792, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1853, - 1854 + 1561, + 1562 ] }, { "teal": 1793, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1855 + 1563, + 1564 ] }, { "teal": 1794, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1856, - 1857 + 1565, + 1566 ] }, { "teal": 1795, - "source": 454, + "source": "contracts/stakingPool.algo.ts:454", "pc": [ - 1858, - 1859 + 1567 ] }, { - "teal": 1796, - "source": 454, + "teal": 1801, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1860, - 1861 + 1568, + 1569 ] }, { - "teal": 1797, - "source": 454, + "teal": 1802, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1862, - 1863 + 1570 ] }, { - "teal": 1798, - "source": 454, + "teal": 1803, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1864 + 1571 ] }, { "teal": 1804, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1865, - 1866 + 1572 ] }, { "teal": 1805, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1867 + 1573 ] }, { "teal": 1806, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1868 + 1574, + 1575 ] }, { "teal": 1807, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1869 + 1576 ] }, { "teal": 1808, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1870 + 1577, + 1578 ] }, { "teal": 1809, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1871, - 1872 + 1579 ] }, { "teal": 1810, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1873 + 1580, + 1581 ] }, { "teal": 1811, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1874, - 1875 + 1582 ] }, { "teal": 1812, - "source": 456, + "source": "contracts/stakingPool.algo.ts:456", "pc": [ - 1876 + 1583, + 1584, + 1585 ] }, { - "teal": 1813, - "source": 456, + "teal": 1817, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1877, - 1878 + 1586, + 1587 ] }, { - "teal": 1814, - "source": 456, + "teal": 1818, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1879 + 1588 ] }, { - "teal": 1815, - "source": 456, + "teal": 1819, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1880, - 1881, - 1882 + 1589 ] }, { "teal": 1820, - "source": 457, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1883, - 1884 + 1590 ] }, { "teal": 1821, - "source": 457, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1885 + 1591 ] }, { "teal": 1822, - "source": 457, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1886 + 1592, + 1593 ] }, { "teal": 1823, - "source": 457, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1887 + 1594 ] }, { "teal": 1824, - "source": 457, + "source": "contracts/stakingPool.algo.ts:457", "pc": [ - 1888 + 1595, + 1596, + 1597 ] }, { - "teal": 1825, - "source": 457, + "teal": 1831, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1889, - 1890 + 1598, + 1599 ] }, { - "teal": 1826, - "source": 457, + "teal": 1832, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1891 + 1600 ] }, { - "teal": 1827, - "source": 457, + "teal": 1833, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1892, - 1893, - 1894 + 1601 ] }, { "teal": 1834, - "source": 452, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1895, - 1896 + 1602, + 1603 ] }, { "teal": 1835, - "source": 452, + "source": "contracts/stakingPool.algo.ts:452", "pc": [ - 1897 + 1604, + 1605, + 1606 ] }, { - "teal": 1836, - "source": 452, + "teal": 1839, + "source": "contracts/stakingPool.algo.ts:460", + "errorMessage": "account not found", "pc": [ - 1898 + 1607 ] }, { - "teal": 1837, - "source": 452, + "teal": 1843, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1899, - 1900 + 1608, + 1609 ] }, { - "teal": 1838, - "source": 452, + "teal": 1844, + "source": "contracts/stakingPool.algo.ts:450", "pc": [ - 1901, - 1902, - 1903 + 1610 ] }, { - "teal": 1842, - "source": 460, - "errorMessage": "account not found", + "teal": 1849, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1904 + 1611, + 1612, + 1613 ] }, { - "teal": 1846, - "source": 450, + "teal": 1850, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1905, - 1906 + 1614 ] }, { - "teal": 1847, - "source": 450, + "teal": 1853, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1907 + 1615, + 1616, + 1617 ] }, { - "teal": 1852, - "source": 473, + "teal": 1854, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1908, - 1909, - 1910 + 1618 ] }, { - "teal": 1853, - "source": 473, + "teal": 1857, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1911 + 1619, + 1620, + 1621 ] }, { - "teal": 1856, - "source": 473, + "teal": 1858, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1912, - 1913, - 1914 + 1622 ] }, { - "teal": 1857, - "source": 473, + "teal": 1859, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1915 + 1623 ] }, { "teal": 1860, - "source": 473, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1916, - 1917, - 1918 + 1624, + 1625 ] }, { "teal": 1861, - "source": 473, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1919 + 1626 ] }, { - "teal": 1862, - "source": 473, + "teal": 1864, + "source": "contracts/stakingPool.algo.ts:473", + "errorMessage": "argument 2 (staker) for payTokenReward must be a address", "pc": [ - 1920 + 1627 ] }, { - "teal": 1863, - "source": 473, + "teal": 1867, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1921, - 1922 + 1628, + 1629, + 1630 ] }, { - "teal": 1864, - "source": 473, + "teal": 1868, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1923 + 1631 ] }, { - "teal": 1867, - "source": 473, - "errorMessage": "argument 2 (staker) for payTokenReward must be a address", + "teal": 1869, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1924 + 1632 ] }, { - "teal": 1870, - "source": 473, + "teal": 1882, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1925, - 1926, - 1927 + 1633, + 1634, + 1635 ] }, { - "teal": 1871, - "source": 473, + "teal": 1889, + "source": "contracts/stakingPool.algo.ts:476", "pc": [ - 1928 + 1636, + 1637 ] }, { - "teal": 1872, - "source": 473, + "teal": 1890, + "source": "contracts/stakingPool.algo.ts:476", "pc": [ - 1929 + 1638 ] }, { - "teal": 1885, - "source": 473, + "teal": 1891, + "source": "contracts/stakingPool.algo.ts:476", "pc": [ - 1930, - 1931, - 1932 + 1639 ] }, { "teal": 1892, - "source": 476, + "source": "contracts/stakingPool.algo.ts:476", "pc": [ - 1933, - 1934 + 1640, + 1641 ] }, { "teal": 1893, - "source": 476, + "source": "contracts/stakingPool.algo.ts:476", "pc": [ - 1935 + 1642 ] }, { "teal": 1894, - "source": 476, + "source": "contracts/stakingPool.algo.ts:476", "pc": [ - 1936 + 1643 ] }, { - "teal": 1895, - "source": 476, + "teal": 1897, + "source": "contracts/stakingPool.algo.ts:475", + "errorMessage": "this can only be called via the validator contract", "pc": [ - 1937, - 1938 + 1644 ] }, { - "teal": 1896, - "source": 476, + "teal": 1901, + "source": "contracts/stakingPool.algo.ts:479", "pc": [ - 1939 + 1645, + 1646 ] }, { - "teal": 1897, - "source": 476, + "teal": 1902, + "source": "contracts/stakingPool.algo.ts:479", "pc": [ - 1940 + 1647 ] }, { - "teal": 1900, - "source": 475, - "errorMessage": "this can only be called via the validator contract", + "teal": 1903, + "source": "contracts/stakingPool.algo.ts:479", "pc": [ - 1941 + 1648 ] }, { "teal": 1904, - "source": 479, + "source": "contracts/stakingPool.algo.ts:479", "pc": [ - 1942 + 1649 ] }, { - "teal": 1905, - "source": 479, + "teal": 1907, + "source": "contracts/stakingPool.algo.ts:479", + "errorMessage": "must be pool 1 in order to be called to pay out token rewards", "pc": [ - 1943 + 1650 ] }, { - "teal": 1906, - "source": 479, + "teal": 1911, + "source": "contracts/stakingPool.algo.ts:480", "pc": [ - 1944 + 1651, + 1652 ] }, { - "teal": 1907, - "source": 479, + "teal": 1912, + "source": "contracts/stakingPool.algo.ts:480", "pc": [ - 1945 + 1653 ] }, { - "teal": 1910, - "source": 479, - "errorMessage": "must be pool 1 in order to be called to pay out token rewards", + "teal": 1913, + "source": "contracts/stakingPool.algo.ts:480", "pc": [ - 1946 + 1654 ] }, { - "teal": 1914, - "source": 480, + "teal": 1916, + "source": "contracts/stakingPool.algo.ts:480", + "errorMessage": "can only claim token rewards from validator that has them", "pc": [ - 1947, - 1948 + 1655 ] }, { - "teal": 1915, - "source": 480, + "teal": 1924, + "source": "contracts/stakingPool.algo.ts:483", "pc": [ - 1949 + 1656 ] }, { - "teal": 1916, - "source": 480, + "teal": 1925, + "source": "contracts/stakingPool.algo.ts:483", "pc": [ - 1950 + 1657, + 1658 ] }, { - "teal": 1919, - "source": 480, - "errorMessage": "can only claim token rewards from validator that has them", + "teal": 1926, + "source": "contracts/stakingPool.algo.ts:483", "pc": [ - 1951 + 1659, + 1660 ] }, { - "teal": 1927, - "source": 483, + "teal": 1930, + "source": "contracts/stakingPool.algo.ts:484", "pc": [ - 1952 + 1661, + 1662 ] }, { - "teal": 1928, - "source": 483, + "teal": 1931, + "source": "contracts/stakingPool.algo.ts:484", "pc": [ - 1953, - 1954 + 1663, + 1664 ] }, { - "teal": 1929, - "source": 483, + "teal": 1935, + "source": "contracts/stakingPool.algo.ts:485", "pc": [ - 1955, - 1956 + 1665, + 1666 ] }, { - "teal": 1933, - "source": 484, + "teal": 1936, + "source": "contracts/stakingPool.algo.ts:485", "pc": [ - 1957, - 1958 + 1667, + 1668 ] }, { - "teal": 1934, - "source": 484, + "teal": 1940, + "source": "contracts/stakingPool.algo.ts:486", "pc": [ - 1959, - 1960 + 1669, + 1670 ] }, { - "teal": 1938, - "source": 485, + "teal": 1941, + "source": "contracts/stakingPool.algo.ts:486", "pc": [ - 1961, - 1962 + 1671, + 1672 ] }, { - "teal": 1939, - "source": 485, + "teal": 1944, + "source": "contracts/stakingPool.algo.ts:483", "pc": [ - 1963, - 1964 + 1673 ] }, { - "teal": 1943, - "source": 486, + "teal": 1945, + "source": "contracts/stakingPool.algo.ts:483", "pc": [ - 1965, - 1966 + 1674, + 1675 ] }, { - "teal": 1944, - "source": 486, + "teal": 1948, + "source": "contracts/stakingPool.algo.ts:483", "pc": [ - 1967, - 1968 + 1676 ] }, { - "teal": 1947, - "source": 483, + "teal": 1949, + "source": "contracts/stakingPool.algo.ts:473", "pc": [ - 1969 + 1677 ] }, { - "teal": 1948, - "source": 483, + "teal": 1954, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1970, - 1971 + 1678, + 1679, + 1680 ] }, { - "teal": 1951, - "source": 483, + "teal": 1955, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1972 + 1681, + 1682, + 1683 ] }, { - "teal": 1952, - "source": 473, + "teal": 1958, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1973 + 1684, + 1685, + 1686 ] }, { - "teal": 1957, - "source": 499, + "teal": 1959, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1974, - 1975, - 1976 + 1687 ] }, { - "teal": 1958, - "source": 499, + "teal": 1960, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1977, - 1978, - 1979 + 1688 ] }, { - "teal": 1961, - "source": 499, + "teal": 1972, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1980, - 1981, - 1982 + 1689, + 1690, + 1691 ] }, { - "teal": 1962, - "source": 499, + "teal": 1976, + "source": "contracts/stakingPool.algo.ts:500", "pc": [ - 1983 + 1692, + 1693, + 1694 ] }, { - "teal": 1963, - "source": 499, + "teal": 1979, + "source": "contracts/stakingPool.algo.ts:500", + "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 1984 + 1695 ] }, { - "teal": 1975, - "source": 499, + "teal": 1983, + "source": "contracts/stakingPool.algo.ts:501", "pc": [ - 1985, - 1986, - 1987 + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705 ] }, { - "teal": 1979, - "source": 500, + "teal": 1984, + "source": "contracts/stakingPool.algo.ts:501", "pc": [ - 1988, - 1989, - 1990 + 1706, + 1707 ] }, { - "teal": 1982, - "source": 500, - "errorMessage": "can only be called by owner or manager of validator", + "teal": 1985, + "source": "contracts/stakingPool.algo.ts:501", "pc": [ - 1991 + 1708 ] }, { "teal": 1986, - "source": 501, + "source": "contracts/stakingPool.algo.ts:499", "pc": [ - 1992, - 1993, - 1994, - 1995, - 1996, - 1997, - 1998, - 1999, - 2000, - 2001 + 1709 ] }, { - "teal": 1987, - "source": 501, + "teal": 1991, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 2002, - 2003 + 1710, + 1711, + 1712 ] }, { - "teal": 1988, - "source": 501, + "teal": 1992, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 2004 + 1713 ] }, { - "teal": 1989, - "source": 499, + "teal": 1993, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 2005 + 1714 ] }, { - "teal": 1994, - "source": 512, + "teal": 2004, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 2006, - 2007, - 2008 + 1715, + 1716, + 1717 ] }, { - "teal": 1995, - "source": 512, + "teal": 2007, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 2009 + 1718 ] }, { - "teal": 1996, - "source": 512, + "teal": 2008, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 2010 + 1719, + 1720 ] }, { - "teal": 2007, - "source": 512, + "teal": 2015, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2011, - 2012, - 2013 + 1721 ] }, { - "teal": 2010, - "source": 512, + "teal": 2016, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2014, - 2015 + 1722 ] }, { - "teal": 2011, - "source": 512, + "teal": 2017, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2016, - 2017 + 1723, + 1724 ] }, { "teal": 2018, - "source": 514, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2018 + 1725, + 1726 ] }, { "teal": 2019, - "source": 514, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2019 + 1727, + 1728 ] }, { - "teal": 2020, - "source": 514, + "teal": 2023, + "source": "contracts/stakingPool.algo.ts:515", "pc": [ - 2020, - 2021 + 1729 ] }, { - "teal": 2021, - "source": 514, + "teal": 2024, + "source": "contracts/stakingPool.algo.ts:515", "pc": [ - 2022, - 2023 + 1730 ] }, { - "teal": 2022, - "source": 514, + "teal": 2025, + "source": "contracts/stakingPool.algo.ts:515", "pc": [ - 2024, - 2025 + 1731, + 1732 ] }, { - "teal": 2026, - "source": 515, + "teal": 2029, + "source": "contracts/stakingPool.algo.ts:516", "pc": [ - 2026 + 1733 ] }, { - "teal": 2027, - "source": 515, + "teal": 2030, + "source": "contracts/stakingPool.algo.ts:516", "pc": [ - 2027 + 1734 ] }, { - "teal": 2028, - "source": 515, + "teal": 2031, + "source": "contracts/stakingPool.algo.ts:516", "pc": [ - 2028, - 2029 + 1735 ] }, { "teal": 2032, - "source": 516, + "source": "contracts/stakingPool.algo.ts:516", "pc": [ - 2030 + 1736, + 1737 ] }, { - "teal": 2033, - "source": 516, + "teal": 2035, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2031 + 1738 ] }, { - "teal": 2034, - "source": 516, + "teal": 2036, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2032 + 1739, + 1740 ] }, { - "teal": 2035, - "source": 516, + "teal": 2039, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2033, - 2034 + 1741 ] }, { - "teal": 2038, - "source": 514, + "teal": 2040, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2035 + 1742, + 1743 ] }, { - "teal": 2039, - "source": 514, + "teal": 2041, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2036, - 2037 + 1744 ] }, { "teal": 2042, - "source": 514, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2038 + 1745 ] }, { "teal": 2043, - "source": 514, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2039, - 2040 + 1746, + 1747 ] }, { "teal": 2044, - "source": 514, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2041 + 1748, + 1749, + 1750 ] }, { "teal": 2045, - "source": 514, + "source": "contracts/stakingPool.algo.ts:514", "pc": [ - 2042 + 1751, + 1752 ] }, { - "teal": 2046, - "source": 514, + "teal": 2049, + "source": "contracts/stakingPool.algo.ts:523", "pc": [ - 2043, - 2044 + 1753, + 1754 ] }, { - "teal": 2047, - "source": 514, + "teal": 2050, + "source": "contracts/stakingPool.algo.ts:523", "pc": [ - 2045, - 2046, - 2047 + 1755, + 1756, + 1757 ] }, { - "teal": 2048, - "source": 514, + "teal": 2051, + "source": "contracts/stakingPool.algo.ts:523", "pc": [ - 2048, - 2049 + 1758 ] }, { "teal": 2052, - "source": 523, + "source": "contracts/stakingPool.algo.ts:523", "pc": [ - 2050, - 2051 + 1759, + 1760 ] }, { - "teal": 2053, - "source": 523, + "teal": 2056, + "source": "contracts/stakingPool.algo.ts:524", "pc": [ - 2052, - 2053, - 2054 + 1761, + 1762 ] }, { - "teal": 2054, - "source": 523, + "teal": 2057, + "source": "contracts/stakingPool.algo.ts:524", "pc": [ - 2055 + 1763, + 1764 ] }, { - "teal": 2055, - "source": 523, + "teal": 2061, + "source": "contracts/stakingPool.algo.ts:525", "pc": [ - 2056, - 2057 + 1765, + 1766 ] }, { - "teal": 2059, - "source": 524, + "teal": 2062, + "source": "contracts/stakingPool.algo.ts:525", "pc": [ - 2058, - 2059 + 1767, + 1768 ] }, { - "teal": 2060, - "source": 524, + "teal": 2063, + "source": "contracts/stakingPool.algo.ts:525", "pc": [ - 2060, - 2061 + 1769, + 1770 ] }, { "teal": 2064, - "source": 525, + "source": "contracts/stakingPool.algo.ts:525", "pc": [ - 2062, - 2063 + 1771 ] }, { "teal": 2065, - "source": 525, + "source": "contracts/stakingPool.algo.ts:525", "pc": [ - 2064, - 2065 + 1772 ] }, { "teal": 2066, - "source": 525, + "source": "contracts/stakingPool.algo.ts:525", "pc": [ - 2066, - 2067 + 1773, + 1774 ] }, { - "teal": 2067, - "source": 525, + "teal": 2070, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2068 + 1775, + 1776 ] }, { - "teal": 2068, - "source": 525, + "teal": 2071, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2069 + 1777 ] }, { - "teal": 2069, - "source": 525, + "teal": 2072, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2070, - 2071 + 1778, + 1779 ] }, { "teal": 2073, - "source": 528, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2072, - 2073 + 1780 ] }, { "teal": 2074, - "source": 528, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2074 + 1781, + 1782 ] }, { "teal": 2075, - "source": 528, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2075, - 2076 + 1783 ] }, { "teal": 2076, - "source": 528, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2077 + 1784 ] }, { "teal": 2077, - "source": 528, + "source": "contracts/stakingPool.algo.ts:528", "pc": [ - 2078, - 2079 + 1785, + 1786 ] }, { - "teal": 2078, - "source": 528, + "teal": 2081, + "source": "contracts/stakingPool.algo.ts:530", "pc": [ - 2080 + 1787, + 1788 ] }, { - "teal": 2079, - "source": 528, + "teal": 2082, + "source": "contracts/stakingPool.algo.ts:530", "pc": [ - 2081 + 1789, + 1790 ] }, { - "teal": 2080, - "source": 528, + "teal": 2083, + "source": "contracts/stakingPool.algo.ts:530", "pc": [ - 2082, - 2083 + 1791 ] }, { - "teal": 2084, - "source": 530, + "teal": 2086, + "source": "contracts/stakingPool.algo.ts:530", + "errorMessage": "can't call epochBalanceUpdate in same epoch as prior call", "pc": [ - 2084, - 2085 + 1792 ] }, { - "teal": 2085, - "source": 530, + "teal": 2090, + "source": "contracts/stakingPool.algo.ts:532", "pc": [ - 2086, - 2087 + 1793, + 1794, + 1795 ] }, { - "teal": 2086, - "source": 530, + "teal": 2094, + "source": "contracts/stakingPool.algo.ts:535", "pc": [ - 2088 + 1796, + 1797 ] }, { - "teal": 2089, - "source": 530, - "errorMessage": "can't call epochBalanceUpdate in same epoch as prior call", + "teal": 2095, + "source": "contracts/stakingPool.algo.ts:535", "pc": [ - 2089 + 1798, + 1799 ] }, { - "teal": 2093, - "source": 532, + "teal": 2096, + "source": "contracts/stakingPool.algo.ts:535", "pc": [ - 2090, - 2091, - 2092 + 1800 ] }, { - "teal": 2097, - "source": 535, + "teal": 2100, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2093, - 2094 + 1801, + 1802 ] }, { - "teal": 2098, - "source": 535, + "teal": 2101, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2095, - 2096 + 1803 ] }, { - "teal": 2099, - "source": 535, + "teal": 2102, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2097 + 1804 ] }, { "teal": 2103, - "source": 536, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2098, - 2099 + 1805 ] }, { "teal": 2104, - "source": 536, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2100 + 1806, + 1807 ] }, { "teal": 2105, - "source": 536, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2101 + 1808 ] }, { "teal": 2106, - "source": 536, + "source": "contracts/stakingPool.algo.ts:536", "pc": [ - 2102 + 1809 ] }, { - "teal": 2107, - "source": 536, + "teal": 2110, + "source": "contracts/stakingPool.algo.ts:541", "pc": [ - 2103, - 2104 + 1810, + 1811 ] }, { - "teal": 2108, - "source": 536, + "teal": 2111, + "source": "contracts/stakingPool.algo.ts:541", "pc": [ - 2105 + 1812, + 1813, + 1814 ] }, { - "teal": 2109, - "source": 536, + "teal": 2112, + "source": "contracts/stakingPool.algo.ts:541", "pc": [ - 2106 + 1815 ] }, { "teal": 2113, - "source": 541, + "source": "contracts/stakingPool.algo.ts:541", "pc": [ - 2107, - 2108 + 1816 ] }, { "teal": 2114, - "source": 541, + "source": "contracts/stakingPool.algo.ts:541", "pc": [ - 2109, - 2110, - 2111 + 1817 ] }, { "teal": 2115, - "source": 541, + "source": "contracts/stakingPool.algo.ts:541", "pc": [ - 2112 + 1818, + 1819 ] }, { - "teal": 2116, - "source": 541, + "teal": 2119, + "source": "contracts/stakingPool.algo.ts:542", "pc": [ - 2113 + 1820, + 1821, + 1822 ] }, { - "teal": 2117, - "source": 541, + "teal": 2120, + "source": "contracts/stakingPool.algo.ts:542", "pc": [ - 2114 + 1823, + 1824 ] }, { - "teal": 2118, - "source": 541, + "teal": 2124, + "source": "contracts/stakingPool.algo.ts:543", "pc": [ - 2115, - 2116 + 1825, + 1826 ] }, { - "teal": 2122, - "source": 542, + "teal": 2125, + "source": "contracts/stakingPool.algo.ts:543", "pc": [ - 2117, - 2118, - 2119 + 1827, + 1828 ] }, { - "teal": 2123, - "source": 542, + "teal": 2130, + "source": "contracts/stakingPool.algo.ts:548", "pc": [ - 2120, - 2121 + 1829, + 1830 ] }, { - "teal": 2127, - "source": 543, + "teal": 2131, + "source": "contracts/stakingPool.algo.ts:548", "pc": [ - 2122, - 2123 + 1831, + 1832, + 1833 ] }, { - "teal": 2128, - "source": 543, + "teal": 2137, + "source": "contracts/stakingPool.algo.ts:549", "pc": [ - 2124, - 2125 + 1834, + 1835 ] }, { - "teal": 2133, - "source": 548, + "teal": 2138, + "source": "contracts/stakingPool.algo.ts:549", "pc": [ - 2126, - 2127 + 1836 ] }, { - "teal": 2134, - "source": 548, + "teal": 2139, + "source": "contracts/stakingPool.algo.ts:549", "pc": [ - 2128, - 2129, - 2130 + 1837 ] }, { "teal": 2140, - "source": 549, + "source": "contracts/stakingPool.algo.ts:549", "pc": [ - 2131 + 1838 ] }, { "teal": 2141, - "source": 549, + "source": "contracts/stakingPool.algo.ts:549", "pc": [ - 2132 + 1839, + 1840, + 1841 ] }, { - "teal": 2142, - "source": 549, + "teal": 2149, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2133 + 1842 ] }, { - "teal": 2143, - "source": 549, + "teal": 2150, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2134 + 1843 ] }, { - "teal": 2144, - "source": 549, + "teal": 2151, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2135, - 2136, - 2137 + 1844, + 1845 ] }, { "teal": 2152, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2138 + 1846, + 1847 ] }, { "teal": 2153, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2139 + 1848, + 1849 ] }, { - "teal": 2154, - "source": 551, + "teal": 2157, + "source": "contracts/stakingPool.algo.ts:552", "pc": [ - 2140, - 2141 + 1850 ] }, { - "teal": 2155, - "source": 551, + "teal": 2158, + "source": "contracts/stakingPool.algo.ts:552", "pc": [ - 2142, - 2143 + 1851 ] }, { - "teal": 2156, - "source": 551, + "teal": 2159, + "source": "contracts/stakingPool.algo.ts:552", "pc": [ - 2144, - 2145 + 1852, + 1853 ] }, { - "teal": 2160, - "source": 552, + "teal": 2163, + "source": "contracts/stakingPool.algo.ts:553", "pc": [ - 2146 + 1854 ] }, { - "teal": 2161, - "source": 552, + "teal": 2164, + "source": "contracts/stakingPool.algo.ts:553", "pc": [ - 2147 + 1855 ] }, { - "teal": 2162, - "source": 552, + "teal": 2165, + "source": "contracts/stakingPool.algo.ts:553", "pc": [ - 2148, - 2149 + 1856 ] }, { "teal": 2166, - "source": 553, + "source": "contracts/stakingPool.algo.ts:553", "pc": [ - 2150 + 1857, + 1858 ] }, { "teal": 2167, - "source": 553, + "source": "contracts/stakingPool.algo.ts:553", "pc": [ - 2151 + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868 ] }, { "teal": 2168, - "source": 553, + "source": "contracts/stakingPool.algo.ts:553", "pc": [ - 2152 + 1869, + 1870 ] }, { - "teal": 2169, - "source": 553, + "teal": 2171, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2153, - 2154 + 1871 ] }, { - "teal": 2170, - "source": 553, + "teal": 2172, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2155, - 2156, - 2157, - 2158, - 2159, - 2160, - 2161, - 2162, - 2163, - 2164 + 1872, + 1873 ] }, { - "teal": 2171, - "source": 553, + "teal": 2175, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2165, - 2166 + 1874 ] }, { - "teal": 2174, - "source": 551, + "teal": 2176, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2167 + 1875, + 1876 ] }, { - "teal": 2175, - "source": 551, + "teal": 2177, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2168, - 2169 + 1877 ] }, { "teal": 2178, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2170 + 1878 ] }, { "teal": 2179, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2171, - 2172 + 1879, + 1880 ] }, { "teal": 2180, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2173 + 1881, + 1882, + 1883 ] }, { "teal": 2181, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2174 + 1884 ] }, { "teal": 2182, - "source": 551, + "source": "contracts/stakingPool.algo.ts:551", "pc": [ - 2175, - 2176 + 1885, + 1886 ] }, { - "teal": 2183, - "source": 551, + "teal": 2186, + "source": "contracts/stakingPool.algo.ts:555", "pc": [ - 2177, - 2178, - 2179 + 1887, + 1888 ] }, { - "teal": 2184, - "source": 551, + "teal": 2187, + "source": "contracts/stakingPool.algo.ts:555", "pc": [ - 2180 + 1889, + 1890 ] }, { - "teal": 2185, - "source": 551, + "teal": 2188, + "source": "contracts/stakingPool.algo.ts:555", "pc": [ - 2181, - 2182 + 1891 ] }, { "teal": 2189, - "source": 555, + "source": "contracts/stakingPool.algo.ts:555", "pc": [ - 2183, - 2184 + 1892, + 1893 ] }, { - "teal": 2190, - "source": 555, + "teal": 2195, + "source": "contracts/stakingPool.algo.ts:560", "pc": [ - 2185, - 2186 + 1894, + 1895 ] }, { - "teal": 2191, - "source": 555, + "teal": 2196, + "source": "contracts/stakingPool.algo.ts:560", "pc": [ - 2187 + 1896 ] }, { - "teal": 2192, - "source": 555, + "teal": 2197, + "source": "contracts/stakingPool.algo.ts:560", "pc": [ - 2188, - 2189 + 1897 ] }, { "teal": 2198, - "source": 560, + "source": "contracts/stakingPool.algo.ts:560", "pc": [ - 2190 + 1898 ] }, { "teal": 2199, - "source": 560, + "source": "contracts/stakingPool.algo.ts:560", "pc": [ - 2191 + 1899, + 1900, + 1901 ] }, { - "teal": 2200, - "source": 560, + "teal": 2207, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2192 + 1902 ] }, { - "teal": 2201, - "source": 560, + "teal": 2208, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2193 + 1903 ] }, { - "teal": 2202, - "source": 560, + "teal": 2209, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2194, - 2195, - 2196 + 1904, + 1905 ] }, { "teal": 2210, - "source": 561, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2197 + 1906, + 1907 ] }, { "teal": 2211, - "source": 561, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2198 + 1908, + 1909 ] }, { - "teal": 2212, - "source": 561, + "teal": 2215, + "source": "contracts/stakingPool.algo.ts:562", "pc": [ - 2199, - 2200 + 1910 ] }, { - "teal": 2213, - "source": 561, + "teal": 2216, + "source": "contracts/stakingPool.algo.ts:562", "pc": [ - 2201, - 2202 + 1911 ] }, { - "teal": 2214, - "source": 561, + "teal": 2217, + "source": "contracts/stakingPool.algo.ts:562", "pc": [ - 2203, - 2204 + 1912, + 1913 ] }, { - "teal": 2218, - "source": 562, + "teal": 2221, + "source": "contracts/stakingPool.algo.ts:563", "pc": [ - 2205 + 1914 ] }, { - "teal": 2219, - "source": 562, + "teal": 2222, + "source": "contracts/stakingPool.algo.ts:563", "pc": [ - 2206 + 1915 ] }, { - "teal": 2220, - "source": 562, + "teal": 2223, + "source": "contracts/stakingPool.algo.ts:563", "pc": [ - 2207, - 2208 + 1916 ] }, { "teal": 2224, - "source": 563, + "source": "contracts/stakingPool.algo.ts:563", "pc": [ - 2209 + 1917, + 1918 ] }, { - "teal": 2225, - "source": 563, + "teal": 2227, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2210 + 1919 ] }, { - "teal": 2226, - "source": 563, + "teal": 2228, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2211 + 1920, + 1921 ] }, { - "teal": 2227, - "source": 563, + "teal": 2231, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2212, - 2213 + 1922 ] }, { - "teal": 2230, - "source": 561, + "teal": 2232, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2214 + 1923, + 1924 ] }, { - "teal": 2231, - "source": 561, + "teal": 2233, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2215, - 2216 + 1925 ] }, { "teal": 2234, - "source": 561, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2217 + 1926 ] }, { "teal": 2235, - "source": 561, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2218, - 2219 + 1927, + 1928 ] }, { "teal": 2236, - "source": 561, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2220 + 1929, + 1930, + 1931 ] }, { "teal": 2237, - "source": 561, + "source": "contracts/stakingPool.algo.ts:561", "pc": [ - 2221 + 1932, + 1933 ] }, { "teal": 2238, - "source": 561, + "source": "contracts/stakingPool.algo.ts:560", "pc": [ - 2222, - 2223 + 1934, + 1935, + 1936 ] }, { - "teal": 2239, - "source": 561, + "teal": 2246, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2224, - 2225, - 2226 + 1937 ] }, { - "teal": 2240, - "source": 561, + "teal": 2247, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2227, - 2228 + 1938 ] }, { - "teal": 2241, - "source": 560, + "teal": 2248, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2229, - 2230, - 2231 + 1939, + 1940 ] }, { "teal": 2249, - "source": 567, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2232 + 1941, + 1942 ] }, { "teal": 2250, - "source": 567, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2233 + 1943, + 1944 ] }, { - "teal": 2251, - "source": 567, + "teal": 2254, + "source": "contracts/stakingPool.algo.ts:568", "pc": [ - 2234, - 2235 + 1945, + 1946 ] }, { - "teal": 2252, - "source": 567, + "teal": 2255, + "source": "contracts/stakingPool.algo.ts:568", "pc": [ - 2236, - 2237 + 1947, + 1948 ] }, { - "teal": 2253, - "source": 567, + "teal": 2259, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2238, - 2239 + 1949 ] }, { - "teal": 2257, - "source": 568, + "teal": 2260, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2240, - 2241 + 1950 ] }, { - "teal": 2258, - "source": 568, + "teal": 2261, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2242, - 2243 + 1951 ] }, { "teal": 2262, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2244 + 1952, + 1953 ] }, { "teal": 2263, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2245 + 1954 ] }, { "teal": 2264, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2246 + 1955 ] }, { "teal": 2265, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2247 + 1956 ] }, { "teal": 2266, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2248 + 1957, + 1958, + 1959 ] }, { "teal": 2267, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2249 + 1960 ] }, { "teal": 2268, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2250 + 1961 ] }, { "teal": 2269, - "source": 569, + "source": "contracts/stakingPool.algo.ts:569", "pc": [ - 2251, - 2252, - 2253 + 1962, + 1963 ] }, { - "teal": 2270, - "source": 569, + "teal": 2272, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2254 + 1964 ] }, { - "teal": 2271, - "source": 569, + "teal": 2273, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2255 + 1965, + 1966 ] }, { - "teal": 2272, - "source": 569, + "teal": 2276, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2256, - 2257 + 1967 ] }, { - "teal": 2275, - "source": 567, + "teal": 2277, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2258 + 1968, + 1969 ] }, { - "teal": 2276, - "source": 567, + "teal": 2278, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2259, - 2260 + 1970 ] }, { "teal": 2279, - "source": 567, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2261 + 1971 ] }, { "teal": 2280, - "source": 567, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2262, - 2263 + 1972, + 1973 ] }, { "teal": 2281, - "source": 567, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2264 + 1974, + 1975, + 1976 ] }, { "teal": 2282, - "source": 567, + "source": "contracts/stakingPool.algo.ts:567", "pc": [ - 2265 + 1977, + 1978 ] }, { - "teal": 2283, - "source": 567, + "teal": 2292, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2266, - 2267 + 1979 ] }, { - "teal": 2284, - "source": 567, + "teal": 2293, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2268, - 2269, - 2270 + 1980 ] }, { - "teal": 2285, - "source": 567, + "teal": 2294, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2271, - 2272 + 1981, + 1982 ] }, { "teal": 2295, - "source": 576, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2273 + 1983, + 1984, + 1985, + 1986, + 1987, + 1988 ] }, { "teal": 2296, - "source": 576, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2274 + 1989, + 1990 ] }, { - "teal": 2297, - "source": 576, + "teal": 2300, + "source": "contracts/stakingPool.algo.ts:577", "pc": [ - 2275, - 2276 + 1991 ] }, { - "teal": 2298, - "source": 576, + "teal": 2301, + "source": "contracts/stakingPool.algo.ts:577", "pc": [ - 2277, - 2278, - 2279, - 2280, - 2281, - 2282 + 1992 ] }, { - "teal": 2299, - "source": 576, + "teal": 2302, + "source": "contracts/stakingPool.algo.ts:577", "pc": [ - 2283, - 2284 + 1993, + 1994 ] }, { - "teal": 2303, - "source": 577, + "teal": 2306, + "source": "contracts/stakingPool.algo.ts:578", "pc": [ - 2285 + 1995 ] }, { - "teal": 2304, - "source": 577, + "teal": 2307, + "source": "contracts/stakingPool.algo.ts:578", "pc": [ - 2286 + 1996 ] }, { - "teal": 2305, - "source": 577, + "teal": 2308, + "source": "contracts/stakingPool.algo.ts:578", "pc": [ - 2287, - 2288 + 1997 ] }, { "teal": 2309, - "source": 578, + "source": "contracts/stakingPool.algo.ts:578", "pc": [ - 2289 + 1998, + 1999 ] }, { - "teal": 2310, - "source": 578, + "teal": 2312, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2290 + 2000 ] }, { - "teal": 2311, - "source": 578, + "teal": 2313, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2291 + 2001, + 2002 ] }, { - "teal": 2312, - "source": 578, + "teal": 2316, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2292, - 2293 + 2003 ] }, { - "teal": 2315, - "source": 576, + "teal": 2317, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2294 + 2004, + 2005 ] }, { - "teal": 2316, - "source": 576, + "teal": 2318, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2295, - 2296 + 2006 ] }, { "teal": 2319, - "source": 576, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2297 + 2007 ] }, { "teal": 2320, - "source": 576, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2298, - 2299 + 2008, + 2009 ] }, { "teal": 2321, - "source": 576, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2300 + 2010, + 2011, + 2012 ] }, { "teal": 2322, - "source": 576, + "source": "contracts/stakingPool.algo.ts:576", "pc": [ - 2301 + 2013, + 2014 ] }, { - "teal": 2323, - "source": 576, + "teal": 2326, + "source": "contracts/stakingPool.algo.ts:580", "pc": [ - 2302, - 2303 + 2015, + 2016 ] }, { - "teal": 2324, - "source": 576, + "teal": 2327, + "source": "contracts/stakingPool.algo.ts:580", "pc": [ - 2304, - 2305, - 2306 + 2017, + 2018, + 2019 ] }, { - "teal": 2325, - "source": 576, + "teal": 2328, + "source": "contracts/stakingPool.algo.ts:580", "pc": [ - 2307, - 2308 + 2020 ] }, { "teal": 2329, - "source": 580, + "source": "contracts/stakingPool.algo.ts:580", "pc": [ - 2309, - 2310 + 2021, + 2022 ] }, { - "teal": 2330, - "source": 580, + "teal": 2333, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2311, - 2312, - 2313 + 2023, + 2024 ] }, { - "teal": 2331, - "source": 580, + "teal": 2334, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2314 + 2025, + 2026 ] }, { - "teal": 2332, - "source": 580, + "teal": 2335, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2315, - 2316 + 2027 ] }, { "teal": 2336, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2317, - 2318 + 2028, + 2029 ] }, { "teal": 2337, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2319, - 2320 + 2030 ] }, { "teal": 2338, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2321 + 2031 ] }, { "teal": 2339, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2322, - 2323 + 2032, + 2033 ] }, { "teal": 2340, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2324 + 2034, + 2035 ] }, { "teal": 2341, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2325 + 2036 ] }, { "teal": 2342, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2326, - 2327 + 2037 ] }, { "teal": 2343, - "source": 586, + "source": "contracts/stakingPool.algo.ts:586", "pc": [ - 2328, - 2329 + 2038, + 2039 ] }, { - "teal": 2344, - "source": 586, + "teal": 2347, + "source": "contracts/stakingPool.algo.ts:587", "pc": [ - 2330 + 2040 ] }, { - "teal": 2345, - "source": 586, + "teal": 2348, + "source": "contracts/stakingPool.algo.ts:587", "pc": [ - 2331 + 2041, + 2042 ] }, { - "teal": 2346, - "source": 586, + "teal": 2352, + "source": "contracts/stakingPool.algo.ts:588", "pc": [ - 2332, - 2333 + 2043, + 2044, + 2045 ] }, { - "teal": 2350, - "source": 587, + "teal": 2353, + "source": "contracts/stakingPool.algo.ts:588", "pc": [ - 2334 + 2046, + 2047 ] }, { - "teal": 2351, - "source": 587, + "teal": 2358, + "source": "contracts/stakingPool.algo.ts:596", "pc": [ - 2335, - 2336 + 2048, + 2049 ] }, { - "teal": 2355, - "source": 588, + "teal": 2359, + "source": "contracts/stakingPool.algo.ts:596", "pc": [ - 2337, - 2338, - 2339 + 2050, + 2051, + 2052 ] }, { - "teal": 2356, - "source": 588, + "teal": 2360, + "source": "contracts/stakingPool.algo.ts:596", "pc": [ - 2340, - 2341 + 2053 ] }, { "teal": 2361, - "source": 596, + "source": "contracts/stakingPool.algo.ts:596", "pc": [ - 2342, - 2343 + 2054, + 2055 ] }, { "teal": 2362, - "source": 596, + "source": "contracts/stakingPool.algo.ts:596", "pc": [ - 2344, - 2345, - 2346 + 2056 ] }, { "teal": 2363, - "source": 596, + "source": "contracts/stakingPool.algo.ts:596", "pc": [ - 2347 + 2057, + 2058, + 2059 ] }, { - "teal": 2364, - "source": 596, + "teal": 2368, + "source": "contracts/stakingPool.algo.ts:597", "pc": [ - 2348, - 2349 + 2060 ] }, { - "teal": 2365, - "source": 596, + "teal": 2369, + "source": "contracts/stakingPool.algo.ts:597", "pc": [ - 2350 + 2061, + 2062 ] }, { - "teal": 2366, - "source": 596, + "teal": 2374, + "source": "contracts/stakingPool.algo.ts:603", "pc": [ - 2351, - 2352, - 2353 + 2063 ] }, { - "teal": 2371, - "source": 597, + "teal": 2375, + "source": "contracts/stakingPool.algo.ts:603", "pc": [ - 2354 + 2064, + 2065 ] }, { - "teal": 2372, - "source": 597, + "teal": 2379, + "source": "contracts/stakingPool.algo.ts:604", "pc": [ - 2355, - 2356 + 2066 ] }, { - "teal": 2377, - "source": 603, + "teal": 2380, + "source": "contracts/stakingPool.algo.ts:604", "pc": [ - 2357 + 2067, + 2068 ] }, { - "teal": 2378, - "source": 603, + "teal": 2384, + "source": "contracts/stakingPool.algo.ts:605", "pc": [ - 2358, - 2359 + 2069 ] }, { - "teal": 2382, - "source": 604, + "teal": 2385, + "source": "contracts/stakingPool.algo.ts:605", "pc": [ - 2360 + 2070, + 2071 ] }, { - "teal": 2383, - "source": 604, + "teal": 2389, + "source": "contracts/stakingPool.algo.ts:606", "pc": [ - 2361, - 2362 + 2072 ] }, { - "teal": 2387, - "source": 605, + "teal": 2390, + "source": "contracts/stakingPool.algo.ts:606", "pc": [ - 2363 + 2073, + 2074 ] }, { - "teal": 2388, - "source": 605, + "teal": 2395, + "source": "contracts/stakingPool.algo.ts:607", "pc": [ - 2364, - 2365 + 2075, + 2076 ] }, { - "teal": 2392, - "source": 606, + "teal": 2396, + "source": "contracts/stakingPool.algo.ts:607", "pc": [ - 2366 + 2077, + 2078, + 2079 ] }, { - "teal": 2393, - "source": 606, + "teal": 2402, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2367, - 2368 + 2080, + 2081 ] }, { - "teal": 2398, - "source": 607, + "teal": 2403, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2369, - 2370 + 2082, + 2083 ] }, { - "teal": 2399, - "source": 607, + "teal": 2404, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2371, - 2372, - 2373 + 2084, + 2085, + 2086 ] }, { "teal": 2405, - "source": 609, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2374, - 2375 + 2087 ] }, { "teal": 2406, - "source": 609, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2376, - 2377 + 2088, + 2089 ] }, { "teal": 2407, - "source": 609, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2378, - 2379, - 2380 + 2090 ] }, { "teal": 2408, - "source": 609, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2381 + 2091, + 2092 ] }, { "teal": 2409, - "source": 609, + "source": "contracts/stakingPool.algo.ts:609", "pc": [ - 2382, - 2383 + 2093 ] }, { "teal": 2410, - "source": 609, + "source": "contracts/stakingPool.algo.ts:608", "pc": [ - 2384 + 2094, + 2095 ] }, { - "teal": 2411, - "source": 609, + "teal": 2415, + "source": "contracts/stakingPool.algo.ts:613", "pc": [ - 2385, - 2386 + 2096, + 2097 ] }, { - "teal": 2412, - "source": 609, + "teal": 2416, + "source": "contracts/stakingPool.algo.ts:613", "pc": [ - 2387 + 2098, + 2099 ] }, { - "teal": 2413, - "source": 608, + "teal": 2417, + "source": "contracts/stakingPool.algo.ts:613", "pc": [ - 2388, - 2389 + 2100, + 2101, + 2102 ] }, { "teal": 2418, - "source": 613, + "source": "contracts/stakingPool.algo.ts:613", "pc": [ - 2390, - 2391 + 2103 ] }, { "teal": 2419, - "source": 613, + "source": "contracts/stakingPool.algo.ts:613", "pc": [ - 2392, - 2393 + 2104 ] }, { "teal": 2420, - "source": 613, + "source": "contracts/stakingPool.algo.ts:613", "pc": [ - 2394, - 2395, - 2396 + 2105, + 2106, + 2107 ] }, { - "teal": 2421, - "source": 613, + "teal": 2425, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2397 + 2108, + 2109 ] }, { - "teal": 2422, - "source": 613, + "teal": 2426, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2398 + 2110 ] }, { - "teal": 2423, - "source": 613, + "teal": 2427, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2399, - 2400, - 2401 + 2111, + 2112 ] }, { "teal": 2428, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2402, - 2403 + 2113 ] }, { "teal": 2429, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2404 + 2114 ] }, { "teal": 2430, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2405 + 2115 ] }, { "teal": 2431, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2406 + 2116, + 2117 ] }, { "teal": 2432, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2407 + 2118 ] }, { "teal": 2433, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2408 + 2119 ] }, { "teal": 2434, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2409, - 2410 + 2120, + 2121 ] }, { "teal": 2435, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2411 + 2122 ] }, { "teal": 2436, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2412 + 2123 ] }, { "teal": 2437, - "source": 619, + "source": "contracts/stakingPool.algo.ts:619", "pc": [ - 2413, - 2414 + 2124, + 2125 ] }, { - "teal": 2438, - "source": 619, + "teal": 2441, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2415 + 2126, + 2127 ] }, { - "teal": 2439, - "source": 619, + "teal": 2442, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2416 + 2128, + 2129, + 2130 ] }, { - "teal": 2440, - "source": 619, + "teal": 2443, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2417, - 2418 + 2131 ] }, { "teal": 2444, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2419, - 2420 + 2132, + 2133 ] }, { "teal": 2445, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2421, - 2422, - 2423 + 2134 ] }, { "teal": 2446, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2424 + 2135 ] }, { "teal": 2447, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2425, - 2426 + 2136, + 2137 ] }, { "teal": 2448, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2427 + 2138 ] }, { "teal": 2449, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2428 + 2139 ] }, { "teal": 2450, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2429, - 2430 + 2140 ] }, { "teal": 2451, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2431 + 2141 ] }, { "teal": 2452, - "source": 622, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2432 + 2142 ] }, { - "teal": 2453, - "source": 622, + "teal": 2455, + "source": "contracts/stakingPool.algo.ts:622", + "errorMessage": "wideRatio failed", "pc": [ - 2433 + 2143 ] }, { - "teal": 2454, - "source": 622, + "teal": 2456, + "source": "contracts/stakingPool.algo.ts:622", "pc": [ - 2434 + 2144, + 2145 ] }, { - "teal": 2455, - "source": 622, + "teal": 2464, + "source": "contracts/stakingPool.algo.ts:625", "pc": [ - 2435 + 2146, + 2147 ] }, { - "teal": 2458, - "source": 622, - "errorMessage": "wideRatio failed", + "teal": 2465, + "source": "contracts/stakingPool.algo.ts:625", "pc": [ - 2436 + 2148 ] }, { - "teal": 2459, - "source": 622, + "teal": 2466, + "source": "contracts/stakingPool.algo.ts:625", "pc": [ - 2437, - 2438 + 2149 ] }, { "teal": 2467, - "source": 625, + "source": "contracts/stakingPool.algo.ts:625", "pc": [ - 2439, - 2440 + 2150, + 2151, + 2152 ] }, { - "teal": 2468, - "source": 625, + "teal": 2473, + "source": "contracts/stakingPool.algo.ts:630", "pc": [ - 2441 + 2153, + 2154 ] }, { - "teal": 2469, - "source": 625, + "teal": 2474, + "source": "contracts/stakingPool.algo.ts:630", "pc": [ - 2442 + 2155, + 2156 ] }, { - "teal": 2470, - "source": 625, + "teal": 2475, + "source": "contracts/stakingPool.algo.ts:630", "pc": [ - 2443, - 2444, - 2445 + 2157 ] }, { "teal": 2476, - "source": 630, + "source": "contracts/stakingPool.algo.ts:630", "pc": [ - 2446, - 2447 + 2158, + 2159, + 2160 ] }, { - "teal": 2477, - "source": 630, + "teal": 2481, + "source": "contracts/stakingPool.algo.ts:631", "pc": [ - 2448, - 2449 + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2170, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184 ] }, { - "teal": 2478, - "source": 630, + "teal": 2482, + "source": "contracts/stakingPool.algo.ts:631", "pc": [ - 2450 + 2185 ] }, { - "teal": 2479, - "source": 630, + "teal": 2486, + "source": "contracts/stakingPool.algo.ts:632", "pc": [ - 2451, - 2452, - 2453 + 2186 ] }, { - "teal": 2484, - "source": 631, + "teal": 2494, + "source": "contracts/stakingPool.algo.ts:636", "pc": [ - 2454, - 2455, - 2456, - 2457, - 2458, - 2459, - 2460, - 2461, - 2462, - 2463, - 2464, - 2465, - 2466, - 2467, - 2468, - 2469, - 2470, - 2471, - 2472, - 2473, - 2474, - 2475, - 2476, - 2477 + 2187, + 2188 ] }, { - "teal": 2485, - "source": 631, + "teal": 2495, + "source": "contracts/stakingPool.algo.ts:636", "pc": [ - 2478 + 2189, + 2190, + 2191 ] }, { - "teal": 2489, - "source": 632, + "teal": 2503, + "source": "contracts/stakingPool.algo.ts:643", "pc": [ - 2479 + 2192, + 2193 ] }, { - "teal": 2497, - "source": 636, + "teal": 2504, + "source": "contracts/stakingPool.algo.ts:643", "pc": [ - 2480, - 2481 + 2194, + 2195 ] }, { - "teal": 2498, - "source": 636, + "teal": 2505, + "source": "contracts/stakingPool.algo.ts:643", "pc": [ - 2482, - 2483, - 2484 + 2196, + 2197, + 2198 ] }, { "teal": 2506, - "source": 643, + "source": "contracts/stakingPool.algo.ts:643", "pc": [ - 2485, - 2486 + 2199 ] }, { "teal": 2507, - "source": 643, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2487, - 2488 + 2200 ] }, { "teal": 2508, - "source": 643, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2489, - 2490, - 2491 + 2201 ] }, { "teal": 2509, - "source": 643, + "source": "contracts/stakingPool.algo.ts:644", "pc": [ - 2492 + 2202, + 2203 ] }, { "teal": 2510, - "source": 642, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2493 + 2204 ] }, { "teal": 2511, - "source": 642, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2494 + 2205 ] }, { "teal": 2512, - "source": 644, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2495, - 2496 + 2206 ] }, { "teal": 2513, - "source": 642, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2497 + 2207 ] }, { "teal": 2514, - "source": 642, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2498 + 2208 ] }, { - "teal": 2515, - "source": 642, + "teal": 2517, + "source": "contracts/stakingPool.algo.ts:642", + "errorMessage": "wideRatio failed", "pc": [ - 2499 + 2209 ] }, { - "teal": 2516, - "source": 642, + "teal": 2518, + "source": "contracts/stakingPool.algo.ts:642", "pc": [ - 2500 + 2210, + 2211 ] }, { - "teal": 2517, - "source": 642, + "teal": 2522, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2501 + 2212, + 2213 ] }, { - "teal": 2520, - "source": 642, - "errorMessage": "wideRatio failed", + "teal": 2523, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2502 + 2214, + 2215 ] }, { - "teal": 2521, - "source": 642, + "teal": 2524, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2503, - 2504 + 2216 ] }, { "teal": 2525, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2505, - 2506 + 2217 ] }, { "teal": 2526, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2507, - 2508 + 2218, + 2219 ] }, { "teal": 2527, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2509 + 2220, + 2221, + 2222 ] }, { "teal": 2528, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2510 + 2223 ] }, { "teal": 2529, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2511, - 2512 + 2224 ] }, { "teal": 2530, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2513, - 2514, - 2515 + 2225 ] }, { "teal": 2531, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2516 + 2226 ] }, { "teal": 2532, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2517 + 2227 ] }, { "teal": 2533, - "source": 647, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2518 + 2228 ] }, { - "teal": 2534, - "source": 647, + "teal": 2536, + "source": "contracts/stakingPool.algo.ts:647", + "errorMessage": "wideRatio failed", "pc": [ - 2519 + 2229 ] }, { - "teal": 2535, - "source": 647, + "teal": 2537, + "source": "contracts/stakingPool.algo.ts:647", "pc": [ - 2520 + 2230, + 2231 ] }, { - "teal": 2536, - "source": 647, + "teal": 2542, + "source": "contracts/stakingPool.algo.ts:649", "pc": [ - 2521 + 2232, + 2233 ] }, { - "teal": 2539, - "source": 647, - "errorMessage": "wideRatio failed", + "teal": 2543, + "source": "contracts/stakingPool.algo.ts:649", "pc": [ - 2522 + 2234, + 2235 ] }, { - "teal": 2540, - "source": 647, + "teal": 2544, + "source": "contracts/stakingPool.algo.ts:649", "pc": [ - 2523, - 2524 + 2236, + 2237 ] }, { "teal": 2545, - "source": 649, + "source": "contracts/stakingPool.algo.ts:649", "pc": [ - 2525, - 2526 + 2238 ] }, { "teal": 2546, - "source": 649, + "source": "contracts/stakingPool.algo.ts:649", "pc": [ - 2527, - 2528 + 2239 ] }, { "teal": 2547, - "source": 649, + "source": "contracts/stakingPool.algo.ts:649", "pc": [ - 2529, - 2530 + 2240, + 2241, + 2242 ] }, { - "teal": 2548, - "source": 649, + "teal": 2552, + "source": "contracts/stakingPool.algo.ts:650", "pc": [ - 2531 + 2243, + 2244 ] }, { - "teal": 2549, - "source": 649, + "teal": 2553, + "source": "contracts/stakingPool.algo.ts:650", "pc": [ - 2532 + 2245, + 2246 ] }, { - "teal": 2550, - "source": 649, + "teal": 2554, + "source": "contracts/stakingPool.algo.ts:650", "pc": [ - 2533, - 2534, - 2535 + 2247 ] }, { "teal": 2555, - "source": 650, + "source": "contracts/stakingPool.algo.ts:650", "pc": [ - 2536, - 2537 + 2248, + 2249 ] }, { - "teal": 2556, - "source": 650, + "teal": 2560, + "source": "contracts/stakingPool.algo.ts:653", "pc": [ - 2538, - 2539 + 2250, + 2251 ] }, { - "teal": 2557, - "source": 650, + "teal": 2561, + "source": "contracts/stakingPool.algo.ts:653", "pc": [ - 2540 + 2252, + 2253 ] }, { - "teal": 2558, - "source": 650, + "teal": 2562, + "source": "contracts/stakingPool.algo.ts:653", "pc": [ - 2541, - 2542 + 2254 ] }, { "teal": 2563, - "source": 653, + "source": "contracts/stakingPool.algo.ts:653", "pc": [ - 2543, - 2544 + 2255, + 2256 ] }, { - "teal": 2564, - "source": 653, + "teal": 2571, + "source": "contracts/stakingPool.algo.ts:654", "pc": [ - 2545, - 2546 + 2257 ] }, { - "teal": 2565, - "source": 653, + "teal": 2572, + "source": "contracts/stakingPool.algo.ts:654", "pc": [ - 2547 + 2258 ] }, { - "teal": 2566, - "source": 653, + "teal": 2573, + "source": "contracts/stakingPool.algo.ts:654", "pc": [ - 2548, - 2549 + 2259, + 2260 ] }, { - "teal": 2574, - "source": 654, + "teal": 2577, + "source": "contracts/stakingPool.algo.ts:655", "pc": [ - 2550 + 2261, + 2262 ] }, { - "teal": 2575, - "source": 654, + "teal": 2578, + "source": "contracts/stakingPool.algo.ts:655", "pc": [ - 2551 + 2263, + 2264 ] }, { - "teal": 2576, - "source": 654, + "teal": 2582, + "source": "contracts/stakingPool.algo.ts:656", "pc": [ - 2552, - 2553 + 2265, + 2266 ] }, { - "teal": 2580, - "source": 655, + "teal": 2583, + "source": "contracts/stakingPool.algo.ts:656", "pc": [ - 2554, - 2555 + 2267 ] }, { - "teal": 2581, - "source": 655, + "teal": 2584, + "source": "contracts/stakingPool.algo.ts:656", "pc": [ - 2556, - 2557 + 2268 ] }, { "teal": 2585, - "source": 656, + "source": "contracts/stakingPool.algo.ts:656", "pc": [ - 2558, - 2559 + 2269, + 2270 ] }, { "teal": 2586, - "source": 656, + "source": "contracts/stakingPool.algo.ts:656", "pc": [ - 2560 + 2271, + 2272 ] }, { - "teal": 2587, - "source": 656, + "teal": 2590, + "source": "contracts/stakingPool.algo.ts:657", "pc": [ - 2561 + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2298, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308 ] }, { - "teal": 2588, - "source": 656, + "teal": 2591, + "source": "contracts/stakingPool.algo.ts:657", "pc": [ - 2562, - 2563 + 2309, + 2310 ] }, { - "teal": 2589, - "source": 656, + "teal": 2594, + "source": "contracts/stakingPool.algo.ts:654", "pc": [ - 2564, - 2565 + 2311 ] }, { - "teal": 2593, - "source": 657, + "teal": 2595, + "source": "contracts/stakingPool.algo.ts:654", "pc": [ - 2566, - 2567, - 2568, - 2569, - 2570, - 2571, - 2572, - 2573, - 2574, - 2575, - 2576, - 2577, - 2578, - 2579, - 2580, - 2581, - 2582, - 2583, - 2584, - 2585, - 2586, - 2587, - 2588, - 2589, - 2590, - 2591, - 2592, - 2593, - 2594, - 2595, - 2596, - 2597, - 2598, - 2599, - 2600, - 2601 + 2312, + 2313 ] }, { - "teal": 2594, - "source": 657, + "teal": 2598, + "source": "contracts/stakingPool.algo.ts:654", "pc": [ - 2602, - 2603 + 2314 ] }, { - "teal": 2597, - "source": 654, + "teal": 2602, + "source": "contracts/stakingPool.algo.ts:660", "pc": [ - 2604 + 2315, + 2316 ] }, { - "teal": 2598, - "source": 654, + "teal": 2603, + "source": "contracts/stakingPool.algo.ts:660", "pc": [ - 2605, - 2606 + 2317, + 2318 ] }, { - "teal": 2601, - "source": 654, + "teal": 2604, + "source": "contracts/stakingPool.algo.ts:636", "pc": [ - 2607 + 2319, + 2320, + 2321 ] }, { - "teal": 2605, - "source": 660, + "teal": 2609, + "source": "contracts/stakingPool.algo.ts:661", "pc": [ - 2608, - 2609 + 2322, + 2323 ] }, { - "teal": 2606, - "source": 660, + "teal": 2610, + "source": "contracts/stakingPool.algo.ts:661", "pc": [ - 2610, - 2611 + 2324, + 2325, + 2326 ] }, { - "teal": 2607, - "source": 636, + "teal": 2611, + "source": "contracts/stakingPool.algo.ts:661", "pc": [ - 2612, - 2613, - 2614 + 2327 ] }, { "teal": 2612, - "source": 661, + "source": "contracts/stakingPool.algo.ts:661", "pc": [ - 2615, - 2616 + 2328 ] }, { "teal": 2613, - "source": 661, + "source": "contracts/stakingPool.algo.ts:661", "pc": [ - 2617, - 2618, - 2619 + 2329 ] }, { "teal": 2614, - "source": 661, + "source": "contracts/stakingPool.algo.ts:661", "pc": [ - 2620 + 2330, + 2331, + 2332 ] }, { - "teal": 2615, - "source": 661, + "teal": 2622, + "source": "contracts/stakingPool.algo.ts:665", "pc": [ - 2621 + 2333, + 2334 ] }, { - "teal": 2616, - "source": 661, + "teal": 2623, + "source": "contracts/stakingPool.algo.ts:665", "pc": [ - 2622 + 2335, + 2336 ] }, { - "teal": 2617, - "source": 661, + "teal": 2624, + "source": "contracts/stakingPool.algo.ts:665", "pc": [ - 2623, - 2624, - 2625 + 2337, + 2338, + 2339 ] }, { "teal": 2625, - "source": 665, + "source": "contracts/stakingPool.algo.ts:665", "pc": [ - 2626, - 2627 + 2340 ] }, { "teal": 2626, - "source": 665, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2628, - 2629 + 2341 ] }, { "teal": 2627, - "source": 665, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2630, - 2631, - 2632 + 2342 ] }, { "teal": 2628, - "source": 665, + "source": "contracts/stakingPool.algo.ts:666", "pc": [ - 2633 + 2343, + 2344 ] }, { "teal": 2629, - "source": 664, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2634 + 2345 ] }, { "teal": 2630, - "source": 664, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2635 + 2346 ] }, { "teal": 2631, - "source": 666, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2636, - 2637 + 2347 ] }, { "teal": 2632, - "source": 664, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2638 + 2348 ] }, { "teal": 2633, - "source": 664, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2639 + 2349 ] }, { - "teal": 2634, - "source": 664, + "teal": 2636, + "source": "contracts/stakingPool.algo.ts:664", + "errorMessage": "wideRatio failed", "pc": [ - 2640 + 2350 ] }, { - "teal": 2635, - "source": 664, + "teal": 2637, + "source": "contracts/stakingPool.algo.ts:664", "pc": [ - 2641 + 2351, + 2352 ] }, { - "teal": 2636, - "source": 664, + "teal": 2641, + "source": "contracts/stakingPool.algo.ts:670", "pc": [ - 2642 + 2353, + 2354 ] }, { - "teal": 2639, - "source": 664, - "errorMessage": "wideRatio failed", + "teal": 2642, + "source": "contracts/stakingPool.algo.ts:670", "pc": [ - 2643 + 2355, + 2356 ] }, { - "teal": 2640, - "source": 664, + "teal": 2643, + "source": "contracts/stakingPool.algo.ts:670", "pc": [ - 2644, - 2645 + 2357 ] }, { "teal": 2644, - "source": 670, + "source": "contracts/stakingPool.algo.ts:670", "pc": [ - 2646, - 2647 + 2358, + 2359 ] }, { - "teal": 2645, - "source": 670, + "teal": 2649, + "source": "contracts/stakingPool.algo.ts:677", "pc": [ - 2648, - 2649 + 2360, + 2361 ] }, { - "teal": 2646, - "source": 670, + "teal": 2650, + "source": "contracts/stakingPool.algo.ts:677", "pc": [ - 2650 + 2362 ] }, { - "teal": 2647, - "source": 670, + "teal": 2651, + "source": "contracts/stakingPool.algo.ts:677", "pc": [ - 2651, - 2652 + 2363 ] }, { "teal": 2652, - "source": 677, + "source": "contracts/stakingPool.algo.ts:677", "pc": [ - 2653, - 2654 + 2364, + 2365, + 2366 ] }, { - "teal": 2653, - "source": 677, + "teal": 2657, + "source": "contracts/stakingPool.algo.ts:680", "pc": [ - 2655 + 2367 ] }, { - "teal": 2654, - "source": 677, + "teal": 2658, + "source": "contracts/stakingPool.algo.ts:680", "pc": [ - 2656 + 2368, + 2369 ] }, { - "teal": 2655, - "source": 677, + "teal": 2664, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2657, - 2658, - 2659 + 2370, + 2371 ] }, { - "teal": 2660, - "source": 680, + "teal": 2665, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2660 + 2372, + 2373, + 2374 ] }, { - "teal": 2661, - "source": 680, + "teal": 2666, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2661, - 2662 + 2375, + 2376 ] }, { "teal": 2667, - "source": 682, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2663, - 2664 + 2377, + 2378, + 2379 ] }, { "teal": 2668, - "source": 682, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2665, - 2666, - 2667 + 2380 ] }, { "teal": 2669, - "source": 682, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2668, - 2669 + 2381 ] }, { "teal": 2670, - "source": 682, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2670, - 2671, - 2672 + 2382, + 2383, + 2384 ] }, { "teal": 2671, - "source": 682, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2673 + 2385, + 2386 ] }, { "teal": 2672, - "source": 682, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2674 + 2387, + 2388, + 2389 ] }, { "teal": 2673, - "source": 682, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2675, - 2676, - 2677 + 2390, + 2391 ] }, { "teal": 2674, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2678, - 2679 + 2392 ] }, { "teal": 2675, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2680, - 2681, - 2682 + 2393, + 2394 ] }, { "teal": 2676, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2683, - 2684 + 2395, + 2396, + 2397 ] }, { "teal": 2677, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2685 + 2398, + 2399 ] }, { "teal": 2678, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2686, - 2687 + 2400 ] }, { "teal": 2679, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2688, - 2689, - 2690 + 2401 ] }, { "teal": 2680, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2691, - 2692 + 2402, + 2403 ] }, { "teal": 2681, - "source": 683, + "source": "contracts/stakingPool.algo.ts:683", "pc": [ - 2693 + 2404 ] }, { "teal": 2682, - "source": 683, + "source": "contracts/stakingPool.algo.ts:682", "pc": [ - 2694 + 2405 ] }, { - "teal": 2683, - "source": 683, + "teal": 2685, + "source": "contracts/stakingPool.algo.ts:681", "pc": [ - 2695, - 2696 + 2406, + 2407, + 2408 ] }, { - "teal": 2684, - "source": 683, + "teal": 2690, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2697 + 2409, + 2410 ] }, { - "teal": 2685, - "source": 682, + "teal": 2691, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2698 + 2411, + 2412 ] }, { - "teal": 2688, - "source": 681, + "teal": 2692, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2699, - 2700, - 2701 + 2413 ] }, { "teal": 2693, - "source": 685, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2702, - 2703 + 2414, + 2415, + 2416 ] }, { "teal": 2694, - "source": 685, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2704, - 2705 + 2417, + 2418 ] }, { "teal": 2695, - "source": 685, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2706 + 2419, + 2420, + 2421 ] }, { - "teal": 2696, - "source": 685, + "teal": 2698, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2707, - 2708, - 2709 + 2422, + 2423 ] }, { - "teal": 2697, - "source": 685, + "teal": 2701, + "source": "contracts/stakingPool.algo.ts:685", "pc": [ - 2710, - 2711 + 2424, + 2425 ] }, { - "teal": 2698, - "source": 685, + "teal": 2709, + "source": "contracts/stakingPool.algo.ts:686", "pc": [ - 2712, - 2713, - 2714 + 2426 ] }, { - "teal": 2701, - "source": 685, + "teal": 2710, + "source": "contracts/stakingPool.algo.ts:686", "pc": [ - 2715, - 2716 + 2427 ] }, { - "teal": 2704, - "source": 685, + "teal": 2711, + "source": "contracts/stakingPool.algo.ts:686", "pc": [ - 2717, - 2718 + 2428, + 2429 ] }, { - "teal": 2712, - "source": 686, + "teal": 2715, + "source": "contracts/stakingPool.algo.ts:687", "pc": [ - 2719 + 2430, + 2431 ] }, { - "teal": 2713, - "source": 686, + "teal": 2716, + "source": "contracts/stakingPool.algo.ts:687", "pc": [ - 2720 + 2432, + 2433 ] }, { - "teal": 2714, - "source": 686, + "teal": 2720, + "source": "contracts/stakingPool.algo.ts:688", "pc": [ - 2721, - 2722 + 2434, + 2435 ] }, { - "teal": 2718, - "source": 687, + "teal": 2721, + "source": "contracts/stakingPool.algo.ts:688", "pc": [ - 2723, - 2724 + 2436, + 2437, + 2438 ] }, { - "teal": 2719, - "source": 687, + "teal": 2722, + "source": "contracts/stakingPool.algo.ts:688", "pc": [ - 2725, - 2726 + 2439, + 2440 ] }, { - "teal": 2723, - "source": 688, + "teal": 2726, + "source": "contracts/stakingPool.algo.ts:689", "pc": [ - 2727, - 2728 + 2441, + 2442, + 2443, + 2444, + 2445, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495 ] }, { - "teal": 2724, - "source": 688, + "teal": 2727, + "source": "contracts/stakingPool.algo.ts:689", "pc": [ - 2729, - 2730, - 2731 + 2496, + 2497 ] }, { - "teal": 2725, - "source": 688, + "teal": 2730, + "source": "contracts/stakingPool.algo.ts:686", "pc": [ - 2732, - 2733 + 2498 ] }, { - "teal": 2729, - "source": 689, + "teal": 2731, + "source": "contracts/stakingPool.algo.ts:686", "pc": [ - 2734, - 2735, - 2736, - 2737, - 2738, - 2739, - 2740, - 2741, - 2742, - 2743, - 2744, - 2745, - 2746, - 2747, - 2748, - 2749, - 2750, - 2751, - 2752, - 2753, - 2754, - 2755, - 2756, - 2757, - 2758, - 2759, - 2760, - 2761, - 2762, - 2763, - 2764, - 2765, - 2766, - 2767, - 2768, - 2769, - 2770, - 2771, - 2772, - 2773, - 2774, - 2775, - 2776, - 2777, - 2778, - 2779, - 2780, - 2781, - 2782, - 2783, - 2784, - 2785, - 2786, - 2787, - 2788 + 2499, + 2500 ] }, { - "teal": 2730, - "source": 689, + "teal": 2734, + "source": "contracts/stakingPool.algo.ts:686", "pc": [ - 2789, - 2790 + 2501 ] }, { - "teal": 2733, - "source": 686, + "teal": 2740, + "source": "contracts/stakingPool.algo.ts:692", "pc": [ - 2791 + 2502, + 2503 ] }, { - "teal": 2734, - "source": 686, + "teal": 2741, + "source": "contracts/stakingPool.algo.ts:692", "pc": [ - 2792, - 2793 + 2504, + 2505 ] }, { - "teal": 2737, - "source": 686, + "teal": 2742, + "source": "contracts/stakingPool.algo.ts:692", "pc": [ - 2794 + 2506 ] }, { "teal": 2743, - "source": 692, + "source": "contracts/stakingPool.algo.ts:692", "pc": [ - 2795, - 2796 + 2507 ] }, { "teal": 2744, - "source": 692, + "source": "contracts/stakingPool.algo.ts:692", "pc": [ - 2797, - 2798 + 2508 ] }, { "teal": 2745, - "source": 692, + "source": "contracts/stakingPool.algo.ts:692", "pc": [ - 2799 + 2509, + 2510, + 2511 ] }, { - "teal": 2746, - "source": 692, + "teal": 2754, + "source": "contracts/stakingPool.algo.ts:693", "pc": [ - 2800 + 2512 ] }, { - "teal": 2747, - "source": 692, + "teal": 2755, + "source": "contracts/stakingPool.algo.ts:693", "pc": [ - 2801 + 2513 ] }, { - "teal": 2748, - "source": 692, + "teal": 2756, + "source": "contracts/stakingPool.algo.ts:693", "pc": [ - 2802, - 2803, - 2804 + 2514, + 2515 ] }, { - "teal": 2757, - "source": 693, + "teal": 2760, + "source": "contracts/stakingPool.algo.ts:694", "pc": [ - 2805 + 2516, + 2517 ] }, { - "teal": 2758, - "source": 693, + "teal": 2761, + "source": "contracts/stakingPool.algo.ts:694", "pc": [ - 2806 + 2518, + 2519 ] }, { - "teal": 2759, - "source": 693, + "teal": 2762, + "source": "contracts/stakingPool.algo.ts:694", "pc": [ - 2807, - 2808 + 2520 ] }, { "teal": 2763, - "source": 694, + "source": "contracts/stakingPool.algo.ts:694", "pc": [ - 2809, - 2810 + 2521, + 2522 ] }, { - "teal": 2764, - "source": 694, + "teal": 2767, + "source": "contracts/stakingPool.algo.ts:695", "pc": [ - 2811, - 2812 + 2523, + 2524 ] }, { - "teal": 2765, - "source": 694, + "teal": 2768, + "source": "contracts/stakingPool.algo.ts:695", "pc": [ - 2813 + 2525, + 2526, + 2527 ] }, { - "teal": 2766, - "source": 694, + "teal": 2769, + "source": "contracts/stakingPool.algo.ts:695", "pc": [ - 2814, - 2815 + 2528, + 2529 ] }, { - "teal": 2770, - "source": 695, + "teal": 2773, + "source": "contracts/stakingPool.algo.ts:696", "pc": [ - 2816, - 2817 + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2541, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547 ] }, { - "teal": 2771, - "source": 695, + "teal": 2774, + "source": "contracts/stakingPool.algo.ts:696", "pc": [ - 2818, - 2819, - 2820 + 2548, + 2549 ] }, { - "teal": 2772, - "source": 695, + "teal": 2777, + "source": "contracts/stakingPool.algo.ts:693", "pc": [ - 2821, - 2822 + 2550 ] }, { - "teal": 2776, - "source": 696, + "teal": 2778, + "source": "contracts/stakingPool.algo.ts:693", "pc": [ - 2823, - 2824, - 2825, - 2826, - 2827, - 2828, - 2829, - 2830, - 2831, - 2832, - 2833, - 2834, - 2835, - 2836, - 2837, - 2838, - 2839, - 2840 + 2551, + 2552 ] }, { - "teal": 2777, - "source": 696, + "teal": 2781, + "source": "contracts/stakingPool.algo.ts:693", "pc": [ - 2841, - 2842 + 2553 ] }, { - "teal": 2780, - "source": 693, + "teal": 2790, + "source": "contracts/stakingPool.algo.ts:708", "pc": [ - 2843 + 2554 ] }, { - "teal": 2781, - "source": 693, + "teal": 2791, + "source": "contracts/stakingPool.algo.ts:708", "pc": [ - 2844, - 2845 + 2555, + 2556 ] }, { - "teal": 2784, - "source": 693, + "teal": 2796, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2846 + 2557, + 2558 ] }, { - "teal": 2793, - "source": 708, + "teal": 2797, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2847 + 2559 ] }, { - "teal": 2794, - "source": 708, + "teal": 2798, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2848, - 2849 + 2560 ] }, { "teal": 2799, - "source": 732, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2850, - 2851 + 2561 ] }, { "teal": 2800, - "source": 732, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2852 + 2562, + 2563, + 2564 ] }, { "teal": 2801, - "source": 732, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2853 + 2565, + 2566 ] }, { "teal": 2802, - "source": 732, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2854 + 2567 ] }, { "teal": 2803, - "source": 732, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2855, - 2856, - 2857 + 2568 ] }, { "teal": 2804, - "source": 732, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2858, - 2859 + 2569 ] }, { - "teal": 2805, - "source": 732, + "teal": 2807, + "source": "contracts/stakingPool.algo.ts:732", "pc": [ - 2860 + 2570, + 2571, + 2572 ] }, { - "teal": 2806, - "source": 732, + "teal": 2812, + "source": "contracts/stakingPool.algo.ts:733", "pc": [ - 2861 + 2573 ] }, { - "teal": 2807, - "source": 732, + "teal": 2813, + "source": "contracts/stakingPool.algo.ts:733", "pc": [ - 2862 + 2574, + 2575 ] }, { - "teal": 2810, - "source": 732, + "teal": 2817, + "source": "contracts/stakingPool.algo.ts:734", "pc": [ - 2863, - 2864, - 2865 + 2576, + 2577 ] }, { - "teal": 2815, - "source": 733, + "teal": 2818, + "source": "contracts/stakingPool.algo.ts:734", "pc": [ - 2866 + 2578, + 2579 ] }, { - "teal": 2816, - "source": 733, + "teal": 2822, + "source": "contracts/stakingPool.algo.ts:736", "pc": [ - 2867, - 2868 + 2580, + 2581 ] }, { - "teal": 2820, - "source": 734, + "teal": 2823, + "source": "contracts/stakingPool.algo.ts:736", "pc": [ - 2869, - 2870 + 2582, + 2583 ] }, { - "teal": 2821, - "source": 734, + "teal": 2827, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 2871, - 2872 + 2584 ] }, { - "teal": 2825, - "source": 736, + "teal": 2828, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 2873, - 2874 + 2585, + 2586 ] }, { - "teal": 2826, - "source": 736, + "teal": 2833, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 2875, - 2876 + 2587, + 2588 ] }, { - "teal": 2830, - "source": 737, + "teal": 2834, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 2877 + 2589, + 2590 ] }, { - "teal": 2831, - "source": 737, + "teal": 2835, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 2878, - 2879 + 2591 ] }, { "teal": 2836, - "source": 737, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 2880, - 2881 + 2592, + 2593, + 2594 ] }, { - "teal": 2837, - "source": 737, + "teal": 2841, + "source": "contracts/stakingPool.algo.ts:738", "pc": [ - 2882, - 2883 + 2595, + 2596 ] }, { - "teal": 2838, - "source": 737, + "teal": 2842, + "source": "contracts/stakingPool.algo.ts:738", "pc": [ - 2884 + 2597, + 2598 ] }, { - "teal": 2839, - "source": 737, + "teal": 2843, + "source": "contracts/stakingPool.algo.ts:738", "pc": [ - 2885, - 2886, - 2887 + 2599 ] }, { "teal": 2844, - "source": 738, + "source": "contracts/stakingPool.algo.ts:738", "pc": [ - 2888, - 2889 + 2600, + 2601, + 2602 ] }, { - "teal": 2845, - "source": 738, + "teal": 2849, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2890, - 2891 + 2603 ] }, { - "teal": 2846, - "source": 738, + "teal": 2850, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2892 + 2604 ] }, { - "teal": 2847, - "source": 738, + "teal": 2851, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2893, - 2894, - 2895 + 2605, + 2606 ] }, { "teal": 2852, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2896 + 2607 ] }, { "teal": 2853, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2897 + 2608, + 2609 ] }, { "teal": 2854, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2898, - 2899 + 2610, + 2611 ] }, { "teal": 2855, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2900 + 2612 ] }, { "teal": 2856, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2901, - 2902 + 2613, + 2614 ] }, { "teal": 2857, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2903, - 2904 + 2615, + 2616 ] }, { "teal": 2858, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2905 + 2617, + 2618 ] }, { "teal": 2859, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2906, - 2907 + 2619, + 2620 ] }, { "teal": 2860, - "source": 739, + "source": "contracts/stakingPool.algo.ts:739", "pc": [ - 2908, - 2909 + 2621 ] }, { - "teal": 2861, - "source": 739, + "teal": 2865, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2910, - 2911 + 2622, + 2623 ] }, { - "teal": 2862, - "source": 739, + "teal": 2866, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2912, - 2913 + 2624 ] }, { - "teal": 2863, - "source": 739, + "teal": 2867, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2914 + 2625 ] }, { "teal": 2868, - "source": 741, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2915, - 2916 + 2626 ] }, { "teal": 2869, - "source": 741, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2917 + 2627 ] }, { "teal": 2870, - "source": 741, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2918 + 2628, + 2629 ] }, { "teal": 2871, - "source": 741, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2919 + 2630 ] }, { "teal": 2872, - "source": 741, + "source": "contracts/stakingPool.algo.ts:741", "pc": [ - 2920 + 2631, + 2632 ] }, { - "teal": 2873, - "source": 741, + "teal": 2877, + "source": "contracts/stakingPool.algo.ts:742", "pc": [ - 2921, - 2922 + 2633, + 2634 ] }, { - "teal": 2874, - "source": 741, + "teal": 2878, + "source": "contracts/stakingPool.algo.ts:742", "pc": [ - 2923 + 2635, + 2636, + 2637 ] }, { - "teal": 2875, - "source": 741, + "teal": 2879, + "source": "contracts/stakingPool.algo.ts:742", "pc": [ - 2924, - 2925 + 2638, + 2639 ] }, { "teal": 2880, - "source": 742, + "source": "contracts/stakingPool.algo.ts:742", "pc": [ - 2926, - 2927 + 2640 ] }, { "teal": 2881, - "source": 742, + "source": "contracts/stakingPool.algo.ts:742", "pc": [ - 2928, - 2929, - 2930 + 2641, + 2642, + 2643 ] }, { - "teal": 2882, - "source": 742, + "teal": 2887, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2931, - 2932 + 2644, + 2645 ] }, { - "teal": 2883, - "source": 742, + "teal": 2888, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2933 + 2646, + 2647, + 2648 ] }, { - "teal": 2884, - "source": 742, + "teal": 2889, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2934, - 2935, - 2936 + 2649 ] }, { "teal": 2890, - "source": 743, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2937, - 2938 + 2650, + 2651 ] }, { "teal": 2891, - "source": 743, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2939, - 2940, - 2941 + 2652 ] }, { "teal": 2892, - "source": 743, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2942 + 2653, + 2654, + 2655 ] }, { - "teal": 2893, - "source": 743, + "teal": 2897, + "source": "contracts/stakingPool.algo.ts:746", "pc": [ - 2943, - 2944 + 2656, + 2657 ] }, { - "teal": 2894, - "source": 743, + "teal": 2898, + "source": "contracts/stakingPool.algo.ts:746", "pc": [ - 2945 + 2658, + 2659 ] }, { - "teal": 2895, - "source": 743, + "teal": 2899, + "source": "contracts/stakingPool.algo.ts:746", "pc": [ - 2946, - 2947, - 2948 + 2660, + 2661, + 2662 ] }, { "teal": 2900, - "source": 746, + "source": "contracts/stakingPool.algo.ts:746", "pc": [ - 2949, - 2950 + 2663 ] }, { "teal": 2901, - "source": 746, + "source": "contracts/stakingPool.algo.ts:746", "pc": [ - 2951, - 2952 + 2664 ] }, { "teal": 2902, - "source": 746, + "source": "contracts/stakingPool.algo.ts:746", "pc": [ - 2953, - 2954, - 2955 + 2665, + 2666 ] }, { "teal": 2903, - "source": 746, + "source": "contracts/stakingPool.algo.ts:743", "pc": [ - 2956 + 2667, + 2668, + 2669 ] }, { - "teal": 2904, - "source": 746, + "teal": 2908, + "source": "contracts/stakingPool.algo.ts:750", "pc": [ - 2957 + 2670, + 2671 ] }, { - "teal": 2905, - "source": 746, + "teal": 2909, + "source": "contracts/stakingPool.algo.ts:750", "pc": [ - 2958, - 2959 + 2672, + 2673 ] }, { - "teal": 2906, - "source": 743, + "teal": 2910, + "source": "contracts/stakingPool.algo.ts:750", "pc": [ - 2960, - 2961, - 2962 + 2674, + 2675, + 2676 ] }, { "teal": 2911, - "source": 750, + "source": "contracts/stakingPool.algo.ts:750", "pc": [ - 2963, - 2964 + 2677 ] }, { "teal": 2912, - "source": 750, + "source": "contracts/stakingPool.algo.ts:750", "pc": [ - 2965, - 2966 + 2678 ] }, { "teal": 2913, - "source": 750, + "source": "contracts/stakingPool.algo.ts:750", "pc": [ - 2967, - 2968, - 2969 + 2679, + 2680 ] }, { - "teal": 2914, - "source": 750, + "teal": 2918, + "source": "contracts/stakingPool.algo.ts:754", "pc": [ - 2970 + 2681, + 2682 ] }, { - "teal": 2915, - "source": 750, + "teal": 2919, + "source": "contracts/stakingPool.algo.ts:754", "pc": [ - 2971 + 2683, + 2684 ] }, { - "teal": 2916, - "source": 750, + "teal": 2920, + "source": "contracts/stakingPool.algo.ts:754", "pc": [ - 2972, - 2973 + 2685 ] }, { "teal": 2921, - "source": 754, + "source": "contracts/stakingPool.algo.ts:754", "pc": [ - 2974, - 2975 + 2686, + 2687, + 2688 ] }, { - "teal": 2922, - "source": 754, + "teal": 2926, + "source": "contracts/stakingPool.algo.ts:755", "pc": [ - 2976, - 2977 + 2689, + 2690 ] }, { - "teal": 2923, - "source": 754, + "teal": 2927, + "source": "contracts/stakingPool.algo.ts:755", "pc": [ - 2978 + 2691, + 2692 ] }, { - "teal": 2924, - "source": 754, + "teal": 2928, + "source": "contracts/stakingPool.algo.ts:755", "pc": [ - 2979, - 2980, - 2981 + 2693, + 2694, + 2695 ] }, { "teal": 2929, - "source": 755, + "source": "contracts/stakingPool.algo.ts:755", "pc": [ - 2982, - 2983 + 2696 ] }, { "teal": 2930, - "source": 755, + "source": "contracts/stakingPool.algo.ts:755", "pc": [ - 2984, - 2985 + 2697 ] }, { "teal": 2931, - "source": 755, + "source": "contracts/stakingPool.algo.ts:755", "pc": [ - 2986, - 2987, - 2988 + 2698, + 2699 ] }, { - "teal": 2932, - "source": 755, + "teal": 2935, + "source": "contracts/stakingPool.algo.ts:756", "pc": [ - 2989 + 2700, + 2701 ] }, { - "teal": 2933, - "source": 755, + "teal": 2936, + "source": "contracts/stakingPool.algo.ts:756", "pc": [ - 2990 + 2702, + 2703 ] }, { - "teal": 2934, - "source": 755, + "teal": 2937, + "source": "contracts/stakingPool.algo.ts:756", "pc": [ - 2991, - 2992 + 2704 ] }, { "teal": 2938, - "source": 756, + "source": "contracts/stakingPool.algo.ts:756", "pc": [ - 2993, - 2994 + 2705, + 2706 ] }, { "teal": 2939, - "source": 756, + "source": "contracts/stakingPool.algo.ts:756", "pc": [ - 2995, - 2996 + 2707 ] }, { "teal": 2940, - "source": 756, + "source": "contracts/stakingPool.algo.ts:756", "pc": [ - 2997 + 2708, + 2709 ] }, { - "teal": 2941, - "source": 756, + "teal": 2945, + "source": "contracts/stakingPool.algo.ts:758", "pc": [ - 2998, - 2999 + 2710, + 2711 ] }, { - "teal": 2942, - "source": 756, + "teal": 2946, + "source": "contracts/stakingPool.algo.ts:758", "pc": [ - 3000 + 2712 ] }, { - "teal": 2943, - "source": 756, + "teal": 2947, + "source": "contracts/stakingPool.algo.ts:758", "pc": [ - 3001, - 3002 + 2713 ] }, { "teal": 2948, - "source": 758, + "source": "contracts/stakingPool.algo.ts:758", "pc": [ - 3003, - 3004 + 2714, + 2715, + 2716 ] }, { - "teal": 2949, - "source": 758, + "teal": 2956, + "source": "contracts/stakingPool.algo.ts:761", "pc": [ - 3005 + 2717, + 2718 ] }, { - "teal": 2950, - "source": 758, + "teal": 2957, + "source": "contracts/stakingPool.algo.ts:761", "pc": [ - 3006 + 2719, + 2720, + 2721 ] }, { - "teal": 2951, - "source": 758, + "teal": 2958, + "source": "contracts/stakingPool.algo.ts:761", "pc": [ - 3007, - 3008, - 3009 + 2722 ] }, { "teal": 2959, - "source": 761, + "source": "contracts/stakingPool.algo.ts:761", "pc": [ - 3010, - 3011 + 2723, + 2724 ] }, { "teal": 2960, - "source": 761, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3012, - 3013, - 3014 + 2725 ] }, { "teal": 2961, - "source": 761, + "source": "contracts/stakingPool.algo.ts:761", "pc": [ - 3015 + 2726, + 2727 ] }, { "teal": 2962, - "source": 761, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3016, - 3017 + 2728, + 2729 ] }, { "teal": 2963, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3018 + 2730, + 2731 ] }, { "teal": 2964, - "source": 761, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3019, - 3020 + 2732 ] }, { "teal": 2965, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3021, - 3022 + 2733, + 2734 ] }, { "teal": 2966, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3023, - 3024 + 2735 ] }, { "teal": 2967, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3025 + 2736, + 2737 ] }, { "teal": 2968, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3026, - 3027 + 2738 ] }, { "teal": 2969, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3028 + 2739 ] }, { "teal": 2970, - "source": 760, + "source": "contracts/stakingPool.algo.ts:762", "pc": [ - 3029, - 3030 + 2740, + 2741 ] }, { "teal": 2971, - "source": 760, + "source": "contracts/stakingPool.algo.ts:762", "pc": [ - 3031 + 2742 ] }, { "teal": 2972, - "source": 760, + "source": "contracts/stakingPool.algo.ts:762", "pc": [ - 3032 + 2743, + 2744 ] }, { "teal": 2973, - "source": 762, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3033, - 3034 + 2745 ] }, { "teal": 2974, - "source": 762, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3035 + 2746 ] }, { "teal": 2975, - "source": 762, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3036, - 3037 + 2747 ] }, { "teal": 2976, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3038 + 2748 ] }, { "teal": 2977, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3039 + 2749 ] }, { "teal": 2978, - "source": 760, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3040 + 2750 ] }, { - "teal": 2979, - "source": 760, + "teal": 2981, + "source": "contracts/stakingPool.algo.ts:760", + "errorMessage": "wideRatio failed", "pc": [ - 3041 + 2751 ] }, { - "teal": 2980, - "source": 760, + "teal": 2982, + "source": "contracts/stakingPool.algo.ts:760", "pc": [ - 3042 + 2752, + 2753 ] }, { - "teal": 2981, - "source": 760, + "teal": 2986, + "source": "contracts/stakingPool.algo.ts:767", "pc": [ - 3043 + 2754, + 2755 ] }, { - "teal": 2984, - "source": 760, - "errorMessage": "wideRatio failed", + "teal": 2987, + "source": "contracts/stakingPool.algo.ts:767", "pc": [ - 3044 + 2756, + 2757 ] }, { - "teal": 2985, - "source": 760, + "teal": 2988, + "source": "contracts/stakingPool.algo.ts:767", "pc": [ - 3045, - 3046 + 2758 ] }, { "teal": 2989, - "source": 767, + "source": "contracts/stakingPool.algo.ts:767", "pc": [ - 3047, - 3048 + 2759, + 2760 ] }, { - "teal": 2990, - "source": 767, + "teal": 2993, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3049, - 3050 + 2761, + 2762 ] }, { - "teal": 2991, - "source": 767, + "teal": 2994, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3051 + 2763, + 2764 ] }, { - "teal": 2992, - "source": 767, + "teal": 2995, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3052, - 3053 + 2765, + 2766 ] }, { "teal": 2996, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3054, - 3055 + 2767, + 2768, + 2769 ] }, { "teal": 2997, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3056, - 3057 + 2770 ] }, { "teal": 2998, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3058, - 3059 + 2771, + 2772 ] }, { "teal": 2999, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3060, - 3061, - 3062 + 2773 ] }, { "teal": 3000, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3063 + 2774 ] }, { "teal": 3001, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3064, - 3065 + 2775 ] }, { "teal": 3002, - "source": 768, + "source": "contracts/stakingPool.algo.ts:768", "pc": [ - 3066 + 2776, + 2777 ] }, { - "teal": 3003, - "source": 768, + "teal": 3006, + "source": "contracts/stakingPool.algo.ts:769", "pc": [ - 3067 + 2778, + 2779 ] }, { - "teal": 3004, - "source": 768, + "teal": 3007, + "source": "contracts/stakingPool.algo.ts:769", "pc": [ - 3068 + 2780, + 2781 ] }, { - "teal": 3005, - "source": 768, + "teal": 3008, + "source": "contracts/stakingPool.algo.ts:769", "pc": [ - 3069, - 3070 + 2782 ] }, { "teal": 3009, - "source": 769, + "source": "contracts/stakingPool.algo.ts:769", "pc": [ - 3071, - 3072 + 2783, + 2784 ] }, { - "teal": 3010, - "source": 769, + "teal": 3017, + "source": "contracts/stakingPool.algo.ts:773", "pc": [ - 3073, - 3074 + 2785, + 2786 ] }, { - "teal": 3011, - "source": 769, + "teal": 3018, + "source": "contracts/stakingPool.algo.ts:773", "pc": [ - 3075 + 2787, + 2788, + 2789 ] }, { - "teal": 3012, - "source": 769, + "teal": 3019, + "source": "contracts/stakingPool.algo.ts:773", "pc": [ - 3076, - 3077 + 2790 ] }, { "teal": 3020, - "source": 773, + "source": "contracts/stakingPool.algo.ts:773", "pc": [ - 3078, - 3079 + 2791, + 2792 ] }, { "teal": 3021, - "source": 773, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3080, - 3081, - 3082 + 2793 ] }, { "teal": 3022, - "source": 773, + "source": "contracts/stakingPool.algo.ts:773", "pc": [ - 3083 + 2794, + 2795 ] }, { "teal": 3023, - "source": 773, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3084, - 3085 + 2796, + 2797 ] }, { "teal": 3024, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3086 + 2798, + 2799 ] }, { "teal": 3025, - "source": 773, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3087, - 3088 + 2800 ] }, { "teal": 3026, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3089, - 3090 + 2801, + 2802 ] }, { "teal": 3027, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3091, - 3092 + 2803 ] }, { "teal": 3028, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3093 + 2804, + 2805 ] }, { "teal": 3029, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3094, - 3095 + 2806 ] }, { "teal": 3030, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3096 + 2807 ] }, { "teal": 3031, - "source": 772, + "source": "contracts/stakingPool.algo.ts:774", "pc": [ - 3097, - 3098 + 2808, + 2809 ] }, { "teal": 3032, - "source": 772, + "source": "contracts/stakingPool.algo.ts:774", "pc": [ - 3099 + 2810 ] }, { "teal": 3033, - "source": 772, + "source": "contracts/stakingPool.algo.ts:774", "pc": [ - 3100 + 2811, + 2812 ] }, { "teal": 3034, - "source": 774, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3101, - 3102 + 2813 ] }, { "teal": 3035, - "source": 774, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3103 + 2814 ] }, { "teal": 3036, - "source": 774, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3104, - 3105 + 2815 ] }, { "teal": 3037, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3106 + 2816 ] }, { "teal": 3038, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3107 + 2817 ] }, { "teal": 3039, - "source": 772, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3108 + 2818 ] }, { - "teal": 3040, - "source": 772, + "teal": 3042, + "source": "contracts/stakingPool.algo.ts:772", + "errorMessage": "wideRatio failed", "pc": [ - 3109 + 2819 ] }, { - "teal": 3041, - "source": 772, + "teal": 3043, + "source": "contracts/stakingPool.algo.ts:772", "pc": [ - 3110 + 2820, + 2821 ] }, { - "teal": 3042, - "source": 772, + "teal": 3047, + "source": "contracts/stakingPool.algo.ts:778", "pc": [ - 3111 + 2822, + 2823 ] }, { - "teal": 3045, - "source": 772, - "errorMessage": "wideRatio failed", + "teal": 3048, + "source": "contracts/stakingPool.algo.ts:778", "pc": [ - 3112 + 2824, + 2825 ] }, { - "teal": 3046, - "source": 772, + "teal": 3049, + "source": "contracts/stakingPool.algo.ts:778", "pc": [ - 3113, - 3114 + 2826 ] }, { "teal": 3050, - "source": 778, + "source": "contracts/stakingPool.algo.ts:778", "pc": [ - 3115, - 3116 + 2827, + 2828 ] }, { - "teal": 3051, - "source": 778, + "teal": 3054, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3117, - 3118 + 2829, + 2830 ] }, { - "teal": 3052, - "source": 778, + "teal": 3055, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3119 + 2831, + 2832 ] }, { - "teal": 3053, - "source": 778, + "teal": 3056, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3120, - 3121 + 2833, + 2834 ] }, { "teal": 3057, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3122, - 3123 + 2835, + 2836, + 2837 ] }, { "teal": 3058, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3124, - 3125 + 2838 ] }, { "teal": 3059, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3126, - 3127 + 2839, + 2840 ] }, { "teal": 3060, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3128, - 3129, - 3130 + 2841 ] }, { "teal": 3061, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3131 + 2842 ] }, { "teal": 3062, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3132, - 3133 + 2843 ] }, { "teal": 3063, - "source": 781, + "source": "contracts/stakingPool.algo.ts:781", "pc": [ - 3134 + 2844, + 2845 ] }, { - "teal": 3064, - "source": 781, + "teal": 3067, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3135 + 2846, + 2847 ] }, { - "teal": 3065, - "source": 781, + "teal": 3068, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3136 + 2848, + 2849 ] }, { - "teal": 3066, - "source": 781, + "teal": 3069, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3137, - 3138 + 2850, + 2851 ] }, { "teal": 3070, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3139, - 3140 + 2852, + 2853, + 2854 ] }, { "teal": 3071, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3141, - 3142 + 2855 ] }, { "teal": 3072, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3143, - 3144 + 2856, + 2857 ] }, { "teal": 3073, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3145, - 3146, - 3147 + 2858 ] }, { "teal": 3074, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3148 + 2859 ] }, { "teal": 3075, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3149, - 3150 + 2860 ] }, { "teal": 3076, - "source": 782, + "source": "contracts/stakingPool.algo.ts:782", "pc": [ - 3151 + 2861, + 2862 ] }, { - "teal": 3077, - "source": 782, + "teal": 3080, + "source": "contracts/stakingPool.algo.ts:783", "pc": [ - 3152 + 2863, + 2864 ] }, { - "teal": 3078, - "source": 782, + "teal": 3081, + "source": "contracts/stakingPool.algo.ts:783", "pc": [ - 3153 + 2865, + 2866 ] }, { - "teal": 3079, - "source": 782, + "teal": 3082, + "source": "contracts/stakingPool.algo.ts:783", "pc": [ - 3154, - 3155 + 2867 ] }, { "teal": 3083, - "source": 783, + "source": "contracts/stakingPool.algo.ts:783", "pc": [ - 3156, - 3157 + 2868, + 2869 ] }, { - "teal": 3084, - "source": 783, + "teal": 3087, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3158, - 3159 + 2870, + 2871 ] }, { - "teal": 3085, - "source": 783, + "teal": 3088, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3160 + 2872 ] }, { - "teal": 3086, - "source": 783, + "teal": 3089, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3161, - 3162 + 2873 ] }, { "teal": 3090, - "source": 785, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3163, - 3164 + 2874, + 2875 ] }, { "teal": 3091, - "source": 785, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3165 + 2876 ] }, { "teal": 3092, - "source": 785, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3166 + 2877, + 2878 ] }, { "teal": 3093, - "source": 785, + "source": "contracts/stakingPool.algo.ts:785", "pc": [ - 3167, - 3168 + 2879 ] }, { - "teal": 3094, - "source": 785, + "teal": 3104, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 3169 + 2880, + 2881 ] }, { - "teal": 3095, - "source": 785, + "teal": 3105, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 3170, - 3171 + 2882 ] }, { - "teal": 3096, - "source": 785, + "teal": 3106, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 3172 + 2883 ] }, { "teal": 3107, - "source": 737, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 3173, - 3174 + 2884, + 2885 ] }, { "teal": 3108, - "source": 737, + "source": "contracts/stakingPool.algo.ts:737", "pc": [ - 3175 + 2886, + 2887, + 2888 ] }, { - "teal": 3109, - "source": 737, + "teal": 3113, + "source": "contracts/stakingPool.algo.ts:793", "pc": [ - 3176 + 2889, + 2890 ] }, { - "teal": 3110, - "source": 737, + "teal": 3114, + "source": "contracts/stakingPool.algo.ts:793", "pc": [ - 3177, - 3178 + 2891 ] }, { - "teal": 3111, - "source": 737, + "teal": 3115, + "source": "contracts/stakingPool.algo.ts:793", "pc": [ - 3179, - 3180, - 3181 + 2892, + 2893 ] }, { "teal": 3116, - "source": 793, + "source": "contracts/stakingPool.algo.ts:793", "pc": [ - 3182, - 3183 + 2894 ] }, { "teal": 3117, - "source": 793, + "source": "contracts/stakingPool.algo.ts:793", "pc": [ - 3184 + 2895, + 2896 ] }, { - "teal": 3118, - "source": 793, + "teal": 3122, + "source": "contracts/stakingPool.algo.ts:797", "pc": [ - 3185, - 3186 + 2897, + 2898 ] }, { - "teal": 3119, - "source": 793, + "teal": 3123, + "source": "contracts/stakingPool.algo.ts:797", "pc": [ - 3187 + 2899 ] }, { - "teal": 3120, - "source": 793, + "teal": 3124, + "source": "contracts/stakingPool.algo.ts:797", "pc": [ - 3188, - 3189 + 2900 ] }, { "teal": 3125, - "source": 797, + "source": "contracts/stakingPool.algo.ts:797", "pc": [ - 3190, - 3191 + 2901, + 2902, + 2903 ] }, { - "teal": 3126, - "source": 797, + "teal": 3130, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3192 + 2904 ] }, { - "teal": 3127, - "source": 797, + "teal": 3131, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3193 + 2905, + 2906 ] }, { - "teal": 3128, - "source": 797, + "teal": 3136, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3194, - 3195, - 3196 + 2907, + 2908 ] }, { - "teal": 3133, - "source": 799, + "teal": 3137, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3197 + 2909, + 2910 ] }, { - "teal": 3134, - "source": 799, + "teal": 3138, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3198, - 3199 + 2911 ] }, { "teal": 3139, - "source": 799, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3200, - 3201 + 2912, + 2913, + 2914 ] }, { - "teal": 3140, - "source": 799, + "teal": 3144, + "source": "contracts/stakingPool.algo.ts:800", "pc": [ - 3202, - 3203 + 2915, + 2916 ] }, { - "teal": 3141, - "source": 799, + "teal": 3145, + "source": "contracts/stakingPool.algo.ts:800", "pc": [ - 3204 + 2917, + 2918 ] }, { - "teal": 3142, - "source": 799, + "teal": 3146, + "source": "contracts/stakingPool.algo.ts:800", "pc": [ - 3205, - 3206, - 3207 + 2919 ] }, { "teal": 3147, - "source": 800, + "source": "contracts/stakingPool.algo.ts:800", "pc": [ - 3208, - 3209 + 2920, + 2921, + 2922 ] }, { - "teal": 3148, - "source": 800, + "teal": 3152, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3210, - 3211 + 2923 ] }, { - "teal": 3149, - "source": 800, + "teal": 3153, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3212 + 2924 ] }, { - "teal": 3150, - "source": 800, + "teal": 3154, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3213, - 3214, - 3215 + 2925, + 2926 ] }, { "teal": 3155, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3216 + 2927 ] }, { "teal": 3156, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3217 + 2928, + 2929 ] }, { "teal": 3157, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3218, - 3219 + 2930, + 2931 ] }, { "teal": 3158, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3220 + 2932 ] }, { "teal": 3159, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3221, - 3222 + 2933, + 2934 ] }, { "teal": 3160, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3223, - 3224 + 2935, + 2936 ] }, { "teal": 3161, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3225 + 2937, + 2938 ] }, { "teal": 3162, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3226, - 3227 + 2939, + 2940 ] }, { "teal": 3163, - "source": 801, + "source": "contracts/stakingPool.algo.ts:801", "pc": [ - 3228, - 3229 + 2941 ] }, { - "teal": 3164, - "source": 801, + "teal": 3168, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3230, - 3231 + 2942, + 2943 ] }, { - "teal": 3165, - "source": 801, + "teal": 3169, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3232, - 3233 + 2944 ] }, { - "teal": 3166, - "source": 801, + "teal": 3170, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3234 + 2945 ] }, { "teal": 3171, - "source": 803, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3235, - 3236 + 2946 ] }, { "teal": 3172, - "source": 803, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3237 + 2947 ] }, { "teal": 3173, - "source": 803, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3238 + 2948, + 2949 ] }, { "teal": 3174, - "source": 803, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3239 + 2950 ] }, { "teal": 3175, - "source": 803, + "source": "contracts/stakingPool.algo.ts:803", "pc": [ - 3240 + 2951, + 2952 ] }, { - "teal": 3176, - "source": 803, + "teal": 3180, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3241, - 3242 + 2953, + 2954 ] }, { - "teal": 3177, - "source": 803, + "teal": 3181, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3243 + 2955, + 2956, + 2957 ] }, { - "teal": 3178, - "source": 803, + "teal": 3182, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3244, - 3245 + 2958, + 2959 ] }, { "teal": 3183, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3246, - 3247 + 2960 ] }, { "teal": 3184, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3248, - 3249, - 3250 + 2961 ] }, { "teal": 3185, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3251, - 3252 + 2962, + 2963, + 2964 ] }, { "teal": 3186, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3253 + 2965, + 2966 ] }, { "teal": 3187, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3254 + 2967, + 2968, + 2969 ] }, { "teal": 3188, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3255, - 3256, - 3257 + 2970 ] }, { "teal": 3189, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3258, - 3259 + 2971, + 2972 ] }, { "teal": 3190, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3260, - 3261, - 3262 + 2973 ] }, { "teal": 3191, - "source": 804, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3263 + 2974 ] }, { - "teal": 3192, - "source": 804, + "teal": 3194, + "source": "contracts/stakingPool.algo.ts:804", "pc": [ - 3264, - 3265 + 2975, + 2976, + 2977 ] }, { - "teal": 3193, - "source": 804, + "teal": 3199, + "source": "contracts/stakingPool.algo.ts:805", "pc": [ - 3266 + 2978, + 2979 ] }, { - "teal": 3194, - "source": 804, + "teal": 3200, + "source": "contracts/stakingPool.algo.ts:805", "pc": [ - 3267 + 2980, + 2981 ] }, { - "teal": 3197, - "source": 804, + "teal": 3201, + "source": "contracts/stakingPool.algo.ts:805", "pc": [ - 3268, - 3269, - 3270 + 2982, + 2983, + 2984 ] }, { "teal": 3202, - "source": 805, + "source": "contracts/stakingPool.algo.ts:805", "pc": [ - 3271, - 3272 + 2985 ] }, { "teal": 3203, - "source": 805, + "source": "contracts/stakingPool.algo.ts:805", "pc": [ - 3273, - 3274 + 2986 ] }, { "teal": 3204, - "source": 805, + "source": "contracts/stakingPool.algo.ts:805", "pc": [ - 3275, - 3276, - 3277 + 2987, + 2988 ] }, { - "teal": 3205, - "source": 805, + "teal": 3209, + "source": "contracts/stakingPool.algo.ts:807", "pc": [ - 3278 + 2989, + 2990 ] }, { - "teal": 3206, - "source": 805, + "teal": 3210, + "source": "contracts/stakingPool.algo.ts:807", "pc": [ - 3279 + 2991, + 2992 ] }, { - "teal": 3207, - "source": 805, + "teal": 3211, + "source": "contracts/stakingPool.algo.ts:807", "pc": [ - 3280, - 3281 + 2993 ] }, { "teal": 3212, - "source": 807, + "source": "contracts/stakingPool.algo.ts:807", "pc": [ - 3282, - 3283 + 2994, + 2995, + 2996 ] }, { - "teal": 3213, - "source": 807, + "teal": 3218, + "source": "contracts/stakingPool.algo.ts:812", "pc": [ - 3284, - 3285 + 2997, + 2998 ] }, { - "teal": 3214, - "source": 807, + "teal": 3219, + "source": "contracts/stakingPool.algo.ts:812", "pc": [ - 3286 + 2999 ] }, { - "teal": 3215, - "source": 807, + "teal": 3220, + "source": "contracts/stakingPool.algo.ts:812", "pc": [ - 3287, - 3288, - 3289 + 3000 ] }, { "teal": 3221, - "source": 812, + "source": "contracts/stakingPool.algo.ts:812", "pc": [ - 3290, - 3291 + 3001, + 3002, + 3003 ] }, { - "teal": 3222, - "source": 812, + "teal": 3229, + "source": "contracts/stakingPool.algo.ts:814", "pc": [ - 3292 + 3004, + 3005 ] }, { - "teal": 3223, - "source": 812, + "teal": 3230, + "source": "contracts/stakingPool.algo.ts:814", "pc": [ - 3293 + 3006, + 3007, + 3008 ] }, { - "teal": 3224, - "source": 812, + "teal": 3231, + "source": "contracts/stakingPool.algo.ts:814", "pc": [ - 3294, - 3295, - 3296 + 3009 ] }, { "teal": 3232, - "source": 814, + "source": "contracts/stakingPool.algo.ts:814", "pc": [ - 3297, - 3298 + 3010, + 3011 ] }, { "teal": 3233, - "source": 814, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3299, - 3300, - 3301 + 3012 ] }, { "teal": 3234, - "source": 814, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3302 + 3013 ] }, { "teal": 3235, - "source": 814, + "source": "contracts/stakingPool.algo.ts:815", "pc": [ - 3303, - 3304 + 3014, + 3015 ] }, { "teal": 3236, - "source": 813, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3305 + 3016 ] }, { "teal": 3237, - "source": 813, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3306 + 3017 ] }, { "teal": 3238, - "source": 815, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3307, - 3308 + 3018 ] }, { "teal": 3239, - "source": 813, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3309 + 3019 ] }, { "teal": 3240, - "source": 813, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3310 + 3020 ] }, { - "teal": 3241, - "source": 813, + "teal": 3243, + "source": "contracts/stakingPool.algo.ts:813", + "errorMessage": "wideRatio failed", "pc": [ - 3311 + 3021 ] }, { - "teal": 3242, - "source": 813, + "teal": 3244, + "source": "contracts/stakingPool.algo.ts:813", "pc": [ - 3312 + 3022, + 3023 ] }, { - "teal": 3243, - "source": 813, + "teal": 3248, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3313 + 3024, + 3025 ] }, { - "teal": 3246, - "source": 813, - "errorMessage": "wideRatio failed", + "teal": 3249, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3314 + 3026, + 3027 ] }, { - "teal": 3247, - "source": 813, + "teal": 3250, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3315, - 3316 + 3028, + 3029 ] }, { "teal": 3251, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3317, - 3318 + 3030, + 3031, + 3032 ] }, { "teal": 3252, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3319, - 3320 + 3033 ] }, { "teal": 3253, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3321, - 3322 + 3034, + 3035 ] }, { "teal": 3254, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3323, - 3324, - 3325 + 3036 ] }, { "teal": 3255, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3326 + 3037 ] }, { "teal": 3256, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3327, - 3328 + 3038 ] }, { "teal": 3257, - "source": 818, + "source": "contracts/stakingPool.algo.ts:818", "pc": [ - 3329 + 3039, + 3040 ] }, { - "teal": 3258, - "source": 818, + "teal": 3261, + "source": "contracts/stakingPool.algo.ts:819", "pc": [ - 3330 + 3041, + 3042 ] }, { - "teal": 3259, - "source": 818, + "teal": 3262, + "source": "contracts/stakingPool.algo.ts:819", "pc": [ - 3331 + 3043, + 3044 ] }, { - "teal": 3260, - "source": 818, + "teal": 3263, + "source": "contracts/stakingPool.algo.ts:819", "pc": [ - 3332, - 3333 + 3045 ] }, { "teal": 3264, - "source": 819, + "source": "contracts/stakingPool.algo.ts:819", "pc": [ - 3334, - 3335 + 3046, + 3047 ] }, { - "teal": 3265, - "source": 819, + "teal": 3270, + "source": "contracts/stakingPool.algo.ts:821", "pc": [ - 3336, - 3337 + 3048, + 3049 ] }, { - "teal": 3266, - "source": 819, + "teal": 3271, + "source": "contracts/stakingPool.algo.ts:821", "pc": [ - 3338 + 3050 ] }, { - "teal": 3267, - "source": 819, + "teal": 3272, + "source": "contracts/stakingPool.algo.ts:821", "pc": [ - 3339, - 3340 + 3051 ] }, { "teal": 3273, - "source": 821, + "source": "contracts/stakingPool.algo.ts:821", "pc": [ - 3341, - 3342 + 3052, + 3053, + 3054 ] }, { - "teal": 3274, - "source": 821, + "teal": 3281, + "source": "contracts/stakingPool.algo.ts:823", "pc": [ - 3343 + 3055, + 3056 ] }, { - "teal": 3275, - "source": 821, + "teal": 3282, + "source": "contracts/stakingPool.algo.ts:823", "pc": [ - 3344 + 3057, + 3058, + 3059 ] }, { - "teal": 3276, - "source": 821, + "teal": 3283, + "source": "contracts/stakingPool.algo.ts:823", "pc": [ - 3345, - 3346, - 3347 + 3060 ] }, { "teal": 3284, - "source": 823, + "source": "contracts/stakingPool.algo.ts:823", "pc": [ - 3348, - 3349 + 3061, + 3062 ] }, { "teal": 3285, - "source": 823, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3350, - 3351, - 3352 + 3063 ] }, { "teal": 3286, - "source": 823, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3353 + 3064 ] }, { "teal": 3287, - "source": 823, + "source": "contracts/stakingPool.algo.ts:824", "pc": [ - 3354, - 3355 + 3065, + 3066 ] }, { "teal": 3288, - "source": 822, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3356 + 3067 ] }, { "teal": 3289, - "source": 822, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3357 + 3068 ] }, { "teal": 3290, - "source": 824, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3358, - 3359 + 3069 ] }, { "teal": 3291, - "source": 822, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3360 + 3070 ] }, { "teal": 3292, - "source": 822, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3361 + 3071 ] }, { - "teal": 3293, - "source": 822, + "teal": 3295, + "source": "contracts/stakingPool.algo.ts:822", + "errorMessage": "wideRatio failed", "pc": [ - 3362 + 3072 ] }, { - "teal": 3294, - "source": 822, + "teal": 3296, + "source": "contracts/stakingPool.algo.ts:822", "pc": [ - 3363 + 3073, + 3074 ] }, { - "teal": 3295, - "source": 822, + "teal": 3300, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3364 + 3075, + 3076 ] }, { - "teal": 3298, - "source": 822, - "errorMessage": "wideRatio failed", + "teal": 3301, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3365 + 3077, + 3078 ] }, { - "teal": 3299, - "source": 822, + "teal": 3302, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3366, - 3367 + 3079, + 3080 ] }, { "teal": 3303, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3368, - 3369 + 3081, + 3082, + 3083 ] }, { "teal": 3304, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3370, - 3371 + 3084 ] }, { "teal": 3305, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3372, - 3373 + 3085, + 3086 ] }, { "teal": 3306, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3374, - 3375, - 3376 + 3087 ] }, { "teal": 3307, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3377 + 3088 ] }, { "teal": 3308, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3378, - 3379 + 3089 ] }, { "teal": 3309, - "source": 828, + "source": "contracts/stakingPool.algo.ts:828", "pc": [ - 3380 + 3090, + 3091 ] }, { - "teal": 3310, - "source": 828, + "teal": 3313, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3381 + 3092, + 3093 ] }, { - "teal": 3311, - "source": 828, + "teal": 3314, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3382 + 3094, + 3095 ] }, { - "teal": 3312, - "source": 828, + "teal": 3315, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3383, - 3384 + 3096, + 3097 ] }, { "teal": 3316, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3385, - 3386 + 3098, + 3099, + 3100 ] }, { "teal": 3317, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3387, - 3388 + 3101 ] }, { "teal": 3318, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3389, - 3390 + 3102, + 3103 ] }, { "teal": 3319, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3391, - 3392, - 3393 + 3104 ] }, { "teal": 3320, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3394 + 3105 ] }, { "teal": 3321, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3395, - 3396 + 3106 ] }, { "teal": 3322, - "source": 829, + "source": "contracts/stakingPool.algo.ts:829", "pc": [ - 3397 + 3107, + 3108 ] }, { - "teal": 3323, - "source": 829, + "teal": 3326, + "source": "contracts/stakingPool.algo.ts:830", "pc": [ - 3398 + 3109, + 3110 ] }, { - "teal": 3324, - "source": 829, + "teal": 3327, + "source": "contracts/stakingPool.algo.ts:830", "pc": [ - 3399 + 3111, + 3112 ] }, { - "teal": 3325, - "source": 829, + "teal": 3328, + "source": "contracts/stakingPool.algo.ts:830", "pc": [ - 3400, - 3401 + 3113 ] }, { "teal": 3329, - "source": 830, + "source": "contracts/stakingPool.algo.ts:830", "pc": [ - 3402, - 3403 + 3114, + 3115 ] }, { - "teal": 3330, - "source": 830, + "teal": 3334, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3404, - 3405 + 3116, + 3117 ] }, { - "teal": 3331, - "source": 830, + "teal": 3335, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3406 + 3118 ] }, { - "teal": 3332, - "source": 830, + "teal": 3336, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3407, - 3408 + 3119 ] }, { "teal": 3337, - "source": 834, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3409, - 3410 + 3120, + 3121 ] }, { "teal": 3338, - "source": 834, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3411 + 3122 ] }, { "teal": 3339, - "source": 834, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3412 + 3123, + 3124 ] }, { "teal": 3340, - "source": 834, + "source": "contracts/stakingPool.algo.ts:834", "pc": [ - 3413, - 3414 + 3125 ] }, { - "teal": 3341, - "source": 834, + "teal": 3349, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3415 + 3126, + 3127 ] }, { - "teal": 3342, - "source": 834, + "teal": 3350, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3416, - 3417 + 3128 ] }, { - "teal": 3343, - "source": 834, + "teal": 3351, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3418 + 3129 ] }, { "teal": 3352, - "source": 799, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3419, - 3420 + 3130, + 3131 ] }, { "teal": 3353, - "source": 799, + "source": "contracts/stakingPool.algo.ts:799", "pc": [ - 3421 + 3132, + 3133, + 3134 ] }, { - "teal": 3354, - "source": 799, + "teal": 3362, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3422 + 3135, + 3136 ] }, { - "teal": 3355, - "source": 799, + "teal": 3363, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3423, - 3424 + 3137 ] }, { - "teal": 3356, - "source": 799, + "teal": 3364, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3425, - 3426, - 3427 + 3138, + 3139 ] }, { "teal": 3365, - "source": 844, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3428, - 3429 + 3140 ] }, { "teal": 3366, - "source": 844, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3430 + 3141 ] }, { "teal": 3367, - "source": 844, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3431, - 3432 + 3142, + 3143 ] }, { "teal": 3368, - "source": 844, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3433 + 3144 ] }, { "teal": 3369, - "source": 844, + "source": "contracts/stakingPool.algo.ts:844", "pc": [ - 3434 + 3145, + 3146 ] }, { - "teal": 3370, - "source": 844, + "teal": 3373, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3435, - 3436 + 3147, + 3148 ] }, { - "teal": 3371, - "source": 844, + "teal": 3374, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3437 + 3149 ] }, { - "teal": 3372, - "source": 844, + "teal": 3375, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3438, - 3439 + 3150, + 3151 ] }, { "teal": 3376, - "source": 845, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3440, - 3441 + 3152 ] }, { "teal": 3377, - "source": 845, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3442 + 3153, + 3154 ] }, { "teal": 3378, - "source": 845, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3443, - 3444 + 3155 ] }, { "teal": 3379, - "source": 845, + "source": "contracts/stakingPool.algo.ts:845", "pc": [ - 3445 + 3156 ] }, { - "teal": 3380, - "source": 845, + "teal": 3384, + "source": "contracts/stakingPool.algo.ts:846", "pc": [ - 3446, - 3447 + 3157, + 3158 ] }, { - "teal": 3381, - "source": 845, + "teal": 3385, + "source": "contracts/stakingPool.algo.ts:846", "pc": [ - 3448 + 3159 ] }, { - "teal": 3382, - "source": 845, + "teal": 3386, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3449 + 3160 ] }, { "teal": 3387, - "source": 846, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3450, - 3451 + 3161, + 3162 ] }, { "teal": 3388, - "source": 846, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3452 + 3163 ] }, { "teal": 3389, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3453 + 3164, + 3165 ] }, { "teal": 3390, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3454, - 3455 + 3166 ] }, { "teal": 3391, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3456 + 3167 ] }, { "teal": 3392, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3457, - 3458 + 3168 ] }, { "teal": 3393, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3459 + 3169 ] }, { "teal": 3394, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3460 + 3170 ] }, { "teal": 3395, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3461 + 3171, + 3172 ] }, { "teal": 3396, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3462 + 3173 ] }, { - "teal": 3397, - "source": 847, + "teal": 3399, + "source": "contracts/stakingPool.algo.ts:847", + "errorMessage": "this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", "pc": [ - 3463 + 3174 ] }, { - "teal": 3398, - "source": 847, + "teal": 3400, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3464, - 3465 + 3175, + 3176 ] }, { - "teal": 3399, - "source": 847, + "teal": 3401, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3466 + 3177 ] }, { "teal": 3402, - "source": 847, - "errorMessage": "this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3467 + 3178 ] }, { "teal": 3403, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3468, - 3469 + 3179 ] }, { "teal": 3404, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3470 + 3180 ] }, { "teal": 3405, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3471 + 3181, + 3182 ] }, { "teal": 3406, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3472 + 3183 ] }, { "teal": 3407, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3473 + 3184 ] }, { "teal": 3408, - "source": 847, + "source": "contracts/stakingPool.algo.ts:847", "pc": [ - 3474, - 3475 + 3185 ] }, { "teal": 3409, - "source": 847, + "source": "contracts/stakingPool.algo.ts:846", "pc": [ - 3476 + 3186 ] }, { - "teal": 3410, - "source": 847, + "teal": 3413, + "source": "contracts/stakingPool.algo.ts:848", "pc": [ - 3477 + 3187, + 3188 ] }, { - "teal": 3411, - "source": 847, + "teal": 3414, + "source": "contracts/stakingPool.algo.ts:848", "pc": [ - 3478 + 3189 ] }, { - "teal": 3412, - "source": 846, + "teal": 3415, + "source": "contracts/stakingPool.algo.ts:848", "pc": [ - 3479 + 3190 ] }, { "teal": 3416, - "source": 848, + "source": "contracts/stakingPool.algo.ts:848", "pc": [ - 3480, - 3481 + 3191, + 3192 ] }, { "teal": 3417, - "source": 848, + "source": "contracts/stakingPool.algo.ts:848", "pc": [ - 3482 + 3193 ] }, { "teal": 3418, - "source": 848, + "source": "contracts/stakingPool.algo.ts:848", "pc": [ - 3483 + 3194 ] }, { - "teal": 3419, - "source": 848, + "teal": 3431, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3484, - 3485 + 3195 ] }, { - "teal": 3420, - "source": 848, + "teal": 3432, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3486 + 3196 ] }, { - "teal": 3421, - "source": 848, + "teal": 3433, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3487 + 3197, + 3198 ] }, { "teal": 3434, - "source": 854, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3488 + 3199, + 3200, + 3201, + 3202, + 3203, + 3204 ] }, { "teal": 3435, - "source": 854, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3489 + 3205, + 3206 ] }, { - "teal": 3436, - "source": 854, + "teal": 3439, + "source": "contracts/stakingPool.algo.ts:855", "pc": [ - 3490, - 3491 + 3207 ] }, { - "teal": 3437, - "source": 854, + "teal": 3440, + "source": "contracts/stakingPool.algo.ts:855", "pc": [ - 3492, - 3493, - 3494, - 3495, - 3496, - 3497 + 3208 ] }, { - "teal": 3438, - "source": 854, + "teal": 3441, + "source": "contracts/stakingPool.algo.ts:855", "pc": [ - 3498, - 3499 + 3209, + 3210 ] }, { - "teal": 3442, - "source": 855, + "teal": 3451, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3500 + 3211 ] }, { - "teal": 3443, - "source": 855, + "teal": 3452, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3501 + 3212 ] }, { - "teal": 3444, - "source": 855, + "teal": 3453, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3502, - 3503 + 3213 ] }, { "teal": 3454, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3504 + 3214, + 3215 ] }, { "teal": 3455, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3505 + 3216 ] }, { "teal": 3456, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3506 + 3217 ] }, { "teal": 3457, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3507 + 3218 ] }, { "teal": 3458, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3508 + 3219, + 3220, + 3221 ] }, { "teal": 3459, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3509 + 3222 ] }, { "teal": 3460, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3510 + 3223 ] }, { "teal": 3461, - "source": 857, + "source": "contracts/stakingPool.algo.ts:857", "pc": [ - 3511, - 3512, - 3513 + 3224, + 3225 ] }, { "teal": 3462, - "source": 857, + "source": "contracts/stakingPool.algo.ts:858", "pc": [ - 3514 + 3226, + 3227 ] }, { "teal": 3463, - "source": 857, + "source": "contracts/stakingPool.algo.ts:858", "pc": [ - 3515 + 3228 ] }, { "teal": 3464, - "source": 857, + "source": "contracts/stakingPool.algo.ts:858", "pc": [ - 3516, - 3517 + 3229, + 3230 ] }, { "teal": 3465, - "source": 858, + "source": "contracts/stakingPool.algo.ts:859", "pc": [ - 3518, - 3519 + 3231, + 3232 ] }, { "teal": 3466, - "source": 858, + "source": "contracts/stakingPool.algo.ts:859", "pc": [ - 3520 + 3233 ] }, { "teal": 3467, - "source": 858, + "source": "contracts/stakingPool.algo.ts:859", "pc": [ - 3521, - 3522 + 3234, + 3235 ] }, { "teal": 3468, - "source": 859, + "source": "contracts/stakingPool.algo.ts:860", "pc": [ - 3523, - 3524 + 3236, + 3237 ] }, { "teal": 3469, - "source": 859, - "pc": [ - 3525 - ] - }, - { - "teal": 3470, - "source": 859, - "pc": [ - 3526, - 3527 - ] - }, - { - "teal": 3471, - "source": 860, + "source": "contracts/stakingPool.algo.ts:860", "pc": [ - 3528, - 3529 + 3238 ] }, { - "teal": 3472, - "source": 860, + "teal": 3470, + "source": "contracts/stakingPool.algo.ts:860", "pc": [ - 3530 + 3239, + 3240 ] }, { - "teal": 3473, - "source": 860, + "teal": 3471, + "source": "contracts/stakingPool.algo.ts:861", "pc": [ - 3531, - 3532 + 3241, + 3242 ] }, { - "teal": 3474, - "source": 861, + "teal": 3472, + "source": "contracts/stakingPool.algo.ts:861", "pc": [ - 3533, - 3534 + 3243 ] }, { - "teal": 3475, - "source": 861, + "teal": 3473, + "source": "contracts/stakingPool.algo.ts:861", "pc": [ - 3535 + 3244, + 3245 ] }, { "teal": 3476, - "source": 861, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3536, - 3537 + 3246 ] }, { - "teal": 3479, - "source": 854, + "teal": 3477, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3538 + 3247, + 3248 ] }, { "teal": 3480, - "source": 854, + "source": "contracts/stakingPool.algo.ts:854", "pc": [ - 3539, - 3540 + 3249 ] }, { - "teal": 3483, - "source": 854, + "teal": 3481, + "source": "contracts/stakingPool.algo.ts:512", "pc": [ - 3541 + 3250 ] }, { - "teal": 3484, - "source": 512, + "teal": 3486, + "source": "contracts/stakingPool.algo.ts:886", "pc": [ - 3542 + 3251, + 3252, + 3253 ] }, { - "teal": 3489, - "source": 886, + "teal": 3487, + "source": "contracts/stakingPool.algo.ts:886", "pc": [ - 3543, - 3544, - 3545 + 3254 ] }, { "teal": 3490, - "source": 886, + "source": "contracts/stakingPool.algo.ts:885", "pc": [ - 3546 + 3255, + 3256, + 3257 ] }, { - "teal": 3493, - "source": 885, + "teal": 3491, + "source": "contracts/stakingPool.algo.ts:885", "pc": [ - 3547, - 3548, - 3549 + 3258 ] }, { "teal": 3494, - "source": 885, + "source": "contracts/stakingPool.algo.ts:884", "pc": [ - 3550 + 3259, + 3260, + 3261 ] }, { - "teal": 3497, - "source": 884, + "teal": 3495, + "source": "contracts/stakingPool.algo.ts:884", "pc": [ - 3551, - 3552, - 3553 + 3262 ] }, { "teal": 3498, - "source": 884, + "source": "contracts/stakingPool.algo.ts:883", "pc": [ - 3554 + 3263, + 3264, + 3265 ] }, { - "teal": 3501, - "source": 883, + "teal": 3499, + "source": "contracts/stakingPool.algo.ts:883", "pc": [ - 3555, - 3556, - 3557 + 3266, + 3267, + 3268 ] }, { "teal": 3502, - "source": 883, + "source": "contracts/stakingPool.algo.ts:882", "pc": [ - 3558, - 3559, - 3560 + 3269, + 3270, + 3271 ] }, { - "teal": 3505, - "source": 882, + "teal": 3503, + "source": "contracts/stakingPool.algo.ts:882", "pc": [ - 3561, - 3562, - 3563 + 3272, + 3273, + 3274 ] }, { "teal": 3506, - "source": 882, + "source": "contracts/stakingPool.algo.ts:881", "pc": [ - 3564, - 3565, - 3566 + 3275, + 3276, + 3277 ] }, { - "teal": 3509, - "source": 881, + "teal": 3507, + "source": "contracts/stakingPool.algo.ts:881", "pc": [ - 3567, - 3568, - 3569 + 3278, + 3279, + 3280 ] }, { "teal": 3510, - "source": 881, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3570, - 3571, - 3572 + 3281, + 3282 ] }, { - "teal": 3513, - "source": 880, + "teal": 3511, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3573, - 3574 + 3283 ] }, { - "teal": 3514, - "source": 880, + "teal": 3512, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3575 + 3284 ] }, { - "teal": 3515, - "source": 880, + "teal": 3513, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3576 + 3285 ] }, { - "teal": 3516, - "source": 880, + "teal": 3514, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3577 + 3286, + 3287 ] }, { - "teal": 3517, - "source": 880, + "teal": 3515, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3578, - 3579 + 3288 ] }, { - "teal": 3518, - "source": 880, + "teal": 3516, + "source": "contracts/stakingPool.algo.ts:880", "pc": [ - 3580 + 3289 ] }, { "teal": 3519, - "source": 880, + "source": "contracts/stakingPool.algo.ts:880", + "errorMessage": "argument 6 (feePayment) for goOnline must be a pay transaction", "pc": [ - 3581 + 3290 ] }, { "teal": 3522, - "source": 880, - "errorMessage": "argument 6 (feePayment) for goOnline must be a pay transaction", + "source": "contracts/stakingPool.algo.ts:879", "pc": [ - 3582 + 3291, + 3292, + 3293 ] }, { - "teal": 3525, - "source": 879, + "teal": 3523, + "source": "contracts/stakingPool.algo.ts:879", "pc": [ - 3583, - 3584, - 3585 + 3294 ] }, { - "teal": 3526, - "source": 879, + "teal": 3524, + "source": "contracts/stakingPool.algo.ts:879", "pc": [ - 3586 + 3295 ] }, { - "teal": 3527, - "source": 879, + "teal": 3540, + "source": "contracts/stakingPool.algo.ts:879", "pc": [ - 3587 + 3296, + 3297, + 3298 ] }, { "teal": 3543, - "source": 879, + "source": "contracts/stakingPool.algo.ts:879", "pc": [ - 3588, - 3589, - 3590 + 3299 ] }, { - "teal": 3546, - "source": 879, + "teal": 3547, + "source": "contracts/stakingPool.algo.ts:888", "pc": [ - 3591, - 3592 + 3300, + 3301, + 3302 ] }, { "teal": 3550, - "source": 888, + "source": "contracts/stakingPool.algo.ts:888", + "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 3593, - 3594, - 3595 + 3303 ] }, { - "teal": 3553, - "source": 888, - "errorMessage": "can only be called by owner or manager of validator", + "teal": 3554, + "source": "contracts/stakingPool.algo.ts:889", "pc": [ - 3596 + 3304, + 3305, + 3306 ] }, { - "teal": 3557, - "source": 889, + "teal": 3555, + "source": "contracts/stakingPool.algo.ts:889", "pc": [ - 3597, - 3598, - 3599 + 3307, + 3308 ] }, { - "teal": 3558, - "source": 889, + "teal": 3560, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3600, - 3601 + 3309, + 3310 ] }, { - "teal": 3563, - "source": 890, + "teal": 3561, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3602, - 3603 + 3311, + 3312 ] }, { - "teal": 3564, - "source": 890, + "teal": 3562, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3604, - 3605 + 3313, + 3314 ] }, { - "teal": 3565, - "source": 890, + "teal": 3563, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3606, - 3607 + 3315 ] }, { "teal": 3566, - "source": 890, + "source": "contracts/stakingPool.algo.ts:890", + "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 3608 + 3316 ] }, { "teal": 3569, - "source": 890, - "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3609 + 3317, + 3318 ] }, { - "teal": 3572, - "source": 890, + "teal": 3570, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3610, - 3611 + 3319, + 3320 ] }, { - "teal": 3573, - "source": 890, + "teal": 3571, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3612, - 3613 + 3321, + 3322 ] }, { - "teal": 3574, - "source": 890, + "teal": 3572, + "source": "contracts/stakingPool.algo.ts:890", "pc": [ - 3614, - 3615 + 3323 ] }, { "teal": 3575, - "source": 890, + "source": "contracts/stakingPool.algo.ts:890", + "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}", "pc": [ - 3616 + 3324 ] }, { - "teal": 3578, - "source": 890, - "errorMessage": "transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}", + "teal": 3587, + "source": "contracts/stakingPool.algo.ts:891", "pc": [ - 3617 + 3325 ] }, { - "teal": 3590, - "source": 891, + "teal": 3588, + "source": "contracts/stakingPool.algo.ts:891", "pc": [ - 3618 + 3326, + 3327 ] }, { - "teal": 3591, - "source": 891, + "teal": 3589, + "source": "contracts/stakingPool.algo.ts:891", "pc": [ - 3619, - 3620 + 3328, + 3329 ] }, { - "teal": 3592, - "source": 891, + "teal": 3593, + "source": "contracts/stakingPool.algo.ts:892", "pc": [ - 3621, - 3622 + 3330, + 3331 ] }, { - "teal": 3596, - "source": 892, + "teal": 3594, + "source": "contracts/stakingPool.algo.ts:892", "pc": [ - 3623, - 3624 + 3332, + 3333 ] }, { - "teal": 3597, - "source": 892, + "teal": 3598, + "source": "contracts/stakingPool.algo.ts:893", "pc": [ - 3625, - 3626 + 3334, + 3335 ] }, { - "teal": 3601, - "source": 893, + "teal": 3599, + "source": "contracts/stakingPool.algo.ts:893", "pc": [ - 3627, - 3628 + 3336, + 3337 ] }, { - "teal": 3602, - "source": 893, + "teal": 3603, + "source": "contracts/stakingPool.algo.ts:894", "pc": [ - 3629, - 3630 + 3338, + 3339 ] }, { - "teal": 3606, - "source": 894, + "teal": 3604, + "source": "contracts/stakingPool.algo.ts:894", "pc": [ - 3631, - 3632 + 3340, + 3341 ] }, { - "teal": 3607, - "source": 894, + "teal": 3608, + "source": "contracts/stakingPool.algo.ts:895", "pc": [ - 3633, - 3634 + 3342, + 3343 ] }, { - "teal": 3611, - "source": 895, + "teal": 3609, + "source": "contracts/stakingPool.algo.ts:895", "pc": [ - 3635, - 3636 + 3344, + 3345 ] }, { - "teal": 3612, - "source": 895, + "teal": 3613, + "source": "contracts/stakingPool.algo.ts:896", "pc": [ - 3637, - 3638 + 3346, + 3347 ] }, { - "teal": 3616, - "source": 896, + "teal": 3614, + "source": "contracts/stakingPool.algo.ts:896", "pc": [ - 3639, - 3640 + 3348, + 3349 ] }, { - "teal": 3617, - "source": 896, + "teal": 3618, + "source": "contracts/stakingPool.algo.ts:897", "pc": [ - 3641, - 3642 + 3350, + 3351 ] }, { - "teal": 3621, - "source": 897, + "teal": 3619, + "source": "contracts/stakingPool.algo.ts:897", "pc": [ - 3643, - 3644 + 3352, + 3353 ] }, { - "teal": 3622, - "source": 897, + "teal": 3623, + "source": "contracts/stakingPool.algo.ts:898", "pc": [ - 3645, - 3646 + 3354, + 3355 ] }, { - "teal": 3626, - "source": 898, + "teal": 3624, + "source": "contracts/stakingPool.algo.ts:898", "pc": [ - 3647, - 3648 + 3356, + 3357 ] }, { "teal": 3627, - "source": 898, + "source": "contracts/stakingPool.algo.ts:891", "pc": [ - 3649, - 3650 + 3358 ] }, { - "teal": 3630, - "source": 891, + "teal": 3628, + "source": "contracts/stakingPool.algo.ts:879", "pc": [ - 3651 + 3359 ] }, { - "teal": 3631, - "source": 879, + "teal": 3633, + "source": "contracts/stakingPool.algo.ts:907", "pc": [ - 3652 + 3360, + 3361, + 3362 ] }, { - "teal": 3636, - "source": 907, + "teal": 3634, + "source": "contracts/stakingPool.algo.ts:907", "pc": [ - 3653, - 3654, - 3655 + 3363 ] }, { - "teal": 3637, - "source": 907, + "teal": 3635, + "source": "contracts/stakingPool.algo.ts:907", "pc": [ - 3656 + 3364 ] }, { - "teal": 3638, - "source": 907, + "teal": 3642, + "source": "contracts/stakingPool.algo.ts:907", "pc": [ - 3657 + 3365, + 3366, + 3367 ] }, { - "teal": 3645, - "source": 907, + "teal": 3647, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3658, - 3659, - 3660 + 3368, + 3369 ] }, { - "teal": 3650, - "source": 910, + "teal": 3648, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3661, - 3662 + 3370 ] }, { - "teal": 3651, - "source": 910, + "teal": 3649, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3663 + 3371 ] }, { - "teal": 3652, - "source": 910, + "teal": 3650, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3664 + 3372, + 3373 ] }, { - "teal": 3653, - "source": 910, + "teal": 3651, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3665, - 3666 + 3374 ] }, { - "teal": 3654, - "source": 910, + "teal": 3652, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3667 + 3375 ] }, { - "teal": 3655, - "source": 910, + "teal": 3653, + "source": "contracts/stakingPool.algo.ts:910", "pc": [ - 3668 + 3376, + 3377, + 3378 ] }, { - "teal": 3656, - "source": 910, + "teal": 3658, + "source": "contracts/stakingPool.algo.ts:911", "pc": [ - 3669, - 3670, - 3671 + 3379, + 3380, + 3381 ] }, { "teal": 3661, - "source": 911, + "source": "contracts/stakingPool.algo.ts:911", + "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 3672, - 3673, - 3674 + 3382 ] }, { - "teal": 3664, - "source": 911, - "errorMessage": "can only be called by owner or manager of validator", + "teal": 3666, + "source": "contracts/stakingPool.algo.ts:914", "pc": [ - 3675 + 3383 ] }, { - "teal": 3669, - "source": 914, + "teal": 3667, + "source": "contracts/stakingPool.algo.ts:914", "pc": [ - 3676 + 3384, + 3385 ] }, { - "teal": 3670, - "source": 914, + "teal": 3668, + "source": "contracts/stakingPool.algo.ts:914", "pc": [ - 3677, - 3678 + 3386, + 3387 ] }, { "teal": 3671, - "source": 914, + "source": "contracts/stakingPool.algo.ts:914", "pc": [ - 3679, - 3680 + 3388 ] }, { - "teal": 3674, - "source": 914, + "teal": 3672, + "source": "contracts/stakingPool.algo.ts:914", "pc": [ - 3681 + 3389, + 3390 ] }, { "teal": 3675, - "source": 914, + "source": "contracts/stakingPool.algo.ts:914", "pc": [ - 3682, - 3683 + 3391 ] }, { - "teal": 3678, - "source": 914, + "teal": 3676, + "source": "contracts/stakingPool.algo.ts:907", "pc": [ - 3684 + 3392 ] }, { - "teal": 3679, - "source": 907, + "teal": 3681, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3685 + 3393, + 3394, + 3395 ] }, { - "teal": 3684, - "source": 920, + "teal": 3682, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3686, - 3687, - 3688 + 3396, + 3397, + 3398 ] }, { "teal": 3685, - "source": 920, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3689, - 3690, - 3691 + 3399, + 3400, + 3401 ] }, { - "teal": 3688, - "source": 920, + "teal": 3686, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3692, - 3693, - 3694 + 3402 ] }, { "teal": 3689, - "source": 920, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3695 + 3403, + 3404, + 3405 ] }, { - "teal": 3692, - "source": 920, + "teal": 3690, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3696, - 3697, - 3698 + 3406 ] }, { - "teal": 3693, - "source": 920, + "teal": 3691, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3699 + 3407 ] }, { - "teal": 3694, - "source": 920, + "teal": 3695, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3700 + 3408, + 3409, + 3410 ] }, { - "teal": 3698, - "source": 920, + "teal": 3699, + "source": "contracts/stakingPool.algo.ts:921", "pc": [ - 3701, - 3702, - 3703 + 3411, + 3412, + 3413 ] }, { "teal": 3702, - "source": 921, + "source": "contracts/stakingPool.algo.ts:921", + "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 3704, - 3705, - 3706 + 3414 ] }, { - "teal": 3705, - "source": 921, - "errorMessage": "can only be called by owner or manager of validator", + "teal": 3710, + "source": "contracts/stakingPool.algo.ts:923", "pc": [ - 3707 + 3415 ] }, { - "teal": 3713, - "source": 923, + "teal": 3711, + "source": "contracts/stakingPool.algo.ts:923", "pc": [ - 3708 + 3416 ] }, { - "teal": 3714, - "source": 923, + "teal": 3712, + "source": "contracts/stakingPool.algo.ts:923", "pc": [ - 3709 + 3417, + 3418 ] }, { - "teal": 3715, - "source": 923, + "teal": 3716, + "source": "contracts/stakingPool.algo.ts:924", "pc": [ - 3710, - 3711 + 3419, + 3420 ] }, { - "teal": 3719, - "source": 924, + "teal": 3717, + "source": "contracts/stakingPool.algo.ts:924", "pc": [ - 3712, - 3713 + 3421, + 3422 ] }, { - "teal": 3720, - "source": 924, + "teal": 3721, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3714, - 3715 + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3437, + 3438, + 3439 + ] + }, + { + "teal": 3722, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3440, + 3441 + ] + }, + { + "teal": 3723, + "source": "contracts/stakingPool.algo.ts:925", + "pc": [ + 3442, + 3443 ] }, { "teal": 3724, - "source": 925, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3716, - 3717, - 3718, - 3719, - 3720, - 3721, - 3722, - 3723, - 3724, - 3725, - 3726, - 3727, - 3728, - 3729, - 3730, - 3731, - 3732 + 3444, + 3445 ] }, { "teal": 3725, - "source": 925, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3733, - 3734 + 3446, + 3447 ] }, { "teal": 3726, - "source": 925, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3735, - 3736 + 3448 ] }, { "teal": 3727, - "source": 925, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3737, - 3738 + 3449, + 3450 ] }, { "teal": 3728, - "source": 925, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3739, - 3740 + 3451, + 3452 ] }, { "teal": 3729, - "source": 925, + "source": "contracts/stakingPool.algo.ts:925", "pc": [ - 3741 + 3453, + 3454 ] }, { - "teal": 3730, - "source": 925, + "teal": 3733, + "source": "contracts/stakingPool.algo.ts:926", "pc": [ - 3742, - 3743 + 3455, + 3456 ] }, { - "teal": 3731, - "source": 925, + "teal": 3734, + "source": "contracts/stakingPool.algo.ts:926", "pc": [ - 3744, - 3745 + 3457, + 3458 ] }, { - "teal": 3732, - "source": 925, + "teal": 3737, + "source": "contracts/stakingPool.algo.ts:923", "pc": [ - 3746, - 3747 + 3459 ] }, { - "teal": 3736, - "source": 926, + "teal": 3738, + "source": "contracts/stakingPool.algo.ts:923", "pc": [ - 3748, - 3749 + 3460, + 3461 ] }, { - "teal": 3737, - "source": 926, + "teal": 3741, + "source": "contracts/stakingPool.algo.ts:923", "pc": [ - 3750, - 3751 + 3462 ] }, { - "teal": 3740, - "source": 923, + "teal": 3742, + "source": "contracts/stakingPool.algo.ts:920", "pc": [ - 3752 + 3463 ] }, { - "teal": 3741, - "source": 923, + "teal": 3747, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3753, - 3754 + 3464, + 3465 ] }, { - "teal": 3744, - "source": 923, + "teal": 3750, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3755 + 3466, + 3467, + 3468 ] }, { - "teal": 3745, - "source": 920, + "teal": 3751, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3756 + 3469 ] }, { - "teal": 3750, - "source": 936, + "teal": 3752, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3757, - 3758 + 3470 ] }, { "teal": 3753, - "source": 936, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3759, - 3760, - 3761 + 3471, + 3472 ] }, { "teal": 3754, - "source": 936, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3762 + 3473 ] }, { - "teal": 3755, - "source": 936, + "teal": 3757, + "source": "contracts/stakingPool.algo.ts:936", + "errorMessage": "argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)", "pc": [ - 3763 + 3474 ] }, { - "teal": 3756, - "source": 936, + "teal": 3760, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3764, - 3765 + 3475, + 3476, + 3477 ] }, { - "teal": 3757, - "source": 936, + "teal": 3761, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3766 + 3478 ] }, { - "teal": 3760, - "source": 936, - "errorMessage": "argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)", + "teal": 3762, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3767 + 3479 ] }, { "teal": 3763, - "source": 936, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3768, - 3769, - 3770 + 3480 ] }, { "teal": 3764, - "source": 936, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3771 + 3481 ] }, { - "teal": 3765, - "source": 936, + "teal": 3773, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3772 + 3482, + 3483, + 3484 ] }, { - "teal": 3766, - "source": 936, + "teal": 3776, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3773 + 3485 ] }, { - "teal": 3767, - "source": 936, + "teal": 3780, + "source": "contracts/stakingPool.algo.ts:937", "pc": [ - 3774 + 3486 ] }, { - "teal": 3776, - "source": 936, + "teal": 3781, + "source": "contracts/stakingPool.algo.ts:937", "pc": [ - 3775, - 3776, - 3777 + 3487 ] }, { - "teal": 3779, - "source": 936, + "teal": 3782, + "source": "contracts/stakingPool.algo.ts:937", "pc": [ - 3778, - 3779 + 3488, + 3489 ] }, { "teal": 3783, - "source": 937, + "source": "contracts/stakingPool.algo.ts:937", "pc": [ - 3780 + 3490, + 3491, + 3492 ] }, { "teal": 3784, - "source": 937, + "source": "contracts/stakingPool.algo.ts:937", "pc": [ - 3781 + 3493 ] }, { "teal": 3785, - "source": 937, + "source": "contracts/stakingPool.algo.ts:937", "pc": [ - 3782, - 3783 + 3494 ] }, { - "teal": 3786, - "source": 937, + "teal": 3788, + "source": "contracts/stakingPool.algo.ts:937", + "errorMessage": "caller must be part of same validator set!", "pc": [ - 3784, - 3785, - 3786 + 3495 ] }, { - "teal": 3787, - "source": 937, + "teal": 3792, + "source": "contracts/stakingPool.algo.ts:938", "pc": [ - 3787 + 3496, + 3497 ] }, { - "teal": 3788, - "source": 937, + "teal": 3793, + "source": "contracts/stakingPool.algo.ts:938", "pc": [ - 3788 + 3498 ] }, { - "teal": 3791, - "source": 937, - "errorMessage": "caller must be part of same validator set!", + "teal": 3794, + "source": "contracts/stakingPool.algo.ts:938", "pc": [ - 3789 + 3499 ] }, { "teal": 3795, - "source": 938, + "source": "contracts/stakingPool.algo.ts:938", "pc": [ - 3790 + 3500 ] }, { - "teal": 3796, - "source": 938, + "teal": 3798, + "source": "contracts/stakingPool.algo.ts:938", + "errorMessage": "callee must be pool 1", "pc": [ - 3791 + 3501 ] }, { - "teal": 3797, - "source": 938, + "teal": 3802, + "source": "contracts/stakingPool.algo.ts:939", "pc": [ - 3792 + 3502, + 3503 ] }, { - "teal": 3798, - "source": 938, + "teal": 3803, + "source": "contracts/stakingPool.algo.ts:939", "pc": [ - 3793 + 3504, + 3505, + 3506 ] }, { - "teal": 3801, - "source": 938, - "errorMessage": "callee must be pool 1", + "teal": 3804, + "source": "contracts/stakingPool.algo.ts:939", "pc": [ - 3794 + 3507 ] }, { "teal": 3805, - "source": 939, + "source": "contracts/stakingPool.algo.ts:939", "pc": [ - 3795, - 3796 + 3508 ] }, { "teal": 3806, - "source": 939, + "source": "contracts/stakingPool.algo.ts:939", "pc": [ - 3797, - 3798, - 3799 + 3509 ] }, { - "teal": 3807, - "source": 939, + "teal": 3809, + "source": "contracts/stakingPool.algo.ts:939", + "errorMessage": "caller must NOT be pool 1", "pc": [ - 3800 + 3510 ] }, { - "teal": 3808, - "source": 939, + "teal": 3816, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3801 + 3511 ] }, { - "teal": 3809, - "source": 939, + "teal": 3817, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3802 + 3512 ] }, { - "teal": 3812, - "source": 939, - "errorMessage": "caller must NOT be pool 1", + "teal": 3818, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3803 + 3513, + 3514 ] }, { "teal": 3819, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3804 + 3515, + 3516 ] }, { "teal": 3820, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3805 + 3517, + 3518 ] }, { - "teal": 3821, - "source": 941, + "teal": 3824, + "source": "contracts/stakingPool.algo.ts:942", "pc": [ - 3806, - 3807 + 3519 ] }, { - "teal": 3822, - "source": 941, + "teal": 3825, + "source": "contracts/stakingPool.algo.ts:942", "pc": [ - 3808, - 3809 + 3520 ] }, { - "teal": 3823, - "source": 941, + "teal": 3826, + "source": "contracts/stakingPool.algo.ts:942", "pc": [ - 3810, - 3811 + 3521, + 3522 ] }, { - "teal": 3827, - "source": 942, + "teal": 3830, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3812 + 3523, + 3524 ] }, { - "teal": 3828, - "source": 942, + "teal": 3831, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3813 + 3525, + 3526, + 3527 ] }, { - "teal": 3829, - "source": 942, + "teal": 3832, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3814, - 3815 + 3528 ] }, { "teal": 3833, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3816, - 3817 + 3529 ] }, { "teal": 3834, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3818, - 3819, - 3820 + 3530, + 3531 ] }, { "teal": 3835, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3821 + 3532, + 3533 ] }, { "teal": 3836, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3822 + 3534, + 3535, + 3536 ] }, { "teal": 3837, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3823, - 3824 + 3537 ] }, { "teal": 3838, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3825, - 3826 + 3538 ] }, { "teal": 3839, - "source": 943, + "source": "contracts/stakingPool.algo.ts:943", "pc": [ - 3827, - 3828, - 3829 + 3539, + 3540 ] }, { - "teal": 3840, - "source": 943, + "teal": 3842, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3830 + 3541 ] }, { - "teal": 3841, - "source": 943, + "teal": 3843, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3831 + 3542, + 3543 ] }, { - "teal": 3842, - "source": 943, + "teal": 3846, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3832, - 3833 + 3544 ] }, { - "teal": 3845, - "source": 941, + "teal": 3847, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3834 + 3545, + 3546 ] }, { - "teal": 3846, - "source": 941, + "teal": 3848, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3835, - 3836 + 3547 ] }, { "teal": 3849, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3837 + 3548 ] }, { "teal": 3850, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3838, - 3839 + 3549, + 3550 ] }, { "teal": 3851, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3840 + 3551, + 3552, + 3553 ] }, { "teal": 3852, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3841 + 3554 ] }, { "teal": 3853, - "source": 941, + "source": "contracts/stakingPool.algo.ts:941", "pc": [ - 3842, - 3843 + 3555, + 3556 ] }, { - "teal": 3854, - "source": 941, + "teal": 3857, + "source": "contracts/stakingPool.algo.ts:945", "pc": [ - 3844, - 3845, - 3846 + 3557, + 3558 ] }, { - "teal": 3855, - "source": 941, + "teal": 3858, + "source": "contracts/stakingPool.algo.ts:945", "pc": [ - 3847 + 3559, + 3560 ] }, { - "teal": 3856, - "source": 941, + "teal": 3859, + "source": "contracts/stakingPool.algo.ts:945", "pc": [ - 3848, - 3849 + 3561, + 3562, + 3563 ] }, { "teal": 3860, - "source": 945, + "source": "contracts/stakingPool.algo.ts:945", "pc": [ - 3850, - 3851 + 3564 ] }, { "teal": 3861, - "source": 945, + "source": "contracts/stakingPool.algo.ts:945", "pc": [ - 3852, - 3853 + 3565 ] }, { "teal": 3862, - "source": 945, + "source": "contracts/stakingPool.algo.ts:945", "pc": [ - 3854, - 3855, - 3856 + 3566 ] }, { - "teal": 3863, - "source": 945, + "teal": 3866, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3857 + 3567, + 3568 ] }, { - "teal": 3864, - "source": 945, + "teal": 3867, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3858 + 3569, + 3570 ] }, { - "teal": 3865, - "source": 945, + "teal": 3868, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3859 + 3571, + 3572, + 3573 ] }, { "teal": 3869, - "source": 946, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3860, - 3861 + 3574 ] }, { "teal": 3870, - "source": 946, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3862, - 3863 + 3575, + 3576 ] }, { "teal": 3871, - "source": 946, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3864, - 3865, - 3866 + 3577 ] }, { "teal": 3872, - "source": 946, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3867 + 3578 ] }, { "teal": 3873, - "source": 946, + "source": "contracts/stakingPool.algo.ts:946", "pc": [ - 3868, - 3869 + 3579 ] }, { - "teal": 3874, - "source": 946, + "teal": 3880, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3870 + 3580 ] }, { - "teal": 3875, - "source": 946, + "teal": 3881, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3871 + 3581 ] }, { - "teal": 3876, - "source": 946, + "teal": 3882, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3872 + 3582, + 3583 ] }, { "teal": 3883, - "source": 948, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3873 + 3584, + 3585 ] }, { "teal": 3884, - "source": 948, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3874 + 3586, + 3587 ] }, { - "teal": 3885, - "source": 948, + "teal": 3888, + "source": "contracts/stakingPool.algo.ts:949", "pc": [ - 3875, - 3876 + 3588 ] }, { - "teal": 3886, - "source": 948, + "teal": 3889, + "source": "contracts/stakingPool.algo.ts:949", "pc": [ - 3877, - 3878 + 3589 ] }, { - "teal": 3887, - "source": 948, + "teal": 3890, + "source": "contracts/stakingPool.algo.ts:949", "pc": [ - 3879, - 3880 + 3590, + 3591 ] }, { - "teal": 3891, - "source": 949, + "teal": 3894, + "source": "contracts/stakingPool.algo.ts:950", "pc": [ - 3881 + 3592 ] }, { - "teal": 3892, - "source": 949, + "teal": 3895, + "source": "contracts/stakingPool.algo.ts:950", "pc": [ - 3882 + 3593 ] }, { - "teal": 3893, - "source": 949, + "teal": 3896, + "source": "contracts/stakingPool.algo.ts:950", "pc": [ - 3883, - 3884 + 3594 ] }, { "teal": 3897, - "source": 950, + "source": "contracts/stakingPool.algo.ts:950", "pc": [ - 3885 + 3595, + 3596 ] }, { - "teal": 3898, - "source": 950, + "teal": 3900, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3886 + 3597 ] }, { - "teal": 3899, - "source": 950, + "teal": 3901, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3887 + 3598, + 3599 ] }, { - "teal": 3900, - "source": 950, + "teal": 3904, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3888, - 3889 + 3600 ] }, { - "teal": 3903, - "source": 948, + "teal": 3905, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3890 + 3601, + 3602 ] }, { - "teal": 3904, - "source": 948, + "teal": 3906, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3891, - 3892 + 3603 ] }, { "teal": 3907, - "source": 948, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3893 + 3604 ] }, { "teal": 3908, - "source": 948, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3894, - 3895 + 3605, + 3606 ] }, { "teal": 3909, - "source": 948, + "source": "contracts/stakingPool.algo.ts:948", "pc": [ - 3896 + 3607, + 3608, + 3609 ] }, { - "teal": 3910, - "source": 948, + "teal": 3912, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3897 + 3610, + 3611 ] }, { - "teal": 3911, - "source": 948, + "teal": 3913, + "source": "contracts/stakingPool.algo.ts:936", "pc": [ - 3898, - 3899 + 3612 ] }, { - "teal": 3912, - "source": 948, + "teal": 3917, + "source": "contracts/stakingPool.algo.ts:954", "pc": [ - 3900, - 3901, - 3902 + 3613, + 3614, + 3615 ] }, { - "teal": 3915, - "source": 936, + "teal": 3920, + "source": "contracts/stakingPool.algo.ts:954", "pc": [ - 3903, - 3904 + 3616 ] }, { - "teal": 3916, - "source": 936, + "teal": 3927, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3905 + 3617 ] }, { - "teal": 3920, - "source": 954, + "teal": 3928, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3906, - 3907, - 3908 + 3618 ] }, { - "teal": 3923, - "source": 954, + "teal": 3929, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3909, - 3910 + 3619, + 3620 ] }, { "teal": 3930, - "source": 955, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3911 + 3621, + 3622, + 3623, + 3624, + 3625, + 3626 ] }, { "teal": 3931, - "source": 955, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3912 + 3627, + 3628 ] }, { - "teal": 3932, - "source": 955, + "teal": 3935, + "source": "contracts/stakingPool.algo.ts:956", "pc": [ - 3913, - 3914 + 3629 ] }, { - "teal": 3933, - "source": 955, + "teal": 3936, + "source": "contracts/stakingPool.algo.ts:956", "pc": [ - 3915, - 3916, - 3917, - 3918, - 3919, - 3920 + 3630 ] }, { - "teal": 3934, - "source": 955, + "teal": 3937, + "source": "contracts/stakingPool.algo.ts:956", "pc": [ - 3921, - 3922 + 3631, + 3632 ] }, { - "teal": 3938, - "source": 956, + "teal": 3941, + "source": "contracts/stakingPool.algo.ts:957", "pc": [ - 3923 + 3633 ] }, { - "teal": 3939, - "source": 956, + "teal": 3942, + "source": "contracts/stakingPool.algo.ts:957", "pc": [ - 3924 + 3634 ] }, { - "teal": 3940, - "source": 956, + "teal": 3943, + "source": "contracts/stakingPool.algo.ts:957", "pc": [ - 3925, - 3926 + 3635 ] }, { "teal": 3944, - "source": 957, + "source": "contracts/stakingPool.algo.ts:957", "pc": [ - 3927 + 3636, + 3637 ] }, { - "teal": 3945, - "source": 957, + "teal": 3947, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3928 + 3638 ] }, { - "teal": 3946, - "source": 957, + "teal": 3948, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3929 + 3639, + 3640 ] }, { - "teal": 3947, - "source": 957, + "teal": 3951, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3930, - 3931 + 3641 ] }, { - "teal": 3950, - "source": 955, + "teal": 3952, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3932 + 3642, + 3643 ] }, { - "teal": 3951, - "source": 955, + "teal": 3953, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3933, - 3934 + 3644 ] }, { "teal": 3954, - "source": 955, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3935 + 3645 ] }, { "teal": 3955, - "source": 955, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3936, - 3937 + 3646, + 3647 ] }, { "teal": 3956, - "source": 955, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3938 + 3648, + 3649, + 3650 ] }, { "teal": 3957, - "source": 955, + "source": "contracts/stakingPool.algo.ts:955", "pc": [ - 3939 + 3651, + 3652 ] }, { - "teal": 3958, - "source": 955, + "teal": 3961, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3940, - 3941 + 3653, + 3654 ] }, { - "teal": 3959, - "source": 955, + "teal": 3962, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3942, - 3943, - 3944 + 3655, + 3656 ] }, { - "teal": 3960, - "source": 955, + "teal": 3963, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3945, - 3946 + 3657, + 3658, + 3659 ] }, { "teal": 3964, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3947, - 3948 + 3660 ] }, { "teal": 3965, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3949, - 3950 + 3661 ] }, { "teal": 3966, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3951, - 3952, - 3953 + 3662, + 3663, + 3664 ] }, { "teal": 3967, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3954 + 3665, + 3666 ] }, { "teal": 3968, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3955 + 3667, + 3668 ] }, { "teal": 3969, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3956, - 3957, - 3958 + 3669, + 3670, + 3671 ] }, { "teal": 3970, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3959, - 3960 + 3672 ] }, { "teal": 3971, - "source": 959, + "source": "contracts/stakingPool.algo.ts:959", "pc": [ - 3961, - 3962 + 3673 ] }, { - "teal": 3972, - "source": 959, + "teal": 3975, + "source": "contracts/stakingPool.algo.ts:954", "pc": [ - 3963, - 3964, - 3965 + 3674, + 3675 ] }, { - "teal": 3973, - "source": 959, + "teal": 3976, + "source": "contracts/stakingPool.algo.ts:954", "pc": [ - 3966 + 3676 ] }, { - "teal": 3974, - "source": 959, + "teal": 3983, + "source": "contracts/stakingPool.algo.ts:966", "pc": [ - 3967 + 3677, + 3678, + 3679 ] }, { - "teal": 3978, - "source": 954, + "teal": 3986, + "source": "contracts/stakingPool.algo.ts:966", "pc": [ - 3968, - 3969 + 3680 ] }, { - "teal": 3979, - "source": 954, + "teal": 3990, + "source": "contracts/stakingPool.algo.ts:967", "pc": [ - 3970 + 3681, + 3682, + 3683 ] }, { - "teal": 3986, - "source": 966, + "teal": 3991, + "source": "contracts/stakingPool.algo.ts:967", "pc": [ - 3971, - 3972, - 3973 + 3684, + 3685 ] }, { - "teal": 3989, - "source": 966, + "teal": 3995, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3974, - 3975 + 3686, + 3687 ] }, { - "teal": 3993, - "source": 967, + "teal": 3996, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3976, - 3977, - 3978 + 3688, + 3689 ] }, { - "teal": 3994, - "source": 967, + "teal": 3997, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3979, - 3980 + 3690 ] }, { "teal": 3998, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3981, - 3982 + 3691 ] }, { "teal": 3999, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3983, - 3984 + 3692, + 3693 ] }, { "teal": 4000, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3985 + 3694 ] }, { "teal": 4001, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3986 + 3695 ] }, { "teal": 4002, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3987, - 3988 + 3696 ] }, { "teal": 4003, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3989 + 3697 ] }, { "teal": 4004, - "source": 969, + "source": "contracts/stakingPool.algo.ts:969", "pc": [ - 3990 + 3698 ] }, { - "teal": 4005, - "source": 969, + "teal": 4007, + "source": "contracts/stakingPool.algo.ts:969", + "errorMessage": "wideRatio failed", "pc": [ - 3991 + 3699 ] }, { - "teal": 4006, - "source": 969, + "teal": 4010, + "source": "contracts/stakingPool.algo.ts:966", "pc": [ - 3992 + 3700, + 3701 ] }, { - "teal": 4007, - "source": 969, + "teal": 4011, + "source": "contracts/stakingPool.algo.ts:966", "pc": [ - 3993 + 3702 ] }, { - "teal": 4010, - "source": 969, - "errorMessage": "wideRatio failed", + "teal": 4015, + "source": "contracts/stakingPool.algo.ts:972", "pc": [ - 3994 + 3703, + 3704, + 3705 ] }, { - "teal": 4013, - "source": 966, + "teal": 4020, + "source": "contracts/stakingPool.algo.ts:974", "pc": [ - 3995, - 3996 + 3706, + 3707 ] }, { - "teal": 4014, - "source": 966, + "teal": 4021, + "source": "contracts/stakingPool.algo.ts:974", "pc": [ - 3997 + 3708, + 3709 ] }, { - "teal": 4018, - "source": 972, + "teal": 4022, + "source": "contracts/stakingPool.algo.ts:974", "pc": [ - 3998, - 3999, - 4000 + 3710 ] }, { "teal": 4023, - "source": 974, + "source": "contracts/stakingPool.algo.ts:974", "pc": [ - 4001, - 4002 + 3711 ] }, { "teal": 4024, - "source": 974, + "source": "contracts/stakingPool.algo.ts:974", "pc": [ - 4003, - 4004 + 3712, + 3713, + 3714 ] }, { - "teal": 4025, - "source": 974, + "teal": 4029, + "source": "contracts/stakingPool.algo.ts:975", "pc": [ - 4005 + 3715, + 3716 ] }, { - "teal": 4026, - "source": 974, + "teal": 4030, + "source": "contracts/stakingPool.algo.ts:975", "pc": [ - 4006 + 3717 ] }, { - "teal": 4027, - "source": 974, + "teal": 4035, + "source": "contracts/stakingPool.algo.ts:977", "pc": [ - 4007, - 4008, - 4009 + 3718 ] }, { - "teal": 4032, - "source": 975, + "teal": 4036, + "source": "contracts/stakingPool.algo.ts:972", "pc": [ - 4010, - 4011 + 3719 ] }, { - "teal": 4033, - "source": 975, + "teal": 4040, + "source": "contracts/stakingPool.algo.ts:980", "pc": [ - 4012 + 3720, + 3721, + 3722 ] }, { - "teal": 4038, - "source": 977, + "teal": 4044, + "source": "contracts/stakingPool.algo.ts:981", "pc": [ - 4013 + 3723 ] }, { - "teal": 4039, - "source": 972, + "teal": 4045, + "source": "contracts/stakingPool.algo.ts:980", "pc": [ - 4014 + 3724 ] }, { - "teal": 4043, - "source": 980, + "teal": 4051, + "source": "contracts/stakingPool.algo.ts:987", "pc": [ - 4015, - 4016, - 4017 + 3725, + 3726, + 3727 ] }, { - "teal": 4047, - "source": 981, + "teal": 4054, + "source": "contracts/stakingPool.algo.ts:987", "pc": [ - 4018 + 3728 ] }, { - "teal": 4048, - "source": 980, + "teal": 4055, + "source": "contracts/stakingPool.algo.ts:987", "pc": [ - 4019 + 3729, + 3730 ] }, { - "teal": 4054, - "source": 987, + "teal": 4059, + "source": "contracts/stakingPool.algo.ts:988", "pc": [ - 4020, - 4021, - 4022 + 3731, + 3732 ] }, { - "teal": 4057, - "source": 987, + "teal": 4060, + "source": "contracts/stakingPool.algo.ts:988", "pc": [ - 4023, - 4024 + 3733 ] }, { - "teal": 4058, - "source": 987, + "teal": 4061, + "source": "contracts/stakingPool.algo.ts:988", "pc": [ - 4025, - 4026 + 3734 ] }, { "teal": 4062, - "source": 988, + "source": "contracts/stakingPool.algo.ts:988", "pc": [ - 4027, - 4028 + 3735, + 3736 ] }, { - "teal": 4063, - "source": 988, + "teal": 4067, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4029 + 3737, + 3738 ] }, { - "teal": 4064, - "source": 988, + "teal": 4068, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4030 + 3739, + 3740 ] }, { - "teal": 4065, - "source": 988, + "teal": 4069, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4031, - 4032 + 3741 ] }, { "teal": 4070, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4033, - 4034 + 3742, + 3743 ] }, { "teal": 4071, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4035, - 4036 + 3744 ] }, { "teal": 4072, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4037 + 3745 ] }, { "teal": 4073, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4038, - 4039 + 3746 ] }, { "teal": 4074, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4040 + 3747 ] }, { - "teal": 4075, - "source": 989, + "teal": 4077, + "source": "contracts/stakingPool.algo.ts:989", + "errorMessage": "currentBinSize as uint64 overflowed 64 bits", "pc": [ - 4041 + 3748 ] }, { - "teal": 4076, - "source": 989, + "teal": 4078, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4042 + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3757, + 3758 ] }, { - "teal": 4077, - "source": 989, + "teal": 4079, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4043 + 3759 ] }, { "teal": 4080, - "source": 989, - "errorMessage": "currentBinSize as uint64 overflowed 64 bits", + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4044 + 3760 ] }, { "teal": 4081, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4045, - 4046, - 4047, - 4048, - 4049, - 4050, - 4051, - 4052, - 4053, - 4054 + 3761 ] }, { "teal": 4082, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4055 + 3762 ] }, { "teal": 4083, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4056 + 3763, + 3764 ] }, { "teal": 4084, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4057 + 3765 ] }, { "teal": 4085, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4058 + 3766 ] }, { "teal": 4086, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4059, - 4060 + 3767 ] }, { "teal": 4087, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4061 + 3768 ] }, { "teal": 4088, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4062 + 3769 ] }, { "teal": 4089, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4063 + 3770 ] }, { "teal": 4090, - "source": 989, + "source": "contracts/stakingPool.algo.ts:989", "pc": [ - 4064 + 3771, + 3772, + 3773 ] }, { - "teal": 4091, - "source": 989, + "teal": 4096, + "source": "contracts/stakingPool.algo.ts:990", "pc": [ - 4065 + 3774, + 3775 ] }, { - "teal": 4092, - "source": 989, + "teal": 4097, + "source": "contracts/stakingPool.algo.ts:990", "pc": [ - 4066 + 3776, + 3777 ] }, { - "teal": 4093, - "source": 989, + "teal": 4098, + "source": "contracts/stakingPool.algo.ts:990", "pc": [ - 4067, - 4068, - 4069 + 3778 ] }, { "teal": 4099, - "source": 990, + "source": "contracts/stakingPool.algo.ts:990", "pc": [ - 4070, - 4071 + 3779, + 3780, + 3781 ] }, { - "teal": 4100, - "source": 990, + "teal": 4104, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4072, - 4073 + 3782 ] }, { - "teal": 4101, - "source": 990, + "teal": 4105, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4074 + 3783 ] }, { - "teal": 4102, - "source": 990, + "teal": 4106, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4075, - 4076, - 4077 + 3784, + 3785 ] }, { "teal": 4107, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4078 + 3786 ] }, { "teal": 4108, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4079 + 3787, + 3788 ] }, { "teal": 4109, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4080, - 4081 + 3789, + 3790 ] }, { "teal": 4110, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4082 + 3791 ] }, { "teal": 4111, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4083, - 4084 + 3792, + 3793 ] }, { "teal": 4112, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4085, - 4086 + 3794, + 3795 ] }, { "teal": 4113, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4087 + 3796, + 3797 ] }, { "teal": 4114, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4088, - 4089 + 3798, + 3799 ] }, { "teal": 4115, - "source": 991, + "source": "contracts/stakingPool.algo.ts:991", "pc": [ - 4090, - 4091 + 3800 ] }, { - "teal": 4116, - "source": 991, + "teal": 4120, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4092, - 4093 + 3801, + 3802 ] }, { - "teal": 4117, - "source": 991, + "teal": 4121, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4094, - 4095 + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820 ] }, { - "teal": 4118, - "source": 991, + "teal": 4122, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4096 + 3821 ] }, { "teal": 4123, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4097, - 4098 + 3822 ] }, { "teal": 4124, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4099, - 4100, - 4101, - 4102, - 4103, - 4104, - 4105, - 4106, - 4107, - 4108, - 4109, - 4110, - 4111, - 4112, - 4113, - 4114, - 4115, - 4116 + 3823 ] }, { "teal": 4125, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4117 + 3824, + 3825 ] }, { "teal": 4126, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4118 + 3826 ] }, { - "teal": 4127, - "source": 993, + "teal": 4129, + "source": "contracts/stakingPool.algo.ts:993", + "errorMessage": "currentBinSize * (365 as uint128) overflowed 128 bits", "pc": [ - 4119 + 3827 ] }, { - "teal": 4128, - "source": 993, + "teal": 4130, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4120, - 4121 + 3828, + 3829 ] }, { - "teal": 4129, - "source": 993, + "teal": 4131, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4122 + 3830 ] }, { "teal": 4132, - "source": 993, - "errorMessage": "currentBinSize * (365 as uint128) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4123 + 3831 ] }, { "teal": 4133, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4124, - 4125 + 3832 ] }, { "teal": 4134, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4126 + 3833 ] }, { "teal": 4135, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4127 + 3834, + 3835 ] }, { "teal": 4136, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4128 + 3836 ] }, { "teal": 4137, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4129 + 3837 ] }, { "teal": 4138, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4130, - 4131 + 3838 ] }, { "teal": 4139, - "source": 993, + "source": "contracts/stakingPool.algo.ts:993", "pc": [ - 4132 + 3839, + 3840 ] }, { - "teal": 4140, - "source": 993, + "teal": 4143, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4133 + 3841, + 3842 ] }, { - "teal": 4141, - "source": 993, + "teal": 4144, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4134 + 3843 ] }, { - "teal": 4142, - "source": 993, + "teal": 4145, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4135, - 4136 + 3844, + 3845 ] }, { "teal": 4146, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4137, - 4138 + 3846 ] }, { "teal": 4147, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4139 + 3847 ] }, { "teal": 4148, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4140, - 4141 + 3848 ] }, { "teal": 4149, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4142 + 3849, + 3850 ] }, { "teal": 4150, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4143 + 3851 ] }, { - "teal": 4151, - "source": 994, + "teal": 4153, + "source": "contracts/stakingPool.algo.ts:994", + "errorMessage": "this.stakeAccumulator.value / currentBinSize overflowed 128 bits", "pc": [ - 4144 + 3852 ] }, { - "teal": 4152, - "source": 994, + "teal": 4154, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4145, - 4146 + 3853, + 3854 ] }, { - "teal": 4153, - "source": 994, + "teal": 4155, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4147 + 3855 ] }, { "teal": 4156, - "source": 994, - "errorMessage": "this.stakeAccumulator.value / currentBinSize overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4148 + 3856 ] }, { "teal": 4157, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4149, - 4150 + 3857 ] }, { "teal": 4158, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4151 + 3858 ] }, { "teal": 4159, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4152 + 3859, + 3860 ] }, { "teal": 4160, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4153 + 3861 ] }, { "teal": 4161, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4154 + 3862 ] }, { "teal": 4162, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4155, - 4156 + 3863 ] }, { "teal": 4163, - "source": 994, + "source": "contracts/stakingPool.algo.ts:994", "pc": [ - 4157 + 3864, + 3865 ] }, { - "teal": 4164, - "source": 994, + "teal": 4168, + "source": "contracts/stakingPool.algo.ts:995", "pc": [ - 4158 + 3866, + 3867 ] }, { - "teal": 4165, - "source": 994, + "teal": 4169, + "source": "contracts/stakingPool.algo.ts:995", "pc": [ - 4159 + 3868, + 3869 ] }, { - "teal": 4166, - "source": 994, + "teal": 4170, + "source": "contracts/stakingPool.algo.ts:995", "pc": [ - 4160, - 4161 + 3870 ] }, { "teal": 4171, - "source": 995, + "source": "contracts/stakingPool.algo.ts:995", "pc": [ - 4162, - 4163 + 3871, + 3872, + 3873 ] }, { - "teal": 4172, - "source": 995, + "teal": 4178, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4164, - 4165 + 3874, + 3875 ] }, { - "teal": 4173, - "source": 995, + "teal": 4179, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4166 + 3876 ] }, { - "teal": 4174, - "source": 995, + "teal": 4180, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4167, - 4168, - 4169 + 3877 ] }, { "teal": 4181, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4170, - 4171 + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3885, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895 ] }, { "teal": 4182, - "source": 1000, - "pc": [ - 4172 - ] - }, - { - "teal": 4183, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4173 + 3896 ] }, - { - "teal": 4184, - "source": 1000, - "pc": [ - 4174, - 4175, - 4176, - 4177, - 4178, - 4179, - 4180, - 4181, - 4182, - 4183, - 4184, - 4185, - 4186, - 4187, - 4188, - 4189, - 4190, - 4191 + { + "teal": 4183, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3897, + 3898 + ] + }, + { + "teal": 4184, + "source": "contracts/stakingPool.algo.ts:1000", + "pc": [ + 3899 ] }, { "teal": 4185, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1001", "pc": [ - 4192 + 3900, + 3901 ] }, { "teal": 4186, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1001", "pc": [ - 4193, - 4194 + 3902, + 3903 ] }, { "teal": 4187, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1001", "pc": [ - 4195 + 3904 ] }, { "teal": 4188, - "source": 1001, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4196, - 4197 + 3905 ] }, { "teal": 4189, - "source": 1001, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4198, - 4199 + 3906 ] }, { "teal": 4190, - "source": 1001, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4200 + 3907 ] }, { "teal": 4191, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4201 + 3908, + 3909 ] }, { "teal": 4192, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4202 + 3910 ] }, { - "teal": 4193, - "source": 1000, + "teal": 4195, + "source": "contracts/stakingPool.algo.ts:1000", + "errorMessage": "(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits", "pc": [ - 4203 + 3911 ] }, { - "teal": 4194, - "source": 1000, + "teal": 4196, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4204, - 4205 + 3912, + 3913 ] }, { - "teal": 4195, - "source": 1000, + "teal": 4197, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4206 + 3914 ] }, { "teal": 4198, - "source": 1000, - "errorMessage": "(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4207 + 3915 ] }, { "teal": 4199, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4208, - 4209 + 3916 ] }, { "teal": 4200, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4210 + 3917 ] }, { "teal": 4201, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4211 + 3918, + 3919 ] }, { "teal": 4202, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4212 + 3920 ] }, { "teal": 4203, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4213 + 3921 ] }, { "teal": 4204, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:1000", "pc": [ - 4214, - 4215 + 3922 ] }, { "teal": 4205, - "source": 1000, + "source": "contracts/stakingPool.algo.ts:999", "pc": [ - 4216 + 3923, + 3924 ] }, { - "teal": 4206, - "source": 1000, + "teal": 4209, + "source": "contracts/stakingPool.algo.ts:1003", "pc": [ - 4217 + 3925, + 3926, + 3927, + 3928, + 3929, + 3930, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942 ] }, { - "teal": 4207, - "source": 1000, + "teal": 4210, + "source": "contracts/stakingPool.algo.ts:1003", "pc": [ - 4218 + 3943, + 3944 ] }, { - "teal": 4208, - "source": 999, + "teal": 4215, + "source": "contracts/stakingPool.algo.ts:1005", "pc": [ - 4219, - 4220 + 3945, + 3946 ] }, { - "teal": 4212, - "source": 1003, + "teal": 4216, + "source": "contracts/stakingPool.algo.ts:1005", "pc": [ - 4221, - 4222, - 4223, - 4224, - 4225, - 4226, - 4227, - 4228, - 4229, - 4230, - 4231, - 4232, - 4233, - 4234, - 4235, - 4236, - 4237, - 4238 + 3947, + 3948, + 3949, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3962, + 3963, + 3964 ] }, { - "teal": 4213, - "source": 1003, + "teal": 4217, + "source": "contracts/stakingPool.algo.ts:1005", "pc": [ - 4239, - 4240 + 3965 ] }, { "teal": 4218, - "source": 1005, + "source": "contracts/stakingPool.algo.ts:1005", "pc": [ - 4241, - 4242 + 3966, + 3967, + 3968 ] }, { - "teal": 4219, - "source": 1005, + "teal": 4223, + "source": "contracts/stakingPool.algo.ts:1006", "pc": [ - 4243, - 4244, - 4245, - 4246, - 4247, - 4248, - 4249, - 4250, - 4251, - 4252, - 4253, - 4254, - 4255, - 4256, - 4257, - 4258, - 4259, - 4260 + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3981, + 3982, + 3983, + 3984, + 3985, + 3986 ] }, { - "teal": 4220, - "source": 1005, + "teal": 4224, + "source": "contracts/stakingPool.algo.ts:1006", "pc": [ - 4261 + 3987, + 3988 ] }, { - "teal": 4221, - "source": 1005, + "teal": 4231, + "source": "contracts/stakingPool.algo.ts:1008", "pc": [ - 4262, - 4263, - 4264 + 3989, + 3990 ] }, { - "teal": 4226, - "source": 1006, + "teal": 4232, + "source": "contracts/stakingPool.algo.ts:1008", "pc": [ - 4265, - 4266, - 4267, - 4268, - 4269, - 4270, - 4271, - 4272, - 4273, - 4274, - 4275, - 4276, - 4277, - 4278, - 4279, - 4280, - 4281, - 4282 + 3991 ] }, { - "teal": 4227, - "source": 1006, + "teal": 4233, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4283, - 4284 + 3992 ] }, { "teal": 4234, - "source": 1008, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4285, - 4286 + 3993, + 3994 ] }, { "teal": 4235, - "source": 1008, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4287 + 3995, + 3996 ] }, { "teal": 4236, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4288 + 3997 ] }, { "teal": 4237, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4289, - 4290 + 3998 ] }, { "teal": 4238, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4291, - 4292 + 3999, + 4000 ] }, { "teal": 4239, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4293 + 4001 ] }, { "teal": 4240, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1010", "pc": [ - 4294 + 4002, + 4003 ] }, { "teal": 4241, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1010", "pc": [ - 4295, - 4296 + 4004, + 4005 ] }, { "teal": 4242, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1010", "pc": [ - 4297 + 4006 ] }, { "teal": 4243, - "source": 1010, + "source": "contracts/stakingPool.algo.ts:1010", "pc": [ - 4298, - 4299 + 4007, + 4008 ] }, { "teal": 4244, - "source": 1010, + "source": "contracts/stakingPool.algo.ts:1010", "pc": [ - 4300, - 4301 + 4009 ] }, { "teal": 4245, - "source": 1010, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4302 + 4010 ] }, { "teal": 4246, - "source": 1010, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4303, - 4304 + 4011 ] }, { "teal": 4247, - "source": 1010, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4305 + 4012 ] }, { "teal": 4248, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4306 + 4013, + 4014 ] }, { "teal": 4249, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4307 + 4015 ] }, { - "teal": 4250, - "source": 1009, + "teal": 4252, + "source": "contracts/stakingPool.algo.ts:1009", + "errorMessage": "(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits", "pc": [ - 4308 + 4016 ] }, { - "teal": 4251, - "source": 1009, + "teal": 4253, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4309, - 4310 + 4017, + 4018 ] }, { - "teal": 4252, - "source": 1009, + "teal": 4254, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4311 + 4019 ] }, { "teal": 4255, - "source": 1009, - "errorMessage": "(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4312 + 4020 ] }, { "teal": 4256, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4313, - 4314 + 4021 ] }, { "teal": 4257, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4315 + 4022 ] }, { "teal": 4258, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4316 + 4023, + 4024 ] }, { "teal": 4259, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4317 + 4025 ] }, { "teal": 4260, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4318 + 4026 ] }, { "teal": 4261, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1009", "pc": [ - 4319, - 4320 + 4027 ] }, { "teal": 4262, - "source": 1009, + "source": "contracts/stakingPool.algo.ts:1008", "pc": [ - 4321 + 4028 ] }, { - "teal": 4263, - "source": 1009, + "teal": 4267, + "source": "contracts/stakingPool.algo.ts:1014", "pc": [ - 4322 + 4029, + 4030, + 4031 ] }, { - "teal": 4264, - "source": 1009, + "teal": 4271, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4323 + 4032, + 4033 ] }, { - "teal": 4265, - "source": 1008, + "teal": 4272, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4324 + 4034, + 4035 ] }, { - "teal": 4270, - "source": 1014, + "teal": 4273, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4325, - 4326, - 4327 + 4036 ] }, { "teal": 4274, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4328, - 4329 + 4037 ] }, { "teal": 4275, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4330, - 4331 + 4038, + 4039 ] }, { "teal": 4276, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4332 + 4040 ] }, { "teal": 4277, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4333 + 4041 ] }, { "teal": 4278, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4334, - 4335 + 4042 ] }, { "teal": 4279, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4336 + 4043 ] }, { "teal": 4280, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4337 + 4044 ] }, { "teal": 4281, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4338 + 4045, + 4046 ] }, { "teal": 4282, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4339 + 4047 ] }, { - "teal": 4283, - "source": 1015, + "teal": 4285, + "source": "contracts/stakingPool.algo.ts:1015", + "errorMessage": "(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits", "pc": [ - 4340 + 4048 ] }, { - "teal": 4284, - "source": 1015, + "teal": 4286, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4341, - 4342 + 4049, + 4050 ] }, { - "teal": 4285, - "source": 1015, + "teal": 4287, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4343 + 4051 ] }, { "teal": 4288, - "source": 1015, - "errorMessage": "(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits", + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4344 + 4052 ] }, { "teal": 4289, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4345, - 4346 + 4053 ] }, { "teal": 4290, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4347 + 4054 ] }, { "teal": 4291, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4348 + 4055, + 4056 ] }, { "teal": 4292, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4349 + 4057 ] }, { "teal": 4293, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4350 + 4058 ] }, { "teal": 4294, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4351, - 4352 + 4059 ] }, { "teal": 4295, - "source": 1015, + "source": "contracts/stakingPool.algo.ts:1015", "pc": [ - 4353 + 4060 ] }, { - "teal": 4296, - "source": 1015, + "teal": 4299, + "source": "contracts/stakingPool.algo.ts:1016", "pc": [ - 4354 + 4061, + 4062 ] }, { - "teal": 4297, - "source": 1015, + "teal": 4300, + "source": "contracts/stakingPool.algo.ts:1016", "pc": [ - 4355 + 4063 ] }, { - "teal": 4298, - "source": 1015, + "teal": 4301, + "source": "contracts/stakingPool.algo.ts:1016", "pc": [ - 4356 + 4064 ] }, { - "teal": 4302, - "source": 1016, + "teal": 4305, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4357, - 4358 + 4065, + 4066 ] }, { - "teal": 4303, - "source": 1016, + "teal": 4306, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4359 + 4067, + 4068 ] }, { - "teal": 4304, - "source": 1016, + "teal": 4307, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4360 + 4069, + 4070 ] }, { "teal": 4308, - "source": 1017, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4361, - 4362 + 4071, + 4072 ] }, { "teal": 4309, - "source": 1017, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4363, - 4364 + 4073 ] }, { "teal": 4310, - "source": 1017, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4365, - 4366 + 4074 ] }, { "teal": 4311, - "source": 1017, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4367, - 4368 + 4075 ] }, { "teal": 4312, - "source": 1017, + "source": "contracts/stakingPool.algo.ts:1017", "pc": [ - 4369 + 4076 ] }, { - "teal": 4313, - "source": 1017, + "teal": 4315, + "source": "contracts/stakingPool.algo.ts:987", "pc": [ - 4370 + 4077 ] }, { - "teal": 4314, - "source": 1017, + "teal": 4319, + "source": "contracts/stakingPool.algo.ts:1021", "pc": [ - 4371 + 4078, + 4079, + 4080 ] }, { - "teal": 4315, - "source": 1017, + "teal": 4322, + "source": "contracts/stakingPool.algo.ts:1021", "pc": [ - 4372 + 4081 ] }, { - "teal": 4318, - "source": 987, + "teal": 4327, + "source": "contracts/stakingPool.algo.ts:1026", "pc": [ - 4373 + 4082, + 4083 ] }, { - "teal": 4322, - "source": 1021, + "teal": 4328, + "source": "contracts/stakingPool.algo.ts:1026", "pc": [ - 4374, - 4375, - 4376 + 4084, + 4085 ] }, { - "teal": 4325, - "source": 1021, + "teal": 4329, + "source": "contracts/stakingPool.algo.ts:1026", "pc": [ - 4377, - 4378 + 4086 ] }, { "teal": 4330, - "source": 1026, + "source": "contracts/stakingPool.algo.ts:1026", "pc": [ - 4379, - 4380 + 4087, + 4088, + 4089 ] }, { - "teal": 4331, - "source": 1026, + "teal": 4335, + "source": "contracts/stakingPool.algo.ts:1028", "pc": [ - 4381, - 4382 + 4090, + 4091 ] }, { - "teal": 4332, - "source": 1026, + "teal": 4336, + "source": "contracts/stakingPool.algo.ts:1028", "pc": [ - 4383 + 4092, + 4093 ] }, { - "teal": 4333, - "source": 1026, + "teal": 4337, + "source": "contracts/stakingPool.algo.ts:1028", "pc": [ - 4384, - 4385, - 4386 + 4094 ] }, { - "teal": 4338, - "source": 1028, + "teal": 4341, + "source": "contracts/stakingPool.algo.ts:1029", "pc": [ - 4387, - 4388 + 4095 ] }, { - "teal": 4339, - "source": 1028, + "teal": 4347, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4389, - 4390 + 4096, + 4097 ] }, { - "teal": 4340, - "source": 1028, + "teal": 4348, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4391 + 4098 ] }, { - "teal": 4344, - "source": 1029, + "teal": 4349, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4392 + 4099 ] }, { "teal": 4350, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4393, - 4394 + 4100, + 4101 ] }, { "teal": 4351, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4395 + 4102, + 4103 ] }, { "teal": 4352, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4396 + 4104, + 4105 ] }, { "teal": 4353, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4397, - 4398 + 4106 ] }, { "teal": 4354, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4399, - 4400 + 4107, + 4108 ] }, { "teal": 4355, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1033", "pc": [ - 4401, - 4402 + 4109 ] }, { "teal": 4356, - "source": 1033, + "source": "contracts/stakingPool.algo.ts:1032", "pc": [ - 4403 + 4110, + 4111 ] }, { - "teal": 4357, - "source": 1033, + "teal": 4361, + "source": "contracts/stakingPool.algo.ts:1034", "pc": [ - 4404, - 4405 + 4112, + 4113 ] }, { - "teal": 4358, - "source": 1033, + "teal": 4362, + "source": "contracts/stakingPool.algo.ts:1034", "pc": [ - 4406 + 4114 ] }, { - "teal": 4359, - "source": 1032, + "teal": 4363, + "source": "contracts/stakingPool.algo.ts:1034", "pc": [ - 4407, - 4408 + 4115 ] }, { "teal": 4364, - "source": 1034, + "source": "contracts/stakingPool.algo.ts:1034", "pc": [ - 4409, - 4410 + 4116, + 4117, + 4118 ] }, { - "teal": 4365, - "source": 1034, + "teal": 4369, + "source": "contracts/stakingPool.algo.ts:1036", "pc": [ - 4411 + 4119, + 4120 ] }, { - "teal": 4366, - "source": 1034, + "teal": 4370, + "source": "contracts/stakingPool.algo.ts:1036", "pc": [ - 4412 + 4121, + 4122 ] }, { - "teal": 4367, - "source": 1034, + "teal": 4371, + "source": "contracts/stakingPool.algo.ts:1036", "pc": [ - 4413, - 4414, - 4415 + 4123 ] }, { - "teal": 4372, - "source": 1036, + "teal": 4375, + "source": "contracts/stakingPool.algo.ts:1037", "pc": [ - 4416, - 4417 + 4124 ] }, { - "teal": 4373, - "source": 1036, + "teal": 4380, + "source": "contracts/stakingPool.algo.ts:1042", "pc": [ - 4418, - 4419 + 4125, + 4126 ] }, { - "teal": 4374, - "source": 1036, + "teal": 4381, + "source": "contracts/stakingPool.algo.ts:1042", "pc": [ - 4420 + 4127, + 4128, + 4129, + 4130 ] }, { - "teal": 4378, - "source": 1037, + "teal": 4382, + "source": "contracts/stakingPool.algo.ts:1042", "pc": [ - 4421 + 4131, + 4132 ] }, { "teal": 4383, - "source": 1042, + "source": "contracts/stakingPool.algo.ts:1042", "pc": [ - 4422, - 4423 + 4133 ] }, { "teal": 4384, - "source": 1042, + "source": "contracts/stakingPool.algo.ts:1042", "pc": [ - 4424, - 4425, - 4426, - 4427 + 4134 ] }, { "teal": 4385, - "source": 1042, + "source": "contracts/stakingPool.algo.ts:1021", "pc": [ - 4428, - 4429 + 4135 ] }, { - "teal": 4386, - "source": 1042, + "teal": 4388, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4430 + 4136, + 4137, + 4138, + 4139, + 4140, + 4141 ] }, { - "teal": 4387, - "source": 1042, + "teal": 4389, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4431 + 4142, + 4143, + 4144 ] }, { - "teal": 4388, - "source": 1021, + "teal": 4390, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4432 + 4145, + 4146, + 4147, + 4148 ] }, { - "teal": 4391, - "source": 37, + "teal": 4393, + "source": "contracts/stakingPool.algo.ts:37", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 4433, - 4434, - 4435, - 4436, - 4437, - 4438 + 4149 ] }, { - "teal": 4392, - "source": 37, + "teal": 4396, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4439, - 4440, - 4441 + 4150, + 4151, + 4152, + 4153, + 4154, + 4155 ] }, { - "teal": 4393, - "source": 37, + "teal": 4397, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4442, - 4443, - 4444, - 4445 + 4156, + 4157, + 4158, + 4159, + 4160, + 4161 ] }, { - "teal": 4396, - "source": 37, - "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "teal": 4398, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4446 + 4162, + 4163, + 4164, + 4165, + 4166, + 4167 ] }, { "teal": 4399, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4447, - 4448, - 4449, - 4450, - 4451, - 4452 + 4168, + 4169, + 4170, + 4171, + 4172, + 4173 ] }, { "teal": 4400, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4453, - 4454, - 4455, - 4456, - 4457, - 4458 + 4174, + 4175, + 4176, + 4177, + 4178, + 4179 ] }, { "teal": 4401, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4459, - 4460, - 4461, - 4462, - 4463, - 4464 + 4180, + 4181, + 4182, + 4183, + 4184, + 4185 ] }, { "teal": 4402, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4465, - 4466, - 4467, - 4468, - 4469, - 4470 + 4186, + 4187, + 4188, + 4189, + 4190, + 4191 ] }, { "teal": 4403, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4471, - 4472, - 4473, - 4474, - 4475, - 4476 + 4192, + 4193, + 4194, + 4195, + 4196, + 4197 ] }, { "teal": 4404, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4477, - 4478, - 4479, - 4480, - 4481, - 4482 + 4198, + 4199, + 4200, + 4201, + 4202, + 4203 ] }, { "teal": 4405, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4483, - 4484, - 4485, - 4486, - 4487, - 4488 + 4204, + 4205, + 4206, + 4207, + 4208, + 4209 ] }, { "teal": 4406, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4489, - 4490, - 4491, - 4492, - 4493, - 4494 + 4210, + 4211, + 4212, + 4213, + 4214, + 4215 ] }, { "teal": 4407, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4495, - 4496, - 4497, - 4498, - 4499, - 4500 + 4216, + 4217, + 4218, + 4219, + 4220, + 4221 ] }, { "teal": 4408, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4501, - 4502, - 4503, - 4504, - 4505, - 4506 + 4222, + 4223 ] }, { "teal": 4409, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4507, - 4508, - 4509, - 4510, - 4511, - 4512 + 4224, + 4225, + 4226 ] }, { "teal": 4410, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "pc": [ - 4513, - 4514, - 4515, - 4516, - 4517, - 4518 - ] - }, - { - "teal": 4411, - "source": 37, - "pc": [ - 4519, - 4520 - ] - }, - { - "teal": 4412, - "source": 37, - "pc": [ - 4521, - 4522, - 4523 + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4237, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4250, + 4251, + 4252, + 4253, + 4254 ] }, { "teal": 4413, - "source": 37, - "pc": [ - 4524, - 4525, - 4526, - 4527, - 4528, - 4529, - 4530, - 4531, - 4532, - 4533, - 4534, - 4535, - 4536, - 4537, - 4538, - 4539, - 4540, - 4541, - 4542, - 4543, - 4544, - 4545, - 4546, - 4547, - 4548, - 4549, - 4550, - 4551 - ] - }, - { - "teal": 4416, - "source": 37, + "source": "contracts/stakingPool.algo.ts:37", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 4552 + 4255 ] } ] \ No newline at end of file diff --git a/contracts/contracts/artifacts/ValidatorRegistry.approval.teal b/contracts/contracts/artifacts/ValidatorRegistry.approval.teal index 7ebe88c2..1d0ca690 100644 --- a/contracts/contracts/artifacts/ValidatorRegistry.approval.teal +++ b/contracts/contracts/artifacts/ValidatorRegistry.approval.teal @@ -1,15 +1,12 @@ #pragma version 11 +intcblock 0 1 8 24 18 268 32 6 3 242 2 10 252 260 700 4 100000 900 16 200 40 72 192 244 1000000 4096 5 226 TMPL_nfdRegistryAppId 300 432 892 1000 28500 50000 11 80 145 153 209 +bytecblock 0x76 0x 0x151f7c75 0x737073 0x7374616b6564 0x00 0x6e756d5374616b657273 0x0000000000000000 0x0a8101 0x706f6f6c54656d706c617465417070726f76616c4279746573 0x692e6f776e65722e61 0x6e756d56 0x696e6974 0x63f3f28b 0x12f4bd4b -// This TEAL was generated by TEALScript v0.103.2 +// This TEAL was generated by TEALScript v0.105.5 // https://github.com/algorandfoundation/TEALScript // This contract is compliant with and/or implements the following ARCs: [ ARC4 ] -// The following lines of TEAL are used to initialize template variables in scratch slots -pushbytes TMPL_nfdRegistryAppId -btoi -store 200 - // The following ten lines of TEAL handle initial program flow // This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed // Here, action refers to the OnComplete in combination with whether the app is being created or called @@ -17,7 +14,7 @@ store 200 // If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" txn ApplicationID ! -int 6 +intc 7 // 6 * txn OnCompletion + @@ -31,7 +28,7 @@ switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEM *abi_route_createApplication: // execute createApplication()void callsub createApplication - int 1 + intc 1 // 1 return // createApplication(): void @@ -40,30 +37,30 @@ createApplication: // contracts/validatorRegistry.algo.ts:82 // this.stakingPoolInitialized.value = false - byte 0x696e6974 // "init" - int 0 - byte 0x00 - int 0 + bytec 12 // "init" + intc 0 // 0 + bytec 5 // 0x00 + intc 0 // 0 uncover 2 setbit app_global_put // contracts/validatorRegistry.algo.ts:83 // this.numValidators.value = 0 - byte 0x6e756d56 // "numV" - int 0 + bytec 11 // "numV" + intc 0 // 0 app_global_put // contracts/validatorRegistry.algo.ts:84 // this.numStakers.value = 0 - byte 0x6e756d5374616b657273 // "numStakers" - int 0 + bytec 6 // "numStakers" + intc 0 // 0 app_global_put // contracts/validatorRegistry.algo.ts:85 // this.totalAlgoStaked.value = 0 - byte 0x7374616b6564 // "staked" - int 0 + bytec 4 // "staked" + intc 0 // 0 app_global_put retsub @@ -75,7 +72,7 @@ createApplication: // execute initStakingContract(uint64)void callsub initStakingContract - int 1 + intc 1 // 1 return // initStakingContract(approvalProgramSize: uint64): void @@ -84,7 +81,7 @@ initStakingContract: // contracts/validatorRegistry.algo.ts:90 // this.stakingPoolApprovalProgram.create(approvalProgramSize) - byte 0x706f6f6c54656d706c617465417070726f76616c4279746573 // "poolTemplateApprovalBytes" + bytec 9 // "poolTemplateApprovalBytes" frame_dig -1 // approvalProgramSize: uint64 box_create pop @@ -102,7 +99,7 @@ initStakingContract: // execute loadStakingContractData(uint64,byte[])void callsub loadStakingContractData - int 1 + intc 1 // 1 return // loadStakingContractData(offset: uint64, data: bytes): void @@ -111,16 +108,16 @@ loadStakingContractData: // contracts/validatorRegistry.algo.ts:94 // assert(!this.stakingPoolInitialized.value) - byte 0x696e6974 // "init" + bytec 12 // "init" app_global_get - int 0 + intc 0 // 0 getbit ! assert // contracts/validatorRegistry.algo.ts:95 // this.stakingPoolApprovalProgram.replace(offset, data) - byte 0x706f6f6c54656d706c617465417070726f76616c4279746573 // "poolTemplateApprovalBytes" + bytec 9 // "poolTemplateApprovalBytes" frame_dig -1 // offset: uint64 frame_dig -2 // data: bytes box_replace @@ -130,7 +127,7 @@ loadStakingContractData: *abi_route_finalizeStakingContract: // execute finalizeStakingContract()void callsub finalizeStakingContract - int 1 + intc 1 // 1 return // finalizeStakingContract(): void @@ -139,10 +136,10 @@ finalizeStakingContract: // contracts/validatorRegistry.algo.ts:99 // this.stakingPoolInitialized.value = true - byte 0x696e6974 // "init" - int 1 - byte 0x00 - int 0 + bytec 12 // "init" + intc 1 // 1 + bytec 5 // 0x00 + intc 0 // 0 uncover 2 setbit app_global_put @@ -152,7 +149,7 @@ finalizeStakingContract: *abi_route_gas: // execute gas()void callsub gas - int 1 + intc 1 // 1 return // gas(): void @@ -165,13 +162,13 @@ gas: // getMbrAmounts()(uint64,uint64,uint64,uint64) *abi_route_getMbrAmounts: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // execute getMbrAmounts()(uint64,uint64,uint64,uint64) callsub getMbrAmounts concat log - int 1 + intc 1 // 1 return // getMbrAmounts(): MbrAmounts @@ -209,25 +206,25 @@ getMbrAmounts: // 3 /* 'sps' prefix */ + len
() + len() * MAX_POOLS_PER_STAKER, // ), // size of key + all values // } - int 1101 + pushint 1101 callsub costForBoxStorage itob - int 3 - int 11 - int 0 + intc 8 // 3 + intc 35 // 11 + intc 0 // 0 dupn 2 - int 3 - int 1 + intc 8 // 3 + intc 1 // 1 callsub minBalanceForAccount itob concat - int 100000 - int 12807 + intc 16 // 100000 + pushint 12807 callsub costForBoxStorage + itob concat - int 179 + pushint 179 callsub costForBoxStorage itob concat @@ -236,13 +233,13 @@ getMbrAmounts: // getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64) *abi_route_getProtocolConstraints: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // execute getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64) callsub getProtocolConstraints concat log - int 1 + intc 1 // 1 return // getProtocolConstraints(): Constraints @@ -265,7 +262,7 @@ getProtocolConstraints: // maxPoolsPerNode: MAX_POOLS_PER_NODE, // maxStakersPerPool: MAX_STAKERS_PER_POOL, // } - byte 0x000000000000000100000000000f4240000000000000000000000000000f424000000000000f4240 + pushbytes 0x000000000000000100000000000f4240000000000000000000000000000f424000000000000f4240 callsub maxAlgoAllowedPerPool itob concat @@ -275,25 +272,25 @@ getProtocolConstraints: callsub algoSaturationLevel itob concat - byte 0x0000000000000008 + pushbytes 0x0000000000000008 concat - byte 0x0000000000000003 + pushbytes 0x0000000000000003 concat - byte 0x00000000000000c8 + pushbytes 0x00000000000000c8 concat retsub // getNumValidators()uint64 *abi_route_getNumValidators: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // execute getNumValidators()uint64 callsub getNumValidators itob concat log - int 1 + intc 1 // 1 return // getNumValidators(): uint64 @@ -304,14 +301,14 @@ getNumValidators: // contracts/validatorRegistry.algo.ts:169 // return this.numValidators.value - byte 0x6e756d56 // "numV" + bytec 11 // "numV" app_global_get retsub // getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64) *abi_route_getValidatorConfig: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -321,7 +318,7 @@ getNumValidators: callsub getValidatorConfig concat log - int 1 + intc 1 // 1 return // getValidatorConfig(validatorId: ValidatorIdType): ValidatorConfig @@ -330,9 +327,9 @@ getValidatorConfig: // contracts/validatorRegistry.algo.ts:174 // return this.validatorList(validatorId).value.config - int 0 - int 242 - byte 0x76 // "v" + intc 0 // 0 + intc 9 // 242 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -343,7 +340,7 @@ getValidatorConfig: // getValidatorState(uint64)(uint16,uint64,uint64,uint64) *abi_route_getValidatorState: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -353,7 +350,7 @@ getValidatorConfig: callsub getValidatorState concat log - int 1 + intc 1 // 1 return // getValidatorState(validatorId: ValidatorIdType): ValidatorCurState @@ -362,9 +359,9 @@ getValidatorState: // contracts/validatorRegistry.algo.ts:179 // return this.validatorList(validatorId).value.state - int 242 // headOffset - int 26 - byte 0x76 // "v" + intc 9 // headOffset + pushint 26 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -375,7 +372,7 @@ getValidatorState: // getValidatorOwnerAndManager(uint64)(address,address) *abi_route_getValidatorOwnerAndManager: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -385,7 +382,7 @@ getValidatorState: callsub getValidatorOwnerAndManager concat log - int 1 + intc 1 // 1 return // getValidatorOwnerAndManager(validatorId: ValidatorIdType): [Address, Address] @@ -397,17 +394,17 @@ getValidatorOwnerAndManager: // this.validatorList(validatorId).value.config.owner, // this.validatorList(validatorId).value.config.manager, // ] - int 8 - int 32 - byte 0x76 // "v" + intc 2 // 8 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat cover 2 box_extract - int 40 - int 32 - byte 0x76 // "v" + intc 20 // 40 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -419,7 +416,7 @@ getValidatorOwnerAndManager: // getPools(uint64)(uint64,uint16,uint64)[] *abi_route_getPools: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -429,7 +426,7 @@ getValidatorOwnerAndManager: callsub getPools dup len - int 18 + intc 4 // 18 / itob extract 6 2 @@ -437,7 +434,7 @@ getValidatorOwnerAndManager: concat concat log - int 1 + intc 1 // 1 return // getPools(validatorId: ValidatorIdType): PoolInfo[] @@ -450,19 +447,19 @@ getPools: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:198 // retData: PoolInfo[] = [] - byte 0x + bytec 1 // 0x frame_bury 0 // retData: PoolInfo[] // contracts/validatorRegistry.algo.ts:199 // poolSet = clone(this.validatorList(validatorId).value.pools) - int 268 // headOffset - int 432 - byte 0x76 // "v" + intc 5 // headOffset + intc 30 // 432 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -472,14 +469,14 @@ getPools: // contracts/validatorRegistry.algo.ts:200 // for (let i = 0; i < poolSet.length; i += 1) - int 0 + intc 0 // 0 frame_bury 2 // i: uint64 *for_0: // contracts/validatorRegistry.algo.ts:200 // i < poolSet.length frame_dig 2 // i: uint64 - int 24 + intc 3 // 24 < bz *for_0_end @@ -488,14 +485,14 @@ getPools: // poolSet[i].poolAppId === 0 frame_dig 1 // poolSet: (uint64,uint16,uint64)[24] frame_dig 2 // i: uint64 - int 18 + intc 4 // 18 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi - int 0 + intc 0 // 0 == bz *if0_end @@ -508,9 +505,9 @@ getPools: frame_dig 0 // retData: PoolInfo[] frame_dig 1 // poolSet: (uint64,uint16,uint64)[24] frame_dig 2 // i: uint64 - int 18 + intc 4 // 18 * // acc * typeLength - int 18 + intc 4 // 18 extract3 concat frame_bury 0 // retData: PoolInfo[] @@ -519,7 +516,7 @@ getPools: // contracts/validatorRegistry.algo.ts:200 // i += 1 frame_dig 2 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 2 // i: uint64 b *for_0 @@ -539,7 +536,7 @@ getPools: // getPoolAppId(uint64,uint64)uint64 *abi_route_getPoolAppId: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // poolId: uint64 txna ApplicationArgs 2 @@ -554,7 +551,7 @@ getPools: itob concat log - int 1 + intc 1 // 1 return // getPoolAppId(validatorId: uint64, poolId: uint64): uint64 @@ -571,12 +568,12 @@ getPoolAppId: // 'pool id must be between 1 and number of pools for this validator', // ) frame_dig -2 // poolId: uint64 - int 0 + intc 0 // 0 != dup bz *skip_and0 frame_dig -2 // poolId: uint64 - int 24 + intc 3 // 24 <= && @@ -586,17 +583,17 @@ getPoolAppId: // contracts/validatorRegistry.algo.ts:221 // return this.validatorList(validatorId).value.pools[poolId - 1].poolAppId - int 268 // headOffset + intc 5 // headOffset frame_dig -2 // poolId: uint64 - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 0 + intc 0 // 0 + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: uint64 itob concat @@ -608,13 +605,13 @@ getPoolAppId: // getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64) *abi_route_getPoolInfo: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // poolKey: (uint64,uint64,uint64) txna ApplicationArgs 1 dup len - int 24 + intc 3 // 24 == // argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64) @@ -624,7 +621,7 @@ getPoolAppId: callsub getPoolInfo concat log - int 1 + intc 1 // 1 return // getPoolInfo(poolKey: ValidatorPoolKey): PoolInfo @@ -633,17 +630,17 @@ getPoolInfo: // contracts/validatorRegistry.algo.ts:226 // return this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1] - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 18 - byte 0x76 // "v" + intc 4 // 18 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -656,7 +653,7 @@ getPoolInfo: // getCurMaxStakePerPool(uint64)uint64 *abi_route_getCurMaxStakePerPool: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -667,7 +664,7 @@ getPoolInfo: itob concat log - int 1 + intc 1 // 1 return // getCurMaxStakePerPool(validatorId: ValidatorIdType): uint64 @@ -681,14 +678,14 @@ getCurMaxStakePerPool: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:238 // numPools = this.validatorList(validatorId).value.state.numPools as uint64 - int 242 - int 2 - byte 0x76 // "v" + intc 9 // 242 + intc 10 // 2 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -706,9 +703,9 @@ getCurMaxStakePerPool: // contracts/validatorRegistry.algo.ts:240 // maxPerPool: uint64 = this.validatorList(validatorId).value.config.maxAlgoPerPool - int 217 - int 8 - byte 0x76 // "v" + pushint 217 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -721,7 +718,7 @@ getCurMaxStakePerPool: // contracts/validatorRegistry.algo.ts:241 // maxPerPool === 0 frame_dig 2 // maxPerPool: uint64 - int 0 + intc 0 // 0 == bz *if1_end @@ -761,13 +758,13 @@ getCurMaxStakePerPool: // doesStakerNeedToPayMBR(address)bool *abi_route_doesStakerNeedToPayMBR: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // staker: address txna ApplicationArgs 1 dup len - int 32 + intc 6 // 32 == // argument 0 (staker) for doesStakerNeedToPayMBR must be a address @@ -775,13 +772,13 @@ getCurMaxStakePerPool: // execute doesStakerNeedToPayMBR(address)bool callsub doesStakerNeedToPayMBR - byte 0x00 - int 0 + bytec 5 // 0x00 + intc 0 // 0 uncover 2 setbit concat log - int 1 + intc 1 // 1 return // doesStakerNeedToPayMBR(staker: Address): boolean @@ -793,7 +790,7 @@ doesStakerNeedToPayMBR: // contracts/validatorRegistry.algo.ts:256 // return !this.stakerPoolSet(staker).exists - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat box_len @@ -805,13 +802,13 @@ doesStakerNeedToPayMBR: // getStakedPoolsForAccount(address)(uint64,uint64,uint64)[] *abi_route_getStakedPoolsForAccount: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // staker: address txna ApplicationArgs 1 dup len - int 32 + intc 6 // 32 == // argument 0 (staker) for getStakedPoolsForAccount must be a address @@ -821,7 +818,7 @@ doesStakerNeedToPayMBR: callsub getStakedPoolsForAccount dup len - int 24 + intc 3 // 24 / itob extract 6 2 @@ -829,7 +826,7 @@ doesStakerNeedToPayMBR: concat concat log - int 1 + intc 1 // 1 return // getStakedPoolsForAccount(staker: Address): ValidatorPoolKey[] @@ -842,13 +839,13 @@ getStakedPoolsForAccount: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // *if3_condition // contracts/validatorRegistry.algo.ts:267 // !this.stakerPoolSet(staker).exists - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat box_len @@ -860,18 +857,18 @@ getStakedPoolsForAccount: // *if3_consequent // contracts/validatorRegistry.algo.ts:268 // return [] - byte 0x + bytec 1 // 0x b *getStakedPoolsForAccount*return *if3_end: // contracts/validatorRegistry.algo.ts:270 // retData: ValidatorPoolKey[] = [] - byte 0x + bytec 1 // 0x frame_bury 0 // retData: ValidatorPoolKey[] // contracts/validatorRegistry.algo.ts:271 // poolSet = clone(this.stakerPoolSet(staker).value) - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat box_get @@ -882,14 +879,14 @@ getStakedPoolsForAccount: // contracts/validatorRegistry.algo.ts:272 // for (let i = 0; i < poolSet.length; i += 1) - int 0 + intc 0 // 0 frame_bury 2 // i: uint64 *for_1: // contracts/validatorRegistry.algo.ts:272 // i < poolSet.length frame_dig 2 // i: uint64 - int 6 + intc 7 // 6 < bz *for_1_end @@ -898,14 +895,14 @@ getStakedPoolsForAccount: // poolSet[i].id !== 0 frame_dig 1 // poolSet: (uint64,uint64,uint64)[6] frame_dig 2 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi - int 0 + intc 0 // 0 != bz *if4_end @@ -915,9 +912,9 @@ getStakedPoolsForAccount: frame_dig 0 // retData: ValidatorPoolKey[] frame_dig 1 // poolSet: (uint64,uint64,uint64)[6] frame_dig 2 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 24 + intc 3 // 24 extract3 concat frame_bury 0 // retData: ValidatorPoolKey[] @@ -928,7 +925,7 @@ getStakedPoolsForAccount: // contracts/validatorRegistry.algo.ts:272 // i += 1 frame_dig 2 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 2 // i: uint64 b *for_1 @@ -949,7 +946,7 @@ getStakedPoolsForAccount: // getTokenPayoutRatio(uint64)(uint64[24],uint64) *abi_route_getTokenPayoutRatio: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -959,7 +956,7 @@ getStakedPoolsForAccount: callsub getTokenPayoutRatio concat log - int 1 + intc 1 // 1 return // getTokenPayoutRatio(validatorId: ValidatorIdType): PoolTokenPayoutRatio @@ -974,9 +971,9 @@ getTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:289 // return this.validatorList(validatorId).value.tokenPayoutRatio - int 700 // headOffset - int 200 - byte 0x76 // "v" + intc 14 // headOffset + intc 19 // 200 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -987,7 +984,7 @@ getTokenPayoutRatio: // getNodePoolAssignments(uint64)((uint64[3])[8]) *abi_route_getNodePoolAssignments: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -997,7 +994,7 @@ getTokenPayoutRatio: callsub getNodePoolAssignments concat log - int 1 + intc 1 // 1 return // getNodePoolAssignments(validatorId: uint64): NodePoolAssignmentConfig @@ -1006,7 +1003,7 @@ getNodePoolAssignments: // contracts/validatorRegistry.algo.ts:294 // assert(this.validatorList(validatorId).exists, "the specified validator id doesn't exist") - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: uint64 itob concat @@ -1019,9 +1016,9 @@ getNodePoolAssignments: // contracts/validatorRegistry.algo.ts:296 // return this.validatorList(validatorId).value.nodePoolAssignments - int 900 // headOffset - int 192 - byte 0x76 // "v" + intc 17 // headOffset + intc 22 // 192 + bytec 0 // "v" frame_dig -1 // validatorId: uint64 itob concat @@ -1032,14 +1029,14 @@ getNodePoolAssignments: // getNFDRegistryID()uint64 *abi_route_getNFDRegistryID: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // execute getNFDRegistryID()uint64 callsub getNFDRegistryID itob concat log - int 1 + intc 1 // 1 return // getNFDRegistryID(): uint64 @@ -1048,19 +1045,19 @@ getNFDRegistryID: // contracts/validatorRegistry.algo.ts:301 // return this.nfdRegistryAppId - load 200 // TMPL_nfdRegistryAppId + intc 28 // TMPL_nfdRegistryAppId retsub // addValidator(pay,string,(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64))uint64 *abi_route_addValidator: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // config: (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64) txna ApplicationArgs 2 dup len - int 242 + intc 9 // 242 == // argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64) @@ -1072,11 +1069,11 @@ getNFDRegistryID: // mbrPayment: pay txn GroupIndex - int 1 + intc 1 // 1 - dup gtxns TypeEnum - int pay + intc 1 // pay == // argument 2 (mbrPayment) for addValidator must be a pay transaction @@ -1087,7 +1084,7 @@ getNFDRegistryID: itob concat log - int 1 + intc 1 // 1 return // addValidator(mbrPayment: PayTxn, nfdName: string, config: ValidatorConfig): uint64 @@ -1103,7 +1100,7 @@ addValidator: proto 3 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x // contracts/validatorRegistry.algo.ts:313 // this.validateConfig(config) @@ -1136,7 +1133,7 @@ addValidator: // assert(mbrPayment.fee > 10 * 1000000, 'fee must be 10 ALGO or more to prevent spamming of validators') frame_dig -1 // mbrPayment: PayTxn gtxns Fee - int 10000000 + pushint 10000000 > // fee must be 10 ALGO or more to prevent spamming of validators @@ -1144,33 +1141,33 @@ addValidator: // contracts/validatorRegistry.algo.ts:320 // validatorId = this.numValidators.value + 1 - byte 0x6e756d56 // "numV" + bytec 11 // "numV" app_global_get - int 1 + intc 1 // 1 + frame_bury 0 // validatorId: uint64 // contracts/validatorRegistry.algo.ts:321 // this.numValidators.value = validatorId - byte 0x6e756d56 // "numV" + bytec 11 // "numV" frame_dig 0 // validatorId: uint64 app_global_put // contracts/validatorRegistry.algo.ts:323 // this.validatorList(validatorId).create() - byte 0x76 // "v" + bytec 0 // "v" frame_dig 0 // validatorId: uint64 itob concat - int 1092 + pushint 1092 box_create pop // contracts/validatorRegistry.algo.ts:324 // this.validatorList(validatorId).value.config = config - int 0 + intc 0 // 0 frame_dig -3 // config: ValidatorConfig - byte 0x76 // "v" + bytec 0 // "v" frame_dig 0 // validatorId: uint64 itob concat @@ -1179,10 +1176,10 @@ addValidator: // contracts/validatorRegistry.algo.ts:325 // this.validatorList(validatorId).value.config.id = validatorId - int 0 + intc 0 // 0 frame_dig 0 // validatorId: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig 0 // validatorId: uint64 itob concat @@ -1195,7 +1192,7 @@ addValidator: frame_dig -3 // config: ValidatorConfig extract 72 8 btoi - int 0 + intc 0 // 0 != bz *if5_end @@ -1219,7 +1216,7 @@ addValidator: frame_dig -3 // config: ValidatorConfig extract 72 8 btoi - byte 0x692e6f776e65722e61 // "i.owner.a" + bytec 10 // "i.owner.a" app_global_get_ex // global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a') @@ -1237,14 +1234,14 @@ addValidator: frame_dig -3 // config: ValidatorConfig extract 80 1 btoi - int 3 + intc 8 // 3 == dup bnz *skip_or0 frame_dig -3 // config: ValidatorConfig extract 80 1 btoi - int 4 + intc 15 // 4 == || @@ -1268,7 +1265,7 @@ addValidator: *if6_end: // contracts/validatorRegistry.algo.ts:347 // this.retiOP_addedValidator.log({ id: validatorId, owner: config.owner, manager: config.manager }) - byte 0xa8dd21cb // retiOP_addedValidator(uint64,address,address) + pushbytes 0xa8dd21cb // retiOP_addedValidator(uint64,address,address) frame_dig 0 // validatorId: uint64 itob frame_dig -3 // config: ValidatorConfig @@ -1294,7 +1291,7 @@ addValidator: txna ApplicationArgs 2 dup len - int 32 + intc 6 // 32 == // argument 0 (manager) for changeValidatorManager must be a address @@ -1306,7 +1303,7 @@ addValidator: // execute changeValidatorManager(uint64,address)void callsub changeValidatorManager - int 1 + intc 1 // 1 return // changeValidatorManager(validatorId: ValidatorIdType, manager: Address): void @@ -1335,9 +1332,9 @@ changeValidatorManager: // contracts/validatorRegistry.algo.ts:361 // this.validatorList(validatorId).value.config.manager = manager - int 40 + intc 20 // 40 frame_dig -2 // manager: Address - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1361,7 +1358,7 @@ changeValidatorManager: // execute changeValidatorSunsetInfo(uint64,uint64,uint64)void callsub changeValidatorSunsetInfo - int 1 + intc 1 // 1 return // changeValidatorSunsetInfo(validatorId: ValidatorIdType, sunsettingOn: uint64, sunsettingTo: ValidatorIdType): void @@ -1382,10 +1379,10 @@ changeValidatorSunsetInfo: // contracts/validatorRegistry.algo.ts:374 // this.validatorList(validatorId).value.config.sunsettingOn = sunsettingOn - int 226 + intc 27 // 226 frame_dig -2 // sunsettingOn: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1394,10 +1391,10 @@ changeValidatorSunsetInfo: // contracts/validatorRegistry.algo.ts:375 // this.validatorList(validatorId).value.config.sunsettingTo = sunsettingTo - int 234 + pushint 234 frame_dig -3 // sunsettingTo: ValidatorIdType itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1421,7 +1418,7 @@ changeValidatorSunsetInfo: // execute changeValidatorNFD(uint64,uint64,string)void callsub changeValidatorNFD - int 1 + intc 1 // 1 return // changeValidatorNFD(validatorId: ValidatorIdType, nfdAppID: uint64, nfdName: string): void @@ -1455,7 +1452,7 @@ changeValidatorNFD: // ) txn Sender frame_dig -2 // nfdAppID: uint64 - byte 0x692e6f776e65722e61 // "i.owner.a" + bytec 10 // "i.owner.a" app_global_get_ex // global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a') @@ -1467,10 +1464,10 @@ changeValidatorNFD: // contracts/validatorRegistry.algo.ts:395 // this.validatorList(validatorId).value.config.nfdForInfo = nfdAppID - int 72 + intc 21 // 72 frame_dig -2 // nfdAppID: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1484,7 +1481,7 @@ changeValidatorNFD: txna ApplicationArgs 2 dup len - int 32 + intc 6 // 32 == // argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address @@ -1496,7 +1493,7 @@ changeValidatorNFD: // execute changeValidatorCommissionAddress(uint64,address)void callsub changeValidatorCommissionAddress - int 1 + intc 1 // 1 return // changeValidatorCommissionAddress(validatorId: ValidatorIdType, commissionAddress: Address): void @@ -1520,9 +1517,9 @@ changeValidatorCommissionAddress: // contracts/validatorRegistry.algo.ts:405 // this.validatorList(validatorId).value.config.validatorCommissionAddress = commissionAddress - int 177 + pushint 177 frame_dig -2 // commissionAddress: Address - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1544,7 +1541,7 @@ changeValidatorCommissionAddress: txna ApplicationArgs 4 dup len - int 32 + intc 6 // 32 == // argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4] @@ -1554,7 +1551,7 @@ changeValidatorCommissionAddress: txna ApplicationArgs 3 dup len - int 32 + intc 6 // 32 == // argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address @@ -1564,7 +1561,7 @@ changeValidatorCommissionAddress: txna ApplicationArgs 2 dup len - int 1 + intc 1 // 1 == // argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8 @@ -1577,7 +1574,7 @@ changeValidatorCommissionAddress: // execute changeValidatorRewardInfo(uint64,uint8,address,uint64[4],uint64,uint64)void callsub changeValidatorRewardInfo - int 1 + intc 1 // 1 return // changeValidatorRewardInfo(validatorId: ValidatorIdType, EntryGatingType: uint8, EntryGatingAddress: Address, EntryGatingAssets: StaticArray, GatingAssetMinBalance: uint64, RewardPerPayout: uint64): void @@ -1598,12 +1595,12 @@ changeValidatorRewardInfo: // 'invalid Entry gating type', // ) frame_dig -2 // EntryGatingType: uint8 - int 0 + intc 0 // 0 >= dup bz *skip_and1 frame_dig -2 // EntryGatingType: uint8 - int 4 + intc 15 // 4 < && @@ -1615,7 +1612,7 @@ changeValidatorRewardInfo: // contracts/validatorRegistry.algo.ts:426 // EntryGatingType === GATING_TYPE_ASSETS_CREATED_BY frame_dig -2 // EntryGatingType: uint8 - int 1 + intc 1 // 1 == bz *if7_end @@ -1633,12 +1630,12 @@ changeValidatorRewardInfo: // EntryGatingType === GATING_TYPE_CREATED_BY_NFD_ADDRESSES || // EntryGatingType === GATING_TYPE_SEGMENT_OF_NFD frame_dig -2 // EntryGatingType: uint8 - int 3 + intc 8 // 3 == dup bnz *skip_or1 frame_dig -2 // EntryGatingType: uint8 - int 4 + intc 15 // 4 == || @@ -1659,11 +1656,11 @@ changeValidatorRewardInfo: *if8_end: // contracts/validatorRegistry.algo.ts:435 // this.validatorList(validatorId).value.config.entryGatingType = EntryGatingType - int 80 + intc 36 // 80 frame_dig -2 // EntryGatingType: uint8 itob extract 7 1 - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1672,9 +1669,9 @@ changeValidatorRewardInfo: // contracts/validatorRegistry.algo.ts:436 // this.validatorList(validatorId).value.config.entryGatingAddress = EntryGatingAddress - int 81 + pushint 81 frame_dig -3 // EntryGatingAddress: Address - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1683,9 +1680,9 @@ changeValidatorRewardInfo: // contracts/validatorRegistry.algo.ts:437 // this.validatorList(validatorId).value.config.entryGatingAssets = EntryGatingAssets - int 113 + pushint 113 frame_dig -4 // EntryGatingAssets: StaticArray - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1694,10 +1691,10 @@ changeValidatorRewardInfo: // contracts/validatorRegistry.algo.ts:438 // this.validatorList(validatorId).value.config.gatingAssetMinBalance = GatingAssetMinBalance - int 145 + intc 37 // 145 frame_dig -5 // GatingAssetMinBalance: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1706,10 +1703,10 @@ changeValidatorRewardInfo: // contracts/validatorRegistry.algo.ts:439 // this.validatorList(validatorId).value.config.rewardPerPayout = RewardPerPayout - int 161 + pushint 161 frame_dig -6 // RewardPerPayout: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -1720,7 +1717,7 @@ changeValidatorRewardInfo: // addPool(pay,uint64,uint64)(uint64,uint64,uint64) *abi_route_addPool: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // nodeNum: uint64 txna ApplicationArgs 2 @@ -1732,11 +1729,11 @@ changeValidatorRewardInfo: // mbrPayment: pay txn GroupIndex - int 1 + intc 1 // 1 - dup gtxns TypeEnum - int pay + intc 1 // pay == // argument 2 (mbrPayment) for addPool must be a pay transaction @@ -1746,7 +1743,7 @@ changeValidatorRewardInfo: callsub addPool concat log - int 1 + intc 1 // 1 return // addPool(mbrPayment: PayTxn, validatorId: ValidatorIdType, nodeNum: uint64): ValidatorPoolKey @@ -1763,7 +1760,7 @@ addPool: proto 3 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dup // contracts/validatorRegistry.algo.ts:454 @@ -1795,7 +1792,7 @@ addPool: // contracts/validatorRegistry.algo.ts:459 // assert(this.validatorList(validatorId).exists, "specified validator id isn't valid") - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -1808,9 +1805,9 @@ addPool: // contracts/validatorRegistry.algo.ts:461 // numPools: uint64 = this.validatorList(validatorId).value.state.numPools as uint64 - int 242 - int 2 - byte 0x76 // "v" + intc 9 // 242 + intc 10 // 2 + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -1823,7 +1820,7 @@ addPool: // contracts/validatorRegistry.algo.ts:462 // (numPools as uint64) >= MAX_POOLS frame_dig 0 // numPools: uint64 - int 24 + intc 3 // 24 >= bz *if9_end @@ -1835,7 +1832,7 @@ addPool: // contracts/validatorRegistry.algo.ts:465 // numPools += 1 frame_dig 0 // numPools: uint64 - int 1 + intc 1 // 1 + frame_bury 0 // numPools: uint64 @@ -1860,12 +1857,12 @@ addPool: // ], // }) itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum // contracts/validatorRegistry.algo.ts:469 // onCompletion: OnCompletion.NoOp - int 0 // NoOp + intc 0 // NoOp itxn_field OnCompletion // contracts/validatorRegistry.algo.ts:470 @@ -1873,41 +1870,41 @@ addPool: // this.stakingPoolApprovalProgram.extract(0, 4096), // this.stakingPoolApprovalProgram.extract(4096, this.stakingPoolApprovalProgram.size - 4096), // ] - byte 0x706f6f6c54656d706c617465417070726f76616c4279746573 // "poolTemplateApprovalBytes" - int 0 - int 4096 + bytec 9 // "poolTemplateApprovalBytes" + intc 0 // 0 + intc 25 // 4096 box_extract itxn_field ApprovalProgramPages - byte 0x706f6f6c54656d706c617465417070726f76616c4279746573 // "poolTemplateApprovalBytes" - int 4096 - byte 0x706f6f6c54656d706c617465417070726f76616c4279746573 // "poolTemplateApprovalBytes" + bytec 9 // "poolTemplateApprovalBytes" + intc 25 // 4096 + bytec 9 // "poolTemplateApprovalBytes" box_len // box value does not exist: this.stakingPoolApprovalProgram.size assert - int 4096 + intc 25 // 4096 - box_extract itxn_field ApprovalProgramPages // contracts/validatorRegistry.algo.ts:474 // clearStateProgram: StakingPool.clearProgram() - byte b64 Cw== + pushbytes 0x0b itxn_field ClearStateProgram // contracts/validatorRegistry.algo.ts:475 // globalNumUint: StakingPool.schema.global.numUint - int 11 + intc 35 // 11 itxn_field GlobalNumUint // contracts/validatorRegistry.algo.ts:476 // globalNumByteSlice: StakingPool.schema.global.numByteSlice - int 3 + intc 8 // 3 itxn_field GlobalNumByteSlice // contracts/validatorRegistry.algo.ts:477 // extraProgramPages: 3 - int 3 + intc 8 // 3 itxn_field ExtraProgramPages // contracts/validatorRegistry.algo.ts:478 @@ -1919,7 +1916,7 @@ addPool: // itob(numPools as uint64), // itob(this.validatorList(validatorId).value.config.minEntryStake), // ] - method "createApplication(uint64,uint64,uint64,uint64)void" + pushbytes 0x59e90aa6 // method "createApplication(uint64,uint64,uint64,uint64)void" itxn_field ApplicationArgs txna Applications 0 itob @@ -1930,9 +1927,9 @@ addPool: frame_dig 0 // numPools: uint64 itob itxn_field ApplicationArgs - int 209 - int 8 - byte 0x76 // "v" + intc 39 // 209 + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -1943,7 +1940,7 @@ addPool: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -1951,11 +1948,11 @@ addPool: // contracts/validatorRegistry.algo.ts:488 // this.validatorList(validatorId).value.state.numPools = numPools as uint16 - int 242 + intc 9 // 242 frame_dig 0 // numPools: uint64 itob extract 6 2 - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -1969,18 +1966,18 @@ addPool: // contracts/validatorRegistry.algo.ts:492 // this.validatorList(validatorId).value.pools[numPools - 1].poolAppId = poolAppId - int 268 // headOffset + intc 5 // headOffset frame_dig 0 // numPools: uint64 - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 0 + intc 0 // 0 + frame_dig 1 // poolAppId: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -2000,14 +1997,14 @@ addPool: // num: numPools as uint16, // poolAppId: AppID.fromUint64(poolAppId), // }) - byte 0xfbcc0f6b // retiOP_validatorAddedPool(uint64,uint16,uint64) + pushbytes 0xfbcc0f6b // retiOP_validatorAddedPool(uint64,uint16,uint64) frame_dig -2 // validatorId: ValidatorIdType itob frame_dig 0 // numPools: uint64 itob dup bitlen - int 16 + intc 18 // 16 <= // numPools as uint16 overflowed 16 bits @@ -2041,7 +2038,7 @@ addPool: // addStake(pay,uint64,uint64)(uint64,uint64,uint64) *abi_route_addStake: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // valueToVerify: uint64 txna ApplicationArgs 2 @@ -2053,11 +2050,11 @@ addPool: // stakedAmountPayment: pay txn GroupIndex - int 1 + intc 1 // 1 - dup gtxns TypeEnum - int pay + intc 1 // pay == // argument 2 (stakedAmountPayment) for addStake must be a pay transaction @@ -2067,7 +2064,7 @@ addPool: callsub addStake concat log - int 1 + intc 1 // 1 return // addStake(stakedAmountPayment: PayTxn, validatorId: ValidatorIdType, valueToVerify: uint64): ValidatorPoolKey @@ -2083,12 +2080,12 @@ addStake: proto 3 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 5 // contracts/validatorRegistry.algo.ts:514 // assert(this.validatorList(validatorId).exists, "specified validator id isn't valid") - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -2102,16 +2099,16 @@ addStake: // *if10_condition // contracts/validatorRegistry.algo.ts:517 // this.validatorList(validatorId).value.config.sunsettingOn > 0 - int 226 - int 8 - byte 0x76 // "v" + intc 27 // 226 + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat cover 2 box_extract btoi - int 0 + intc 0 // 0 > bz *if10_end @@ -2121,9 +2118,9 @@ addStake: // this.validatorList(validatorId).value.config.sunsettingOn > globals.latestTimestamp, // "can't stake with a validator that is past its sunsetting time", // ) - int 226 - int 8 - byte 0x76 // "v" + intc 27 // 226 + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -2179,7 +2176,7 @@ addStake: // contracts/validatorRegistry.algo.ts:540 // mbrAmtLeftBehind: uint64 = 0 - int 0 + intc 0 // 0 frame_bury 2 // mbrAmtLeftBehind: uint64 // *if11_condition @@ -2206,10 +2203,10 @@ addStake: // contracts/validatorRegistry.algo.ts:547 // this.stakerPoolSet(staker).create() - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig 0 // staker: address concat - int 144 + pushint 144 box_create pop @@ -2219,9 +2216,9 @@ addStake: // this.validatorList(validatorId).value.state.totalAlgoStaked + realAmount < this.maxAllowedStake(), // 'total staked for all of a validators pools may not exceed hard cap', // ) - int 252 - int 8 - byte 0x76 // "v" + intc 12 // 252 + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType itob concat @@ -2251,7 +2248,7 @@ addStake: frame_dig 3 // findRet: ((uint64,uint64,uint64),bool,bool) store 255 // full array load 255 // full array - int 192 + intc 22 // 192 getbit frame_bury 4 // isNewStakerToValidator: bool @@ -2260,7 +2257,7 @@ addStake: frame_dig 3 // findRet: ((uint64,uint64,uint64),bool,bool) store 255 // full array load 255 // full array - int 193 + pushint 193 getbit frame_bury 5 // isNewStakerToProtocol: bool @@ -2272,7 +2269,7 @@ addStake: load 255 // full array extract 8 8 btoi - int 0 + intc 0 // 0 == bz *if12_end @@ -2316,7 +2313,7 @@ addStake: // amountStaked: realAmount, // staker: staker, // }) - byte 0x962b4143 // retiOP_stakeAdded(uint64,uint16,uint64,address,uint64) + pushbytes 0x962b4143 // retiOP_stakeAdded(uint64,uint16,uint64,address,uint64) frame_dig -2 // validatorId: ValidatorIdType itob frame_dig 3 // findRet: ((uint64,uint64,uint64),bool,bool) @@ -2327,7 +2324,7 @@ addStake: itob dup bitlen - int 16 + intc 18 // 16 <= // poolKey.poolId as uint16 overflowed 16 bits @@ -2366,7 +2363,7 @@ addStake: // setTokenPayoutRatio(uint64)(uint64[24],uint64) *abi_route_setTokenPayoutRatio: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // validatorId: uint64 txna ApplicationArgs 1 @@ -2376,7 +2373,7 @@ addStake: callsub setTokenPayoutRatio concat log - int 1 + intc 1 // 1 return // setTokenPayoutRatio(validatorId: ValidatorIdType): PoolTokenPayoutRatio @@ -2398,14 +2395,14 @@ setTokenPayoutRatio: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 8 // contracts/validatorRegistry.algo.ts:605 // pool1AppID = this.validatorList(validatorId).value.pools[0].poolAppId - int 268 - int 8 - byte 0x76 // "v" + intc 5 // 268 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2417,7 +2414,7 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:606 // assert(pool1AppID !== 0) frame_dig 0 // pool1AppID: uint64 - int 0 + intc 0 // 0 != assert @@ -2434,9 +2431,9 @@ setTokenPayoutRatio: // *if13_consequent // contracts/validatorRegistry.algo.ts:609 // return this.validatorList(validatorId).value.tokenPayoutRatio - int 700 // headOffset - int 200 - byte 0x76 // "v" + intc 14 // headOffset + intc 19 // 200 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2452,9 +2449,9 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:616 // lastPayoutUpdate = this.validatorList(validatorId).value.tokenPayoutRatio.updatedForPayout - int 892 - int 8 - byte 0x76 // "v" + intc 31 // 892 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2467,7 +2464,7 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:617 // lastPayoutUpdate !== 0 frame_dig 2 // lastPayoutUpdate: uint64 - int 0 + intc 0 // 0 != bz *if14_end @@ -2476,7 +2473,7 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:619 // (AppID.fromUint64(pool1AppID).globalState('lastPayout') as uint64) === lastPayoutUpdate frame_dig 0 // pool1AppID: uint64 - byte 0x6c6173745061796f7574 // "lastPayout" + pushbytes 0x6c6173745061796f7574 // "lastPayout" app_global_get_ex // global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout') @@ -2488,9 +2485,9 @@ setTokenPayoutRatio: // *if15_consequent // contracts/validatorRegistry.algo.ts:620 // return this.validatorList(validatorId).value.tokenPayoutRatio - int 700 // headOffset - int 200 - byte 0x76 // "v" + intc 14 // headOffset + intc 19 // 200 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2501,9 +2498,9 @@ setTokenPayoutRatio: *if15_end: // contracts/validatorRegistry.algo.ts:622 // epochRoundLength = this.validatorList(validatorId).value.config.epochRoundLength as uint64 - int 169 - int 4 - byte 0x76 // "v" + pushint 169 + intc 15 // 4 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2536,9 +2533,9 @@ setTokenPayoutRatio: // *if16_consequent // contracts/validatorRegistry.algo.ts:626 // return this.validatorList(validatorId).value.tokenPayoutRatio - int 700 // headOffset - int 200 - byte 0x76 // "v" + intc 14 // headOffset + intc 19 // 200 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2551,10 +2548,10 @@ setTokenPayoutRatio: *if14_end: // contracts/validatorRegistry.algo.ts:629 // this.validatorList(validatorId).value.tokenPayoutRatio.updatedForPayout = curRound - int 892 + intc 31 // 892 frame_dig 1 // curRound: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2563,9 +2560,9 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:631 // curNumPools = this.validatorList(validatorId).value.state.numPools as uint64 - int 242 - int 2 - byte 0x76 // "v" + intc 9 // 242 + intc 10 // 2 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2576,9 +2573,9 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:632 // totalStakeForValidator = this.validatorList(validatorId).value.state.totalAlgoStaked - int 252 - int 8 - byte 0x76 // "v" + intc 12 // 252 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2589,7 +2586,7 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:633 // for (let i = 0; i < curNumPools; i += 1) - int 0 + intc 0 // 0 frame_bury 7 // i: uint64 *for_2: @@ -2605,24 +2602,24 @@ setTokenPayoutRatio: // [this.validatorList(validatorId).value.pools[i].totalAlgoStaked, 1_000_000], // [totalStakeForValidator], // ) - int 268 // headOffset + intc 5 // headOffset frame_dig 7 // i: uint64 - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat cover 2 box_extract btoi - int 1_000_000 + pushint 1_000_000 mulw - int 0 + intc 0 // 0 frame_dig 6 // totalStakeForValidator: uint64 divmodw pop @@ -2636,14 +2633,14 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:642 // this.validatorList(validatorId).value.tokenPayoutRatio.poolPctOfWhole[i] = ourPoolPctOfWhole - int 700 + intc 14 // 700 frame_dig 7 // i: uint64 - int 8 + intc 2 // 8 * // acc * typeLength + frame_dig 8 // ourPoolPctOfWhole: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2654,7 +2651,7 @@ setTokenPayoutRatio: // contracts/validatorRegistry.algo.ts:633 // i += 1 frame_dig 7 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 7 // i: uint64 b *for_2 @@ -2662,9 +2659,9 @@ setTokenPayoutRatio: *for_2_end: // contracts/validatorRegistry.algo.ts:644 // return this.validatorList(validatorId).value.tokenPayoutRatio - int 700 // headOffset - int 200 - byte 0x76 // "v" + intc 14 // headOffset + intc 19 // 200 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -2701,7 +2698,7 @@ setTokenPayoutRatio: txna ApplicationArgs 1 dup len - int 24 + intc 3 // 24 == // argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64) @@ -2709,7 +2706,7 @@ setTokenPayoutRatio: // execute stakeUpdatedViaRewards((uint64,uint64,uint64),uint64,uint64,uint64,uint64)void callsub stakeUpdatedViaRewards - int 1 + intc 1 // 1 return // stakeUpdatedViaRewards(poolKey: ValidatorPoolKey, algoToAdd: uint64, rewardTokenAmountReserved: uint64, validatorCommission: uint64, saturatedBurnToFeeSink: uint64): void @@ -2733,30 +2730,30 @@ stakeUpdatedViaRewards: // contracts/validatorRegistry.algo.ts:668 // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalAlgoStaked += algoToAdd - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2768,7 +2765,7 @@ stakeUpdatedViaRewards: frame_dig -2 // algoToAdd: uint64 + itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2779,10 +2776,10 @@ stakeUpdatedViaRewards: // contracts/validatorRegistry.algo.ts:669 // this.validatorList(poolKey.id).value.state.totalAlgoStaked += algoToAdd - int 252 + intc 12 // 252 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2794,7 +2791,7 @@ stakeUpdatedViaRewards: frame_dig -2 // algoToAdd: uint64 + itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2805,10 +2802,10 @@ stakeUpdatedViaRewards: // contracts/validatorRegistry.algo.ts:670 // this.validatorList(poolKey.id).value.state.rewardTokenHeldBack += rewardTokenAmountReserved - int 260 + intc 13 // 260 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2820,7 +2817,7 @@ stakeUpdatedViaRewards: frame_dig -3 // rewardTokenAmountReserved: uint64 + itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2831,11 +2828,11 @@ stakeUpdatedViaRewards: // contracts/validatorRegistry.algo.ts:672 // this.totalAlgoStaked.value += algoToAdd - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" app_global_get frame_dig -2 // algoToAdd: uint64 + - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" swap app_global_put @@ -2856,7 +2853,7 @@ stakeUpdatedViaRewards: // saturatedBurnToFeeSink: saturatedBurnToFeeSink, // validatorCommission: validatorCommission, // }) - byte 0xb3e47c3d // retiOP_epochRewardUpdate(uint64,uint16,uint64,uint64,uint64,uint64,uint64) + pushbytes 0xb3e47c3d // retiOP_epochRewardUpdate(uint64,uint16,uint64,uint64,uint64,uint64,uint64) frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -2867,7 +2864,7 @@ stakeUpdatedViaRewards: itob dup bitlen - int 16 + intc 18 // 16 <= // poolKey.poolId as uint16 overflowed 16 bits @@ -2901,12 +2898,12 @@ stakeUpdatedViaRewards: txna ApplicationArgs 5 dup len - int 1 + intc 1 // 1 == // argument 0 (stakerRemoved) for stakeRemoved must be a bool assert - int 0 + intc 0 // 0 getbit // rewardRemoved: uint64 @@ -2921,7 +2918,7 @@ stakeUpdatedViaRewards: txna ApplicationArgs 2 dup len - int 32 + intc 6 // 32 == // argument 3 (staker) for stakeRemoved must be a address @@ -2931,7 +2928,7 @@ stakeUpdatedViaRewards: txna ApplicationArgs 1 dup len - int 24 + intc 3 // 24 == // argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64) @@ -2939,7 +2936,7 @@ stakeUpdatedViaRewards: // execute stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void callsub stakeRemoved - int 1 + intc 1 // 1 return // stakeRemoved(poolKey: ValidatorPoolKey, staker: Address, amountRemoved: uint64, rewardRemoved: uint64, stakerRemoved: boolean): void @@ -2958,14 +2955,14 @@ stakeRemoved: proto 5 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 3 // *if17_condition // contracts/validatorRegistry.algo.ts:707 // globals.opcodeBudget < 300 global OpcodeBudget - int 300 + intc 29 // 300 < bz *if17_end @@ -2973,15 +2970,15 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:708 // increaseOpcodeBudget() itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 8 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 26 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -2994,12 +2991,12 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:714 // assert(amountRemoved > 0 || rewardRemoved > 0, 'should only be called if algo or reward was removed') frame_dig -3 // amountRemoved: uint64 - int 0 + intc 0 // 0 > dup bnz *skip_or2 frame_dig -4 // rewardRemoved: uint64 - int 0 + intc 0 // 0 > || @@ -3009,30 +3006,30 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:717 // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalAlgoStaked -= amountRemoved - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3044,7 +3041,7 @@ stakeRemoved: frame_dig -3 // amountRemoved: uint64 - itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3055,10 +3052,10 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:718 // this.validatorList(poolKey.id).value.state.totalAlgoStaked -= amountRemoved - int 252 + intc 12 // 252 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3070,7 +3067,7 @@ stakeRemoved: frame_dig -3 // amountRemoved: uint64 - itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3081,11 +3078,11 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:719 // this.totalAlgoStaked.value -= amountRemoved - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" app_global_get frame_dig -3 // amountRemoved: uint64 - - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" swap app_global_put @@ -3093,16 +3090,16 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:721 // rewardRemoved > 0 frame_dig -4 // rewardRemoved: uint64 - int 0 + intc 0 // 0 > bz *if18_else // *if18_consequent // contracts/validatorRegistry.algo.ts:722 // rewardTokenID = this.validatorList(poolKey.id).value.config.rewardTokenId - int 153 - int 8 - byte 0x76 // "v" + intc 38 // 153 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3116,7 +3113,7 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:723 // assert(rewardTokenID !== 0, "rewardRemoved can't be set if validator doesn't have reward token!") frame_dig 0 // rewardTokenID: uint64 - int 0 + intc 0 // 0 != // rewardRemoved can't be set if validator doesn't have reward token! @@ -3127,9 +3124,9 @@ stakeRemoved: // this.validatorList(poolKey.id).value.state.rewardTokenHeldBack >= rewardRemoved, // 'reward being removed must be covered by hold back amount', // ) - int 260 - int 8 - byte 0x76 // "v" + intc 13 // 260 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3146,10 +3143,10 @@ stakeRemoved: // contracts/validatorRegistry.algo.ts:730 // this.validatorList(poolKey.id).value.state.rewardTokenHeldBack -= rewardRemoved - int 260 + intc 13 // 260 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3161,7 +3158,7 @@ stakeRemoved: frame_dig -4 // rewardRemoved: uint64 - itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3176,7 +3173,7 @@ stakeRemoved: frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 != bz *if19_end @@ -3187,16 +3184,16 @@ stakeRemoved: // methodArgs: [staker, rewardTokenID, rewardRemoved], // }) itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - method "payTokenReward(address,uint64,uint64)void" + bytec 13 // method "payTokenReward(address,uint64,uint64)void" itxn_field ApplicationArgs // contracts/validatorRegistry.algo.ts:737 // applicationID: AppID.fromUint64(this.validatorList(poolKey.id).value.pools[0].poolAppId) - int 268 - int 8 - byte 0x76 // "v" + intc 5 // 268 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3219,7 +3216,7 @@ stakeRemoved: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -3236,7 +3233,7 @@ stakeRemoved: // rewardTokenAssetId: AssetID.fromUint64(rewardTokenID), // rewardTokensReceived: rewardRemoved, // }) - byte 0x12f4bd4b // retiOP_stakeRemoved(uint64,uint16,uint64,address,uint64,uint64,uint64) + bytec 14 // retiOP_stakeRemoved(uint64,uint16,uint64,address,uint64,uint64,uint64) frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3247,7 +3244,7 @@ stakeRemoved: itob dup bitlen - int 16 + intc 18 // 16 <= // poolKey.poolId as uint16 overflowed 16 bits @@ -3286,7 +3283,7 @@ stakeRemoved: // rewardTokenAssetId: AssetID.zeroIndex, // rewardTokensReceived: 0, // }) - byte 0x12f4bd4b // retiOP_stakeRemoved(uint64,uint16,uint64,address,uint64,uint64,uint64) + bytec 14 // retiOP_stakeRemoved(uint64,uint16,uint64,address,uint64,uint64,uint64) frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3297,7 +3294,7 @@ stakeRemoved: itob dup bitlen - int 16 + intc 18 // 16 <= // poolKey.poolId as uint16 overflowed 16 bits @@ -3314,9 +3311,9 @@ stakeRemoved: frame_dig -3 // amountRemoved: uint64 itob concat - byte 0x0000000000000000 + bytec 7 // 0x0000000000000000 concat - byte 0x0000000000000000 + bytec 7 // 0x0000000000000000 concat concat log @@ -3331,30 +3328,30 @@ stakeRemoved: // *if20_consequent // contracts/validatorRegistry.algo.ts:765 // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers -= 1 - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 8 // headOffset + intc 2 // headOffset + - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 8 // headOffset + intc 2 // headOffset + - int 2 - byte 0x76 // "v" + intc 10 // 2 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3363,11 +3360,11 @@ stakeRemoved: cover 2 box_extract btoi - int 1 + intc 1 // 1 - itob extract 6 2 - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3405,7 +3402,7 @@ stakeRemoved: frame_dig 1 // removeRet: (bool,bool) store 255 // full array load 255 // full array - int 0 + intc 0 // 0 getbit frame_bury 2 // stakerOutOfThisValidator: bool @@ -3414,7 +3411,7 @@ stakeRemoved: frame_dig 1 // removeRet: (bool,bool) store 255 // full array load 255 // full array - int 1 + intc 1 // 1 getbit frame_bury 3 // stakerOutOfProtocol: bool @@ -3427,10 +3424,10 @@ stakeRemoved: // *if21_consequent // contracts/validatorRegistry.algo.ts:776 // this.validatorList(poolKey.id).value.state.totalStakers -= 1 - int 244 + intc 23 // 244 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3439,10 +3436,10 @@ stakeRemoved: cover 2 box_extract btoi - int 1 + intc 1 // 1 - itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -3461,11 +3458,11 @@ stakeRemoved: // *if22_consequent // contracts/validatorRegistry.algo.ts:780 // this.numStakers.value -= 1 - byte 0x6e756d5374616b657273 // "numStakers" + bytec 6 // "numStakers" app_global_get - int 1 + intc 1 // 1 - - byte 0x6e756d5374616b657273 // "numStakers" + bytec 6 // "numStakers" swap app_global_put @@ -3477,7 +3474,7 @@ stakeRemoved: // findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool) *abi_route_findPoolForStaker: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // amountToStake: uint64 txna ApplicationArgs 3 @@ -3487,7 +3484,7 @@ stakeRemoved: txna ApplicationArgs 2 dup len - int 32 + intc 6 // 32 == // argument 1 (staker) for findPoolForStaker must be a address @@ -3501,7 +3498,7 @@ stakeRemoved: callsub findPoolForStaker concat log - int 1 + intc 1 // 1 return // findPoolForStaker(validatorId: ValidatorIdType, staker: Address, amountToStake: uint64): [ValidatorPoolKey, boolean, boolean] @@ -3519,17 +3516,17 @@ findPoolForStaker: proto 3 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 7 // contracts/validatorRegistry.algo.ts:802 // isNewStakerToValidator = true - int 1 + intc 1 // 1 frame_bury 0 // isNewStakerToValidator: bool // contracts/validatorRegistry.algo.ts:803 // isNewStakerToProtocol = true - int 1 + intc 1 // 1 frame_bury 1 // isNewStakerToProtocol: bool // contracts/validatorRegistry.algo.ts:811 @@ -3541,7 +3538,7 @@ findPoolForStaker: // *if23_condition // contracts/validatorRegistry.algo.ts:814 // this.stakerPoolSet(staker).exists - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -2 // staker: Address concat box_len @@ -3552,7 +3549,7 @@ findPoolForStaker: // *if23_consequent // contracts/validatorRegistry.algo.ts:815 // poolSet = clone(this.stakerPoolSet(staker).value) - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -2 // staker: Address concat box_get @@ -3564,20 +3561,20 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:816 // assert(validatorId !== 0) frame_dig -1 // validatorId: ValidatorIdType - int 0 + intc 0 // 0 != assert // contracts/validatorRegistry.algo.ts:817 // for (let i = 0; i < poolSet.length; i += 1) - int 0 + intc 0 // 0 frame_bury 4 // i: uint64 *for_3: // contracts/validatorRegistry.algo.ts:817 // i < poolSet.length frame_dig 4 // i: uint64 - int 6 + intc 7 // 6 < bz *for_3_end @@ -3585,7 +3582,7 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:818 // globals.opcodeBudget < 300 global OpcodeBudget - int 300 + intc 29 // 300 < bz *if24_end @@ -3593,15 +3590,15 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:819 // increaseOpcodeBudget() itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 8 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 26 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -3611,14 +3608,14 @@ findPoolForStaker: // poolSet[i].id === 0 frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi - int 0 + intc 0 // 0 == bz *if25_end @@ -3628,7 +3625,7 @@ findPoolForStaker: *if25_end: // contracts/validatorRegistry.algo.ts:824 // isNewStakerToProtocol = false - int 0 + intc 0 // 0 frame_bury 1 // isNewStakerToProtocol: bool // *if26_condition @@ -3636,11 +3633,11 @@ findPoolForStaker: // poolSet[i].id === validatorId frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi frame_dig -1 // validatorId: ValidatorIdType @@ -3650,7 +3647,7 @@ findPoolForStaker: // *if26_consequent // contracts/validatorRegistry.algo.ts:827 // isNewStakerToValidator = false - int 0 + intc 0 // 0 frame_bury 0 // isNewStakerToValidator: bool // *if27_condition @@ -3658,25 +3655,25 @@ findPoolForStaker: // this.validatorList(validatorId).value.pools[poolSet[i].poolId - 1].totalAlgoStaked + // amountToStake <= // maxPerPool - int 268 // headOffset + intc 5 // headOffset frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 8 // headOffset + intc 2 // headOffset + - int 8 + intc 2 // 8 extract3 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -3694,15 +3691,15 @@ findPoolForStaker: // return [poolSet[i], isNewStakerToValidator, isNewStakerToProtocol] frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 24 + intc 3 // 24 extract3 - byte 0x00 - int 0 + bytec 5 // 0x00 + intc 0 // 0 frame_dig 0 // isNewStakerToValidator: bool setbit - int 1 + intc 1 // 1 frame_dig 1 // isNewStakerToProtocol: bool setbit concat @@ -3716,7 +3713,7 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:817 // i += 1 frame_dig 4 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 4 // i: uint64 b *for_3 @@ -3730,9 +3727,9 @@ findPoolForStaker: // 'must stake at least the minimum for this pool', // ) frame_dig -3 // amountToStake: uint64 - int 209 - int 8 - byte 0x76 // "v" + intc 39 // 209 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -3746,9 +3743,9 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:846 // pools = clone(this.validatorList(validatorId).value.pools) - int 268 // headOffset - int 432 - byte 0x76 // "v" + intc 5 // headOffset + intc 30 // 432 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -3758,9 +3755,9 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:847 // curNumPools = this.validatorList(validatorId).value.state.numPools as uint64 - int 242 - int 2 - byte 0x76 // "v" + intc 9 // 242 + intc 10 // 2 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -3771,7 +3768,7 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:848 // for (let i = 0; i < curNumPools; i += 1) - int 0 + intc 0 // 0 frame_bury 7 // i: uint64 *for_4: @@ -3787,11 +3784,11 @@ findPoolForStaker: // pools[i].totalAlgoStaked + amountToStake <= maxPerPool frame_dig 5 // pools: (uint64,uint16,uint64)[24] frame_dig 7 // i: uint64 - int 18 + intc 4 // 18 * // acc * typeLength - int 10 // headOffset + intc 11 // headOffset + - int 8 + intc 2 // 8 extract3 btoi frame_dig -3 // amountToStake: uint64 @@ -3810,26 +3807,26 @@ findPoolForStaker: frame_dig -1 // validatorId: ValidatorIdType itob frame_dig 7 // i: uint64 - int 1 + intc 1 // 1 + itob concat frame_dig 5 // pools: (uint64,uint16,uint64)[24] frame_dig 7 // i: uint64 - int 18 + intc 4 // 18 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi itob concat - byte 0x00 - int 0 + bytec 5 // 0x00 + intc 0 // 0 frame_dig 0 // isNewStakerToValidator: bool setbit - int 1 + intc 1 // 1 frame_dig 1 // isNewStakerToProtocol: bool setbit concat @@ -3841,7 +3838,7 @@ findPoolForStaker: // contracts/validatorRegistry.algo.ts:848 // i += 1 frame_dig 7 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 7 // i: uint64 b *for_4 @@ -3851,15 +3848,15 @@ findPoolForStaker: // return [{ id: validatorId, poolId: 0, poolAppId: 0 }, isNewStakerToValidator, isNewStakerToProtocol] frame_dig -1 // validatorId: ValidatorIdType itob - byte 0x0000000000000000 + bytec 7 // 0x0000000000000000 concat - byte 0x0000000000000000 + bytec 7 // 0x0000000000000000 concat - byte 0x00 - int 0 + bytec 5 // 0x00 + intc 0 // 0 frame_dig 0 // isNewStakerToValidator: bool setbit - int 1 + intc 1 // 1 frame_dig 1 // isNewStakerToProtocol: bool setbit concat @@ -3888,7 +3885,7 @@ findPoolForStaker: // execute movePoolToNode(uint64,uint64,uint64)void callsub movePoolToNode - int 1 + intc 1 // 1 return // movePoolToNode(validatorId: ValidatorIdType, poolAppId: uint64, nodeNum: uint64): void @@ -3906,7 +3903,7 @@ movePoolToNode: proto 3 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:873 @@ -3916,9 +3913,9 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:875 // nodePoolAssignments = clone(this.validatorList(validatorId).value.nodePoolAssignments) - int 900 // headOffset - int 192 - byte 0x76 // "v" + intc 17 // headOffset + intc 22 // 192 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -3929,12 +3926,12 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:876 // assert(nodeNum >= 1 && nodeNum <= MAX_NODES, 'node number out of allowable range') frame_dig -3 // nodeNum: uint64 - int 1 + intc 1 // 1 >= dup bz *skip_and2 frame_dig -3 // nodeNum: uint64 - int 8 + intc 2 // 8 <= && @@ -3944,27 +3941,27 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:878 // for (let srcNodeIdx = 0; srcNodeIdx < MAX_NODES; srcNodeIdx += 1) - int 0 + intc 0 // 0 frame_bury 1 // srcNodeIdx: uint64 *for_5: // contracts/validatorRegistry.algo.ts:878 // srcNodeIdx < MAX_NODES frame_dig 1 // srcNodeIdx: uint64 - int 8 + intc 2 // 8 < bz *for_5_end // contracts/validatorRegistry.algo.ts:879 // for (let i = 0; i < MAX_POOLS_PER_NODE; i += 1) - int 0 + intc 0 // 0 frame_bury 2 // i: uint64 *for_6: // contracts/validatorRegistry.algo.ts:879 // i < MAX_POOLS_PER_NODE frame_dig 2 // i: uint64 - int 3 + intc 8 // 3 < bz *for_6_end @@ -3972,18 +3969,18 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:880 // nodePoolAssignments.nodes[srcNodeIdx].poolAppIds[i] === poolAppId frame_dig 0 // nodePoolAssignments: ((uint64[3])[8]) - int 0 + intc 0 // 0 frame_dig 1 // srcNodeIdx: uint64 - int 24 + intc 3 // 24 * // acc * typeLength + - int 0 + intc 0 // 0 + frame_dig 2 // i: uint64 - int 8 + intc 2 // 8 * // acc * typeLength + - int 8 + intc 2 // 8 extract3 btoi frame_dig -2 // poolAppId: uint64 @@ -3994,7 +3991,7 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:881 // assert(nodeNum - 1 !== srcNodeIdx, "can't move to same node") frame_dig -3 // nodeNum: uint64 - int 1 + intc 1 // 1 - frame_dig 1 // srcNodeIdx: uint64 != @@ -4004,19 +4001,19 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:883 // this.validatorList(validatorId).value.nodePoolAssignments.nodes[srcNodeIdx].poolAppIds[i] = 0 - int 900 + intc 17 // 900 frame_dig 1 // srcNodeIdx: uint64 - int 24 + intc 3 // 24 * // acc * typeLength + - int 0 + intc 0 // 0 + frame_dig 2 // i: uint64 - int 8 + intc 2 // 8 * // acc * typeLength + - byte 0x0000000000000000 - byte 0x76 // "v" + bytec 7 // 0x0000000000000000 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4028,9 +4025,9 @@ movePoolToNode: // applicationID: AppID.fromUint64(poolAppId), // }) itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - method "goOffline()void" + pushbytes 0x51ef3b21 // method "goOffline()void" itxn_field ApplicationArgs // contracts/validatorRegistry.algo.ts:887 @@ -4039,7 +4036,7 @@ movePoolToNode: itxn_field ApplicationID // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -4062,7 +4059,7 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:879 // i += 1 frame_dig 2 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 2 // i: uint64 b *for_6 @@ -4073,7 +4070,7 @@ movePoolToNode: // contracts/validatorRegistry.algo.ts:878 // srcNodeIdx += 1 frame_dig 1 // srcNodeIdx: uint64 - int 1 + intc 1 // 1 + frame_bury 1 // srcNodeIdx: uint64 b *for_5 @@ -4086,13 +4083,13 @@ movePoolToNode: // emptyTokenRewards(uint64,address)uint64 *abi_route_emptyTokenRewards: // The ABI return prefix - byte 0x151f7c75 + bytec 2 // 0x151f7c75 // receiver: address txna ApplicationArgs 2 dup len - int 32 + intc 6 // 32 == // argument 0 (receiver) for emptyTokenRewards must be a address @@ -4107,7 +4104,7 @@ movePoolToNode: itob concat log - int 1 + intc 1 // 1 return // emptyTokenRewards(validatorId: ValidatorIdType, receiver: Address): uint64 @@ -4125,7 +4122,7 @@ emptyTokenRewards: proto 2 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 3 // contracts/validatorRegistry.algo.ts:911 @@ -4135,9 +4132,9 @@ emptyTokenRewards: // contracts/validatorRegistry.algo.ts:912 // rewardTokenId = this.validatorList(validatorId).value.config.rewardTokenId - int 153 - int 8 - byte 0x76 // "v" + intc 38 // 153 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4148,9 +4145,9 @@ emptyTokenRewards: // contracts/validatorRegistry.algo.ts:913 // rewardTokenHeldBack = this.validatorList(validatorId).value.state.rewardTokenHeldBack - int 260 - int 8 - byte 0x76 // "v" + intc 13 // 260 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4162,7 +4159,7 @@ emptyTokenRewards: // contracts/validatorRegistry.algo.ts:914 // assert(rewardTokenId !== 0, "this validator doesn't have a reward token defined") frame_dig 0 // rewardTokenId: uint64 - int 0 + intc 0 // 0 != // this validator doesn't have a reward token defined @@ -4170,9 +4167,9 @@ emptyTokenRewards: // contracts/validatorRegistry.algo.ts:915 // poolOneAppId = AppID.fromUint64(this.validatorList(validatorId).value.pools[0].poolAppId) - int 268 - int 8 - byte 0x76 // "v" + intc 5 // 268 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4200,9 +4197,9 @@ emptyTokenRewards: // methodArgs: [receiver, rewardTokenId, tokenRewardBal], // }) itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - method "payTokenReward(address,uint64,uint64)void" + bytec 13 // method "payTokenReward(address,uint64,uint64)void" itxn_field ApplicationArgs // contracts/validatorRegistry.algo.ts:922 @@ -4222,7 +4219,7 @@ emptyTokenRewards: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -4266,9 +4263,9 @@ callerMustBeOwner: // 'can only be called by validator owner', // ) txn Sender - int 8 - int 32 - byte 0x76 // "v" + intc 2 // 8 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4291,9 +4288,9 @@ callerMustBeOwnerOrManager: // 'can only be called by owner or manager of validator', // ) txn Sender - int 8 - int 32 - byte 0x76 // "v" + intc 2 // 8 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4303,9 +4300,9 @@ callerMustBeOwnerOrManager: dup bnz *skip_or3 txn Sender - int 40 - int 32 - byte 0x76 // "v" + intc 20 // 40 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4329,7 +4326,7 @@ verifyPoolKeyCaller: // contracts/validatorRegistry.algo.ts:1042 // assert(this.validatorList(poolKey.id).exists, "the specified validator id isn't valid") - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4347,7 +4344,7 @@ verifyPoolKeyCaller: frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 24 + intc 3 // 24 <= // pool id not in valid range @@ -4361,16 +4358,16 @@ verifyPoolKeyCaller: frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 0 + intc 0 // 0 > dup bz *skip_and3 frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 242 - int 2 - byte 0x76 // "v" + intc 9 // 242 + intc 10 // 2 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4394,19 +4391,19 @@ verifyPoolKeyCaller: frame_dig -1 // poolKey: ValidatorPoolKey extract 16 8 btoi - int 268 // headOffset + intc 5 // headOffset frame_dig -1 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 0 + intc 0 // 0 + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4439,7 +4436,7 @@ verifyPoolKeyCaller: frame_dig -1 // poolKey: ValidatorPoolKey extract 16 8 btoi - byte 0x76616c696461746f724964 // "validatorId" + pushbytes 0x76616c696461746f724964 // "validatorId" app_global_get_ex // global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId') @@ -4455,7 +4452,7 @@ verifyPoolKeyCaller: frame_dig -1 // poolKey: ValidatorPoolKey extract 16 8 btoi - byte 0x706f6f6c4964 // "poolId" + pushbytes 0x706f6f6c4964 // "poolId" app_global_get_ex // global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId') @@ -4474,12 +4471,12 @@ reverifyNFDOwnership: proto 1 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dup // contracts/validatorRegistry.algo.ts:1068 // validatorConfig = this.validatorList(validatorId).value.config - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4488,32 +4485,32 @@ reverifyNFDOwnership: // *if30_condition // contracts/validatorRegistry.algo.ts:1069 // validatorConfig.nfdForInfo !== 0 - int 72 - int 8 - byte 0x76 // "v" + intc 21 // 72 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat cover 2 box_extract btoi - int 0 + intc 0 // 0 != bz *if30_end // *if30_consequent // contracts/validatorRegistry.algo.ts:1072 // nfdOwner = AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a') as Address - int 72 - int 8 - byte 0x76 // "v" + intc 21 // 72 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat cover 2 box_extract btoi - byte 0x692e6f776e65722e61 // "i.owner.a" + bytec 10 // "i.owner.a" app_global_get_ex // global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a') @@ -4523,9 +4520,9 @@ reverifyNFDOwnership: // *if31_condition // contracts/validatorRegistry.algo.ts:1074 // validatorConfig.owner !== nfdOwner && validatorConfig.manager !== nfdOwner - int 8 - int 32 - byte 0x76 // "v" + intc 2 // 8 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4535,9 +4532,9 @@ reverifyNFDOwnership: != dup bz *skip_and4 - int 40 - int 32 - byte 0x76 // "v" + intc 20 // 40 + intc 6 // 32 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4553,9 +4550,9 @@ reverifyNFDOwnership: // *if31_consequent // contracts/validatorRegistry.algo.ts:1076 // this.validatorList(validatorId).value.config.nfdForInfo = 0 - int 72 - byte 0x0000000000000000 - byte 0x76 // "v" + intc 21 // 72 + bytec 7 // 0x0000000000000000 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -4605,14 +4602,14 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 80 1 btoi - int 0 + intc 0 // 0 >= dup bz *skip_and5 frame_dig -1 // config: ValidatorConfig extract 80 1 btoi - int 4 + intc 15 // 4 <= && @@ -4628,14 +4625,14 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 169 4 btoi - int 1 + intc 1 // 1 >= dup bz *skip_and6 frame_dig -1 // config: ValidatorConfig extract 169 4 btoi - int 1000000 + intc 24 // 1000000 <= && @@ -4651,14 +4648,14 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 173 4 btoi - int 0 + intc 0 // 0 >= dup bz *skip_and7 frame_dig -1 // config: ValidatorConfig extract 173 4 btoi - int 1000000 + intc 24 // 1000000 <= && @@ -4672,7 +4669,7 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 173 4 btoi - int 0 + intc 0 // 0 != bz *if32_end @@ -4696,7 +4693,7 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 209 8 btoi - int 1000000 + intc 24 // 1000000 >= // staking pool must have minimum entry of 1 algo @@ -4710,14 +4707,14 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 225 1 btoi - int 0 + intc 0 // 0 > dup bz *skip_and8 frame_dig -1 // config: ValidatorConfig extract 225 1 btoi - int 3 + intc 8 // 3 <= && @@ -4731,7 +4728,7 @@ validateConfig: frame_dig -1 // config: ValidatorConfig extract 226 8 btoi - int 0 + intc 0 // 0 != bz *if33_end @@ -4765,24 +4762,24 @@ callPoolAddStake: proto 5 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:1134 // poolAppId = this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].poolAppId - int 268 // headOffset + intc 5 // headOffset frame_dig -2 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 0 + intc 0 // 0 + - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4805,7 +4802,7 @@ callPoolAddStake: // ], // }) itxn_begin - int pay + intc 1 // pay itxn_field TypeEnum // contracts/validatorRegistry.algo.ts:1143 @@ -4824,12 +4821,12 @@ callPoolAddStake: itxn_field Receiver // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee itxn_next - int appl + intc 7 // appl itxn_field TypeEnum - method "addStake(pay,address)uint64" + pushbytes 0xf9c70cbd // method "addStake(pay,address)uint64" itxn_field ApplicationArgs // contracts/validatorRegistry.algo.ts:1139 @@ -4850,13 +4847,13 @@ callPoolAddStake: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 @@ -4866,7 +4863,7 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1148 // globals.opcodeBudget < 500 global OpcodeBudget - int 500 + pushint 500 < bz *if34_end @@ -4874,15 +4871,15 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1149 // increaseOpcodeBudget() itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - int 0 + intc 0 // 0 itxn_field Fee - byte b64 CoEB // #pragma version 10; int 1 + bytec 8 // #pragma version 10; int 1 dup itxn_field ApprovalProgram itxn_field ClearStateProgram - int DeleteApplication + intc 26 // DeleteApplication itxn_field OnCompletion itxn_submit @@ -4890,7 +4887,7 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1153 // poolNumStakers = AppID.fromUint64(poolAppId).globalState('numStakers') as uint64 frame_dig 0 // poolAppId: uint64 - byte 0x6e756d5374616b657273 // "numStakers" + bytec 6 // "numStakers" app_global_get_ex // global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers') @@ -4900,7 +4897,7 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1154 // poolAlgoStaked = AppID.fromUint64(poolAppId).globalState('staked') as uint64 frame_dig 0 // poolAppId: uint64 - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" app_global_get_ex // global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked') @@ -4909,21 +4906,21 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1155 // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers = poolNumStakers as uint16 - int 268 // headOffset + intc 5 // headOffset frame_dig -2 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 8 // headOffset + intc 2 // headOffset + frame_dig 1 // poolNumStakers: uint64 itob extract 6 2 - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4934,20 +4931,20 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1156 // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalAlgoStaked = poolAlgoStaked - int 268 // headOffset + intc 5 // headOffset frame_dig -2 // poolKey: ValidatorPoolKey extract 8 8 btoi - int 1 + intc 1 // 1 - - int 18 + intc 4 // 18 * // acc * typeLength + - int 10 // headOffset + intc 11 // headOffset + frame_dig 2 // poolAlgoStaked: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4965,10 +4962,10 @@ callPoolAddStake: // *if35_consequent // contracts/validatorRegistry.algo.ts:1160 // this.validatorList(poolKey.id).value.state.totalStakers += 1 - int 244 + intc 23 // 244 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4977,10 +4974,10 @@ callPoolAddStake: cover 2 box_extract btoi - int 1 + intc 1 // 1 + itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -4999,21 +4996,21 @@ callPoolAddStake: // *if36_consequent // contracts/validatorRegistry.algo.ts:1163 // this.numStakers.value += 1 - byte 0x6e756d5374616b657273 // "numStakers" + bytec 6 // "numStakers" app_global_get - int 1 + intc 1 // 1 + - byte 0x6e756d5374616b657273 // "numStakers" + bytec 6 // "numStakers" swap app_global_put *if36_end: // contracts/validatorRegistry.algo.ts:1165 // this.validatorList(poolKey.id).value.state.totalAlgoStaked += stakedAmountPayment.amount - mbrAmtPaid - int 252 + intc 12 // 252 dup - int 8 - byte 0x76 // "v" + intc 2 // 8 + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -5028,7 +5025,7 @@ callPoolAddStake: - + itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey extract 0 8 btoi @@ -5039,14 +5036,14 @@ callPoolAddStake: // contracts/validatorRegistry.algo.ts:1166 // this.totalAlgoStaked.value += stakedAmountPayment.amount - mbrAmtPaid - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" app_global_get frame_dig -1 // stakedAmountPayment: PayTxn gtxns Amount frame_dig -3 // mbrAmtPaid: uint64 - + - byte 0x7374616b6564 // "staked" + bytec 4 // "staked" swap app_global_put retsub @@ -5056,12 +5053,12 @@ updateStakerPoolSet: proto 2 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:1170 // assert(this.stakerPoolSet(staker).exists) - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat box_len @@ -5071,7 +5068,7 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1172 // poolSet = clone(this.stakerPoolSet(staker).value) - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat box_get @@ -5082,19 +5079,19 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1173 // firstEmpty = 0 - int 0 + intc 0 // 0 frame_bury 1 // firstEmpty: uint64 // contracts/validatorRegistry.algo.ts:1174 // for (let i = 0; i < this.stakerPoolSet(staker).value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 2 // i: uint64 *for_7: // contracts/validatorRegistry.algo.ts:1174 // i < this.stakerPoolSet(staker).value.length frame_dig 2 // i: uint64 - int 6 + intc 7 // 6 < bz *for_7_end @@ -5103,9 +5100,9 @@ updateStakerPoolSet: // poolSet[i] === poolKey frame_dig 0 // poolSet: (uint64,uint64,uint64)[6] frame_dig 2 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 24 + intc 3 // 24 extract3 frame_dig -2 // poolKey: ValidatorPoolKey == @@ -5121,20 +5118,20 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1179 // firstEmpty === 0 && poolSet[i].id === 0 frame_dig 1 // firstEmpty: uint64 - int 0 + intc 0 // 0 == dup bz *skip_and9 frame_dig 0 // poolSet: (uint64,uint64,uint64)[6] frame_dig 2 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi - int 0 + intc 0 // 0 == && @@ -5145,7 +5142,7 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1180 // firstEmpty = i + 1 frame_dig 2 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 1 // firstEmpty: uint64 @@ -5155,7 +5152,7 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1174 // i += 1 frame_dig 2 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 2 // i: uint64 b *for_7 @@ -5165,7 +5162,7 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1183 // firstEmpty === 0 frame_dig 1 // firstEmpty: uint64 - int 0 + intc 0 // 0 == bz *if39_end @@ -5177,12 +5174,12 @@ updateStakerPoolSet: // contracts/validatorRegistry.algo.ts:1186 // this.stakerPoolSet(staker).value[firstEmpty - 1] = poolKey frame_dig 1 // firstEmpty: uint64 - int 1 + intc 1 // 1 - - int 24 + intc 3 // 24 * // acc * typeLength frame_dig -2 // poolKey: ValidatorPoolKey - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat cover 2 @@ -5201,27 +5198,27 @@ removeFromStakerPoolSet: proto 2 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 4 // contracts/validatorRegistry.algo.ts:1199 // inSameValidatorPoolCount = 0 - int 0 + intc 0 // 0 frame_bury 0 // inSameValidatorPoolCount: uint64 // contracts/validatorRegistry.algo.ts:1200 // inAnyPoolCount = 0 - int 0 + intc 0 // 0 frame_bury 1 // inAnyPoolCount: uint64 // contracts/validatorRegistry.algo.ts:1201 // found = false - int 0 + intc 0 // 0 frame_bury 2 // found: bool // contracts/validatorRegistry.algo.ts:1203 // poolSet = clone(this.stakerPoolSet(staker).value) - byte 0x737073 // "sps" + bytec 3 // "sps" frame_dig -1 // staker: Address concat box_get @@ -5232,14 +5229,14 @@ removeFromStakerPoolSet: // contracts/validatorRegistry.algo.ts:1204 // for (let i = 0; i < this.stakerPoolSet(staker).value.length; i += 1) - int 0 + intc 0 // 0 frame_bury 4 // i: uint64 *for_8: // contracts/validatorRegistry.algo.ts:1204 // i < this.stakerPoolSet(staker).value.length frame_dig 4 // i: uint64 - int 6 + intc 7 // 6 < bz *for_8_end @@ -5248,14 +5245,14 @@ removeFromStakerPoolSet: // poolSet[i].id === 0 frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi - int 0 + intc 0 // 0 == bz *if40_end @@ -5266,7 +5263,7 @@ removeFromStakerPoolSet: // contracts/validatorRegistry.algo.ts:1208 // inAnyPoolCount += 1 frame_dig 1 // inAnyPoolCount: uint64 - int 1 + intc 1 // 1 + frame_bury 1 // inAnyPoolCount: uint64 @@ -5275,11 +5272,11 @@ removeFromStakerPoolSet: // poolSet[i].id === poolKey.id frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 0 + intc 0 // 0 + - int 8 + intc 2 // 8 extract3 btoi frame_dig -2 // poolKey: ValidatorPoolKey @@ -5294,9 +5291,9 @@ removeFromStakerPoolSet: // poolSet[i] === poolKey frame_dig 3 // poolSet: (uint64,uint64,uint64)[6] frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - int 24 + intc 3 // 24 extract3 frame_dig -2 // poolKey: ValidatorPoolKey == @@ -5305,16 +5302,16 @@ removeFromStakerPoolSet: // *if42_consequent // contracts/validatorRegistry.algo.ts:1211 // found = true - int 1 + intc 1 // 1 frame_bury 2 // found: bool // contracts/validatorRegistry.algo.ts:1213 // this.stakerPoolSet(staker).value[i] = { id: 0, poolId: 0, poolAppId: 0 } frame_dig 4 // i: uint64 - int 24 + intc 3 // 24 * // acc * typeLength - byte 0x000000000000000000000000000000000000000000000000 - byte 0x737073 // "sps" + pushbytes 0x000000000000000000000000000000000000000000000000 + bytec 3 // "sps" frame_dig -1 // staker: Address concat cover 2 @@ -5325,7 +5322,7 @@ removeFromStakerPoolSet: // contracts/validatorRegistry.algo.ts:1215 // inSameValidatorPoolCount += 1 frame_dig 0 // inSameValidatorPoolCount: uint64 - int 1 + intc 1 // 1 + frame_bury 0 // inSameValidatorPoolCount: uint64 @@ -5337,7 +5334,7 @@ removeFromStakerPoolSet: // contracts/validatorRegistry.algo.ts:1204 // i += 1 frame_dig 4 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 4 // i: uint64 b *for_8 @@ -5357,15 +5354,15 @@ removeFromStakerPoolSet: *if43_end: // contracts/validatorRegistry.algo.ts:1223 // return [inSameValidatorPoolCount === 0, inAnyPoolCount === 0] - byte 0x00 - int 0 + bytec 5 // 0x00 + intc 0 // 0 frame_dig 0 // inSameValidatorPoolCount: uint64 - int 0 + intc 0 // 0 == setbit - int 1 + intc 1 // 1 frame_dig 1 // inAnyPoolCount: uint64 - int 0 + intc 0 // 0 == setbit @@ -5381,14 +5378,14 @@ addPoolToNode: proto 3 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:1227 // nodePoolAssignments = clone(this.validatorList(validatorId).value.nodePoolAssignments) - int 900 // headOffset - int 192 - byte 0x76 // "v" + intc 17 // headOffset + intc 22 // 192 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -5398,9 +5395,9 @@ addPoolToNode: // contracts/validatorRegistry.algo.ts:1228 // maxPoolsPerNodeForThisValidator = this.validatorList(validatorId).value.config.poolsPerNode as uint64 - int 225 - int 1 - byte 0x76 // "v" + pushint 225 + intc 1 // 1 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -5412,12 +5409,12 @@ addPoolToNode: // contracts/validatorRegistry.algo.ts:1230 // assert(nodeNum >= 1 && nodeNum <= MAX_NODES, 'node number not in valid range') frame_dig -3 // nodeNum: uint64 - int 1 + intc 1 // 1 >= dup bz *skip_and10 frame_dig -3 // nodeNum: uint64 - int 8 + intc 2 // 8 <= && @@ -5427,7 +5424,7 @@ addPoolToNode: // contracts/validatorRegistry.algo.ts:1232 // for (let i = 0; i < maxPoolsPerNodeForThisValidator; i += 1) - int 0 + intc 0 // 0 frame_bury 2 // i: uint64 *for_9: @@ -5442,45 +5439,45 @@ addPoolToNode: // contracts/validatorRegistry.algo.ts:1233 // nodePoolAssignments.nodes[nodeNum - 1].poolAppIds[i] === 0 frame_dig 0 // nodePoolAssignments: ((uint64[3])[8]) - int 0 + intc 0 // 0 frame_dig -3 // nodeNum: uint64 - int 1 + intc 1 // 1 - - int 24 + intc 3 // 24 * // acc * typeLength + - int 0 + intc 0 // 0 + frame_dig 2 // i: uint64 - int 8 + intc 2 // 8 * // acc * typeLength + - int 8 + intc 2 // 8 extract3 btoi - int 0 + intc 0 // 0 == bz *if44_end // *if44_consequent // contracts/validatorRegistry.algo.ts:1235 // this.validatorList(validatorId).value.nodePoolAssignments.nodes[nodeNum - 1].poolAppIds[i] = poolAppId - int 900 + intc 17 // 900 frame_dig -3 // nodeNum: uint64 - int 1 + intc 1 // 1 - - int 24 + intc 3 // 24 * // acc * typeLength + - int 0 + intc 0 // 0 + frame_dig 2 // i: uint64 - int 8 + intc 2 // 8 * // acc * typeLength + frame_dig -2 // poolAppId: uint64 itob - byte 0x76 // "v" + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -5497,7 +5494,7 @@ addPoolToNode: // contracts/validatorRegistry.algo.ts:1232 // i += 1 frame_dig 2 // i: uint64 - int 1 + intc 1 // 1 + frame_bury 2 // i: uint64 b *for_9 @@ -5518,14 +5515,14 @@ doesStakerMeetGating: proto 2 0 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 8 // contracts/validatorRegistry.algo.ts:1250 // type = this.validatorList(validatorId).value.config.entryGatingType - int 80 - int 1 - byte 0x76 // "v" + intc 36 // 80 + intc 1 // 1 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -5538,7 +5535,7 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1251 // type === GATING_TYPE_NONE frame_dig 0 // type: uint8 - int 0 + intc 0 // 0 == bz *if45_end @@ -5555,9 +5552,9 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1255 // config = clone(this.validatorList(validatorId).value.config) - int 0 - int 242 - byte 0x76 // "v" + intc 0 // 0 + intc 9 // 242 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -5571,12 +5568,12 @@ doesStakerMeetGating: // type === GATING_TYPE_ASSET_ID || // type === GATING_TYPE_CREATED_BY_NFD_ADDRESSES frame_dig 0 // type: uint8 - int 1 + intc 1 // 1 == dup bnz *skip_or4 frame_dig 0 // type: uint8 - int 2 + intc 10 // 2 == || @@ -5584,7 +5581,7 @@ doesStakerMeetGating: dup bnz *skip_or5 frame_dig 0 // type: uint8 - int 3 + intc 8 // 3 == || @@ -5595,15 +5592,15 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1263 // assert(valueToVerify !== 0) frame_dig -2 // valueToVerify: uint64 - int 0 + intc 0 // 0 != assert // contracts/validatorRegistry.algo.ts:1264 // balRequired = this.validatorList(validatorId).value.config.gatingAssetMinBalance - int 145 - int 8 - byte 0x76 // "v" + intc 37 // 145 + intc 2 // 8 + bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob concat @@ -5616,14 +5613,14 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1265 // balRequired === 0 frame_dig 3 // balRequired: uint64 - int 0 + intc 0 // 0 == bz *if47_end // *if47_consequent // contracts/validatorRegistry.algo.ts:1266 // balRequired = 1 - int 1 + intc 1 // 1 frame_bury 3 // balRequired: uint64 *if47_end: @@ -5647,7 +5644,7 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1273 // type === GATING_TYPE_ASSETS_CREATED_BY frame_dig 0 // type: uint8 - int 1 + intc 1 // 1 == bz *if48_end @@ -5672,14 +5669,14 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1279 // type === GATING_TYPE_ASSET_ID frame_dig 0 // type: uint8 - int 2 + intc 10 // 2 == bz *if49_end // *if49_consequent // contracts/validatorRegistry.algo.ts:1280 // found = false - int 0 + intc 0 // 0 frame_bury 4 // found: bool // contracts/validatorRegistry.algo.ts:1281 @@ -5691,7 +5688,7 @@ doesStakerMeetGating: extract 0 8 btoi frame_bury 6 // assetId: uint64 - int 0 + intc 0 // 0 frame_bury 7 // the offset we are extracting the next element from *forOf_0: @@ -5706,7 +5703,7 @@ doesStakerMeetGating: // *if50_consequent // contracts/validatorRegistry.algo.ts:1283 // found = true - int 1 + intc 1 // 1 frame_bury 4 // found: bool b *forOf_0_end @@ -5715,16 +5712,16 @@ doesStakerMeetGating: *forOf_0_continue: // increment offset and loop if not out of bounds frame_dig 7 // the offset we are extracting the next element from - int 8 + intc 2 // 8 + dup - int 32 // offset of last element + intc 6 // offset of last element < bz *forOf_0_end frame_bury 7 // the offset we are extracting the next element from frame_dig 5 // copy of the array we are iterating over frame_dig 7 // the offset we are extracting the next element from - int 8 + intc 2 // 8 extract btoi frame_bury 6 // assetId: uint64 @@ -5743,7 +5740,7 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1289 // type === GATING_TYPE_CREATED_BY_NFD_ADDRESSES frame_dig 0 // type: uint8 - int 3 + intc 8 // 3 == bz *if51_end @@ -5769,7 +5766,7 @@ doesStakerMeetGating: // contracts/validatorRegistry.algo.ts:1297 // type === GATING_TYPE_SEGMENT_OF_NFD frame_dig 0 // type: uint8 - int 4 + intc 15 // 4 == bz *if52_end @@ -5794,7 +5791,7 @@ doesStakerMeetGating: // "provided nfd for entry isn't owned or linked to the staker", // ) frame_dig 8 // userOfferedNFDAppID: uint64 - byte 0x692e6f776e65722e61 // "i.owner.a" + bytec 10 // "i.owner.a" app_global_get_ex // global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a') @@ -5819,7 +5816,7 @@ doesStakerMeetGating: // 'specified nfd must be a segment of the nfd the validator specified as a requirement', // ) frame_dig 8 // userOfferedNFDAppID: uint64 - byte 0x692e706172656e744170704944 // "i.parentAppID" + pushbytes 0x692e706172656e744170704944 // "i.parentAppID" app_global_get_ex // global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID') @@ -5849,12 +5846,12 @@ isNFDAppIDValid: proto 1 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x // contracts/validatorRegistry.algo.ts:1329 // userOfferedNFDName = AppID.fromUint64(nfdAppID).globalState('i.name') as string frame_dig -1 // nfdAppID: uint64 - byte 0x692e6e616d65 // "i.name" + pushbytes 0x692e6e616d65 // "i.name" app_global_get_ex // global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name') @@ -5868,14 +5865,14 @@ isNFDAppIDValid: // methodArgs: [userOfferedNFDName, nfdAppID], // }) itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum - method "isValidNfdAppId(string,uint64)bool" + pushbytes 0x4be22fc6 // method "isValidNfdAppId(string,uint64)bool" itxn_field ApplicationArgs // contracts/validatorRegistry.algo.ts:1332 // applicationID: AppID.fromUint64(this.nfdRegistryAppId) - load 200 // TMPL_nfdRegistryAppId + intc 28 // TMPL_nfdRegistryAppId itxn_field ApplicationID // contracts/validatorRegistry.algo.ts:1334 @@ -5893,17 +5890,17 @@ isNFDAppIDValid: itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction itxn_submit itxn NumLogs - int 1 + intc 1 // 1 - itxnas Logs extract 4 0 - int 0 + intc 0 // 0 getbit // set the subroutine return value @@ -5922,7 +5919,7 @@ isAddressInNFDCAAlgoList: proto 2 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x dupn 2 // contracts/validatorRegistry.algo.ts:1347 @@ -5931,7 +5928,7 @@ isAddressInNFDCAAlgoList: // applicationArgs: ['read_property', 'v.caAlgo.0.as'], // }) itxn_begin - int appl + intc 7 // appl itxn_field TypeEnum // contracts/validatorRegistry.algo.ts:1348 @@ -5941,13 +5938,13 @@ isAddressInNFDCAAlgoList: // contracts/validatorRegistry.algo.ts:1349 // applicationArgs: ['read_property', 'v.caAlgo.0.as'] - byte 0x726561645f70726f7065727479 // "read_property" + pushbytes 0x726561645f70726f7065727479 // "read_property" itxn_field ApplicationArgs - byte 0x762e6361416c676f2e302e6173 // "v.caAlgo.0.as" + pushbytes 0x762e6361416c676f2e302e6173 // "v.caAlgo.0.as" itxn_field ApplicationArgs // Fee field not set, defaulting to 0 - int 0 + intc 0 // 0 itxn_field Fee // Submit inner transaction @@ -5960,7 +5957,7 @@ isAddressInNFDCAAlgoList: // contracts/validatorRegistry.algo.ts:1352 // for (let i = 0; i < caAlgoData.length; i += 32) - int 0 + intc 0 // 0 frame_bury 1 // i: uint64 *for_10: @@ -5976,7 +5973,7 @@ isAddressInNFDCAAlgoList: // addr = extract3(caAlgoData, i, 32) frame_dig 0 // caAlgoData: byte[] frame_dig 1 // i: uint64 - int 32 + intc 6 // 32 extract3 frame_bury 2 // addr: byte[] @@ -5999,7 +5996,7 @@ isAddressInNFDCAAlgoList: // *if53_consequent // contracts/validatorRegistry.algo.ts:1355 // return true - int 1 + intc 1 // 1 b *isAddressInNFDCAAlgoList*return *if53_end: @@ -6008,7 +6005,7 @@ isAddressInNFDCAAlgoList: // contracts/validatorRegistry.algo.ts:1352 // i += 32 frame_dig 1 // i: uint64 - int 32 + intc 6 // 32 + frame_bury 1 // i: uint64 b *for_10 @@ -6016,7 +6013,7 @@ isAddressInNFDCAAlgoList: *for_10_end: // contracts/validatorRegistry.algo.ts:1358 // return false - int 0 + intc 0 // 0 *isAddressInNFDCAAlgoList*return: // set the subroutine return value @@ -6035,7 +6032,7 @@ algoSaturationLevel: proto 0 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x // contracts/validatorRegistry.algo.ts:1367 // online = this.getCurrentOnlineStake() @@ -6045,10 +6042,10 @@ algoSaturationLevel: // contracts/validatorRegistry.algo.ts:1369 // return wideRatio([online, MAX_VALIDATOR_SOFT_PCT_OF_ONLINE_1DECIMAL], [1000]) frame_dig 0 // online: uint64 - int 100 + pushint 100 mulw - int 0 - int 1000 + intc 0 // 0 + intc 32 // 1000 divmodw pop pop @@ -6070,7 +6067,7 @@ maxAllowedStake: proto 0 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x // contracts/validatorRegistry.algo.ts:1377 // online = this.getCurrentOnlineStake() @@ -6080,10 +6077,10 @@ maxAllowedStake: // contracts/validatorRegistry.algo.ts:1379 // return wideRatio([online, MAX_VALIDATOR_HARD_PCT_OF_ONLINE_1DECIMAL], [1000]) frame_dig 0 // online: uint64 - int 150 + pushint 150 mulw - int 0 - int 1000 + intc 0 // 0 + intc 32 // 1000 divmodw pop pop @@ -6122,18 +6119,18 @@ minBalanceForAccount: proto 7 1 // Push empty bytes after the frame pointer to reserve space for local variables - byte 0x + bytec 1 // 0x // contracts/validatorRegistry.algo.ts:1402 // minBal = ALGORAND_ACCOUNT_MIN_BALANCE - int 100000 + intc 16 // 100000 frame_bury 0 // minBal: uint64 // contracts/validatorRegistry.algo.ts:1403 // minBal += contracts * APPLICATION_BASE_FEE frame_dig 0 // minBal: uint64 frame_dig -1 // contracts: uint64 - int 100000 + intc 16 // 100000 * + frame_bury 0 // minBal: uint64 @@ -6142,7 +6139,7 @@ minBalanceForAccount: // minBal += extraPages * APPLICATION_BASE_FEE frame_dig 0 // minBal: uint64 frame_dig -2 // extraPages: uint64 - int 100000 + intc 16 // 100000 * + frame_bury 0 // minBal: uint64 @@ -6151,7 +6148,7 @@ minBalanceForAccount: // minBal += assets * ASSET_HOLDING_FEE frame_dig 0 // minBal: uint64 frame_dig -3 // assets: uint64 - int 100000 + intc 16 // 100000 * + frame_bury 0 // minBal: uint64 @@ -6160,7 +6157,7 @@ minBalanceForAccount: // minBal += localInts * SSC_VALUE_UINT frame_dig 0 // minBal: uint64 frame_dig -4 // localInts: uint64 - int 28500 + intc 33 // 28500 * + frame_bury 0 // minBal: uint64 @@ -6169,7 +6166,7 @@ minBalanceForAccount: // minBal += globalInts * SSC_VALUE_UINT frame_dig 0 // minBal: uint64 frame_dig -6 // globalInts: uint64 - int 28500 + intc 33 // 28500 * + frame_bury 0 // minBal: uint64 @@ -6178,7 +6175,7 @@ minBalanceForAccount: // minBal += localBytes * SSC_VALUE_BYTES frame_dig 0 // minBal: uint64 frame_dig -5 // localBytes: uint64 - int 50000 + intc 34 // 50000 * + frame_bury 0 // minBal: uint64 @@ -6187,7 +6184,7 @@ minBalanceForAccount: // minBal += globalBytes * SSC_VALUE_BYTES frame_dig 0 // minBal: uint64 frame_dig -7 // globalBytes: uint64 - int 50000 + intc 34 // 50000 * + frame_bury 0 // minBal: uint64 @@ -6206,15 +6203,15 @@ costForBoxStorage: // contracts/validatorRegistry.algo.ts:1417 // return SCBOX_PERBOX + totalNumBytes * SCBOX_PERBYTE - int 2500 + pushint 2500 frame_dig -1 // totalNumBytes: uint64 - int 400 + pushint 400 * + retsub *create_NoOp: - method "createApplication()void" + pushbytes 0xb8447b36 // method "createApplication()void" txna ApplicationArgs 0 match *abi_route_createApplication @@ -6222,39 +6219,39 @@ costForBoxStorage: err *call_NoOp: - method "initStakingContract(uint64)void" - method "loadStakingContractData(uint64,byte[])void" - method "finalizeStakingContract()void" - method "gas()void" - method "getMbrAmounts()(uint64,uint64,uint64,uint64)" - method "getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)" - method "getNumValidators()uint64" - method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" - method "getValidatorState(uint64)(uint16,uint64,uint64,uint64)" - method "getValidatorOwnerAndManager(uint64)(address,address)" - method "getPools(uint64)(uint64,uint16,uint64)[]" - method "getPoolAppId(uint64,uint64)uint64" - method "getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)" - method "getCurMaxStakePerPool(uint64)uint64" - method "doesStakerNeedToPayMBR(address)bool" - method "getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]" - method "getTokenPayoutRatio(uint64)(uint64[24],uint64)" - method "getNodePoolAssignments(uint64)((uint64[3])[8])" - method "getNFDRegistryID()uint64" - method "addValidator(pay,string,(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64))uint64" - method "changeValidatorManager(uint64,address)void" - method "changeValidatorSunsetInfo(uint64,uint64,uint64)void" - method "changeValidatorNFD(uint64,uint64,string)void" - method "changeValidatorCommissionAddress(uint64,address)void" - method "changeValidatorRewardInfo(uint64,uint8,address,uint64[4],uint64,uint64)void" - method "addPool(pay,uint64,uint64)(uint64,uint64,uint64)" - method "addStake(pay,uint64,uint64)(uint64,uint64,uint64)" - method "setTokenPayoutRatio(uint64)(uint64[24],uint64)" - method "stakeUpdatedViaRewards((uint64,uint64,uint64),uint64,uint64,uint64,uint64)void" - method "stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void" - method "findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)" - method "movePoolToNode(uint64,uint64,uint64)void" - method "emptyTokenRewards(uint64,address)uint64" + pushbytes 0x1b5e82c6 // method "initStakingContract(uint64)void" + pushbytes 0x79472d83 // method "loadStakingContractData(uint64,byte[])void" + pushbytes 0x5f7acfd9 // method "finalizeStakingContract()void" + pushbytes 0x3172ca9d // method "gas()void" + pushbytes 0x8a87142d // method "getMbrAmounts()(uint64,uint64,uint64,uint64)" + pushbytes 0xd1366cc3 // method "getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)" + pushbytes 0x3b045c5c // method "getNumValidators()uint64" + pushbytes 0x75aff61d // method "getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)" + pushbytes 0x1f2f0109 // method "getValidatorState(uint64)(uint16,uint64,uint64,uint64)" + pushbytes 0x2fa22c4b // method "getValidatorOwnerAndManager(uint64)(address,address)" + pushbytes 0x910e94ac // method "getPools(uint64)(uint64,uint16,uint64)[]" + pushbytes 0x572767d1 // method "getPoolAppId(uint64,uint64)uint64" + pushbytes 0x9b504aaf // method "getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)" + pushbytes 0xfbc63178 // method "getCurMaxStakePerPool(uint64)uint64" + pushbytes 0x24498cf4 // method "doesStakerNeedToPayMBR(address)bool" + pushbytes 0xf846dd7a // method "getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]" + pushbytes 0x83050501 // method "getTokenPayoutRatio(uint64)(uint64[24],uint64)" + pushbytes 0x7bbb6c8d // method "getNodePoolAssignments(uint64)((uint64[3])[8])" + pushbytes 0xf839414a // method "getNFDRegistryID()uint64" + pushbytes 0x0c317cfb // method "addValidator(pay,string,(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64))uint64" + pushbytes 0x3e288972 // method "changeValidatorManager(uint64,address)void" + pushbytes 0xdd5faada // method "changeValidatorSunsetInfo(uint64,uint64,uint64)void" + pushbytes 0x18aac7a7 // method "changeValidatorNFD(uint64,uint64,string)void" + pushbytes 0xf99ef54d // method "changeValidatorCommissionAddress(uint64,address)void" + pushbytes 0x10809d4d // method "changeValidatorRewardInfo(uint64,uint8,address,uint64[4],uint64,uint64)void" + pushbytes 0xe778dd5a // method "addPool(pay,uint64,uint64)(uint64,uint64,uint64)" + pushbytes 0xbf5259d0 // method "addStake(pay,uint64,uint64)(uint64,uint64,uint64)" + pushbytes 0x4df8d86e // method "setTokenPayoutRatio(uint64)(uint64[24],uint64)" + pushbytes 0x418fcefc // method "stakeUpdatedViaRewards((uint64,uint64,uint64),uint64,uint64,uint64,uint64)void" + pushbytes 0xa2dc51b5 // method "stakeRemoved((uint64,uint64,uint64),address,uint64,uint64,bool)void" + pushbytes 0x2873f504 // method "findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)" + pushbytes 0x0547f4fe // method "movePoolToNode(uint64,uint64,uint64)void" + pushbytes 0xcb668358 // method "emptyTokenRewards(uint64,address)uint64" txna ApplicationArgs 0 match *abi_route_initStakingContract *abi_route_loadStakingContractData *abi_route_finalizeStakingContract *abi_route_gas *abi_route_getMbrAmounts *abi_route_getProtocolConstraints *abi_route_getNumValidators *abi_route_getValidatorConfig *abi_route_getValidatorState *abi_route_getValidatorOwnerAndManager *abi_route_getPools *abi_route_getPoolAppId *abi_route_getPoolInfo *abi_route_getCurMaxStakePerPool *abi_route_doesStakerNeedToPayMBR *abi_route_getStakedPoolsForAccount *abi_route_getTokenPayoutRatio *abi_route_getNodePoolAssignments *abi_route_getNFDRegistryID *abi_route_addValidator *abi_route_changeValidatorManager *abi_route_changeValidatorSunsetInfo *abi_route_changeValidatorNFD *abi_route_changeValidatorCommissionAddress *abi_route_changeValidatorRewardInfo *abi_route_addPool *abi_route_addStake *abi_route_setTokenPayoutRatio *abi_route_stakeUpdatedViaRewards *abi_route_stakeRemoved *abi_route_findPoolForStaker *abi_route_movePoolToNode *abi_route_emptyTokenRewards diff --git a/contracts/contracts/artifacts/ValidatorRegistry.arc32.json b/contracts/contracts/artifacts/ValidatorRegistry.arc32.json index de1add17..445cd44c 100644 --- a/contracts/contracts/artifacts/ValidatorRegistry.arc32.json +++ b/contracts/contracts/artifacts/ValidatorRegistry.arc32.json @@ -216,7 +216,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50IDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKTogdm9pZApjcmVhdGVBcHBsaWNhdGlvbjoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyCgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZSAweDY5NmU2OTc0IC8vICJpbml0IgoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSAwCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlID0gMAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uY3JlYXRlKGFwcHJvdmFsUHJvZ3JhbVNpemUpCglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkCiphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGE6CgkvLyBkYXRhOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gb2Zmc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoJY2FsbHN1YiBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YQoJaW50IDEKCXJldHVybgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEob2Zmc2V0OiB1aW50NjQsIGRhdGE6IGJ5dGVzKTogdm9pZApsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YToKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGUgMHg2OTZlNjk3NCAvLyAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NQoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5yZXBsYWNlKG9mZnNldCwgZGF0YSkKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50IDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlIDB4Njk2ZTY5NzQgLy8gImluaXQiCglpbnQgMQoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50IDMKCWludCAxMQoJaW50IDAKCWR1cG4gMgoJaW50IDMKCWludCAxCgljYWxsc3ViIG1pbkJhbGFuY2VGb3JBY2NvdW50CglpdG9iCgljb25jYXQKCWludCAxMDAwMDAKCWludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglpbnQgMTc5CgljYWxsc3ViIGNvc3RGb3JCb3hTdG9yYWdlCglpdG9iCgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UHJvdG9jb2xDb25zdHJhaW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKTogQ29uc3RyYWludHMKLy8KLy8gUmV0dXJucyB0aGUgcHJvdG9jb2wgY29uc3RyYWludHMgc28gdGhhdCBVSXMgY2FuIGxpbWl0IHdoYXQgdXNlcnMgc3BlY2lmeSBmb3IgdmFsaWRhdG9yIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OQoJLy8gcmV0dXJuIHsKCS8vICAgICAgICAgICAgIGVwb2NoUGF5b3V0Um91bmRzTWluOiBNSU5fRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNYXg6IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBtaW5QY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1JTl9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWF4UGN0VG9WYWxpZGF0b3JXRm91ckRlY2ltYWxzOiBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICAgICAgIG1pbkVudHJ5U3Rha2U6IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLAoJLy8gICAgICAgICAgICAgbWF4QWxnb1BlclBvb2w6IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCksCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyVmFsaWRhdG9yOiB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgYW10Q29uc2lkZXJlZFNhdHVyYXRlZDogdGhpcy5hbGdvU2F0dXJhdGlvbkxldmVsKCksCgkvLyAgICAgICAgICAgICBtYXhOb2RlczogTUFYX05PREVTLAoJLy8gICAgICAgICAgICAgbWF4UG9vbHNQZXJOb2RlOiBNQVhfUE9PTFNfUEVSX05PREUsCgkvLyAgICAgICAgICAgICBtYXhTdGFrZXJzUGVyUG9vbDogTUFYX1NUQUtFUlNfUEVSX1BPT0wsCgkvLyAgICAgICAgIH0KCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGY0MjQwMDAwMDAwMDAwMDBmNDI0MAoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAzCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMGM4Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CiphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9yczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQKCWNhbGxzdWIgZ2V0TnVtVmFsaWRhdG9ycwoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE51bVZhbGlkYXRvcnMoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkYXRvcnMKZ2V0TnVtVmFsaWRhdG9yczoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE2OQoJLy8gcmV0dXJuIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZQoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglpbnQgMAoJaW50IDI0MgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludCAyNDIgLy8gaGVhZE9mZnNldAoJaW50IDI2CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50IDgKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJY29uY2F0CglyZXRzdWIKCi8vIGdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRQb29sczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoJY2FsbHN1YiBnZXRQb29scwoJZHVwCglsZW4KCWludCAxOAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sSW5mb1tdCi8vCi8vIFJldHVybiBsaXN0IG9mIGFsbCBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZAovLyBAcmV0dXJuIHtQb29sSW5mb1tdfSAtIGFycmF5IG9mIHBvb2xzCi8vIE5vdCBjYWxsYWJsZSBmcm9tIG90aGVyIGNvbnRyYWN0cyBiZWNhdXNlID4xSyByZXR1cm4gYnV0IGNhbiBiZSBjYWxsZWQgdy8gc2ltdWxhdGUgd2hpY2ggYnVtcHMgbG9nIHJldHVybnMKZ2V0UG9vbHM6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk5CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludCAyNjggLy8gaGVhZE9mZnNldAoJaW50IDQzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDEKCS8vIHBvb2xTZXRbaV0ucG9vbEFwcElkID09PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWYwX2VuZAoKCS8vICppZjBfY29uc2VxdWVudAoJYiAqZm9yXzBfZW5kCgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDE4CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA3CgkvLyByZXR1cm4gcmV0RGF0YQoJZnJhbWVfZGlnIDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZ2V0UG9vbEFwcElkOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBwb29sSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBnZXRQb29sQXBwSWQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBnZXRQb29sQXBwSWQodmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQpOiB1aW50NjQKLy8KLy8gZ2V0UG9vbEFwcElkIGlzIHVzZWZ1bCBmb3IgY2FsbGVycyB0byBkZXRlcm1pbmUgYXBwIHRvIGNhbGwgZm9yIHJlbW92aW5nIHN0YWtlIGlmIHRoZXkgZG9uJ3QgaGF2ZSBzdGFraW5nIG9yCi8vIHdhbnQgdG8gZ2V0IHN0YWtlciBsaXN0IGZvciBhbiBhY2NvdW50LiAgVGhlIHN0YWtpbmcgcG9vbCBhbHNvIHVzZXMgaXQgdG8gZ2V0IHRoZSBhcHAgaWQgb2Ygc3Rha2luZyBwb29sIDEKLy8gKHdoaWNoIGNvbnRhaW5zIHJld2FyZCB0b2tlbnMgaWYgYmVpbmcgdXNlZCkgc28gdGhhdCB0aGUgYW1vdW50IGF2YWlsYWJsZSBjYW4gYmUgZGV0ZXJtaW5lZC4KZ2V0UG9vbEFwcElkOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjE3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglieiAqc2tpcF9hbmQwCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAyNAoJPD0KCSYmCgoqc2tpcF9hbmQwOgoJLy8gcG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sSWQgLSAxXS5wb29sQXBwSWQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXJldHN1YgoKLy8gZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCiphYmlfcm91dGVfZ2V0UG9vbEluZm86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIGdldFBvb2xJbmZvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJY2FsbHN1YiBnZXRQb29sSW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xJbmZvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sSW5mbwpnZXRQb29sSW5mbzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIyNgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglpbnQgMjE3CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50IDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY3CgkvLyAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJYnogKmlmM19lbmQKCgkvLyAqaWYzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2OAoJLy8gcmV0dXJuIFtdCglieXRlIDB4CgliICpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuCgoqaWYzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MAoJLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzEKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKCWNhbGxzdWIgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModmFsaWRhdG9ySWQ6IHVpbnQ2NCk6IE5vZGVQb29sQXNzaWdubWVudENvbmZpZwpnZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJcHJvdG8gMSAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mjk0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoJY2FsbHN1YiBnZXRORkRSZWdpc3RyeUlECglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpOiB1aW50NjQKZ2V0TkZEUmVnaXN0cnlJRDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMwMQoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZAoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0CgljYWxsc3ViIGFkZFZhbGlkYXRvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFZhbGlkYXRvcihtYnJQYXltZW50OiBQYXlUeG4sIG5mZE5hbWU6IHN0cmluZywgY29uZmlnOiBWYWxpZGF0b3JDb25maWcpOiB1aW50NjQKLy8KLy8gQWRkcyBhIG5ldyB2YWxpZGF0b3IKLy8gUmVxdWlyZXMgYXQgbGVhc3QgMTAgQUxHTyBhcyB0aGUgJ2ZlZScgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBoZWxwIGRpc3N1YWRlIHNwYW1tZWQgdmFsaWRhdG9yIGFkZHMuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgdmFsaWRhdG9yIHN0b3JhZ2UKLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgKE9wdGlvbmFsKSBOYW1lIG9mIG5mZCAodXNlZCBhcyBkb3VibGUtY2hlY2sgYWdhaW5zdCBpZCBzcGVjaWZpZWQgaW4gY29uZmlnKQovLyBAcGFyYW0ge1ZhbGlkYXRvckNvbmZpZ30gY29uZmlnIFZhbGlkYXRvckNvbmZpZyBzdHJ1Y3QKLy8gQHJldHVybnMge3VpbnQ2NH0gdmFsaWRhdG9yIGlkCmFkZFZhbGlkYXRvcjoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzEzCgkvLyB0aGlzLnZhbGlkYXRlQ29uZmlnKGNvbmZpZykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJY2FsbHN1YiB2YWxpZGF0ZUNvbmZpZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNQoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNwoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCWludCAxMDAwMDAwMAoJPgoKCS8vIGZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gdmFsaWRhdG9ySWQgPSB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgKyAxCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuY3JlYXRlKCkKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaW50IDEwOTIKCWJveF9jcmVhdGUKCXBvcAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcgPSBjb25maWcKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmlkID0gdmFsaWRhdG9ySWQKCWludCAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGUgMHg2OTJlNmY3NzZlNjU3MjJlNjEgLy8gImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM4CgkvLyBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCWJ5dGUgMHhhOGRkMjFjYiAvLyByZXRpT1BfYWRkZWRWYWxpZGF0b3IodWludDY0LGFkZHJlc3MsYWRkcmVzcykKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXI6CgkvLyBtYW5hZ2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1hbmFnZXIpIGZvciBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcgoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBtYW5hZ2VyOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBWYWxpZGF0b3IgbWFuYWdlciBmb3IgYSBzcGVjaWZpYyBWYWxpZGF0b3IgaWQuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gY2hhbmdlIHRoZSBtYW5hZ2VyIGZvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBtYW5hZ2VyIC0gVGhlIG5ldyBtYW5hZ2VyIGFkZHJlc3MuCmNoYW5nZVZhbGlkYXRvck1hbmFnZXI6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTkKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MAoJLy8gYXNzZXJ0KG1hbmFnZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MsICduZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzJykKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gbmVlZHMgdG8gYXQgbGVhc3QgYmUgdmFsaWQgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyID0gbWFuYWdlcgoJaW50IDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCS8vIHN1bnNldHRpbmdUbzogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Vuc2V0dGluZ09uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbwoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdW5zZXR0aW5nT246IHVpbnQ2NCwgc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUpOiB2b2lkCi8vCi8vIFVwZGF0ZXMgdGhlIHN1bnNldCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiB2YWxpZGF0b3IuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ09uIC0gVGhlIG5ldyBzdW5zZXQgdGltZXN0YW1wLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ1RvIC0gVGhlIG5ldyBzdW5zZXQgdG8gdmFsaWRhdG9yIGlkLgpjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzczCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzQKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50IDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ1RvID0gc3Vuc2V0dGluZ1RvCglpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEOgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIG5mZEFwcElEOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JORkQKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBuZmRBcHBJRDogdWludDY0LCBuZmROYW1lOiBzdHJpbmcpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIE5GRCBmb3IgYSB2YWxpZGF0b3IgaW4gdGhlIHZhbGlkYXRvckxpc3QgY29udHJhY3QuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIE5GRCB0byBhc3NpZ24gdG8gdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgTkZEICh3aGljaCBtdXN0IG1hdGNoKQpjaGFuZ2VWYWxpZGF0b3JORkQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OQoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozOTEKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludCA3MgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDAzCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDQKCS8vIGFzc2VydChjb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglpbnQgMTc3CglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjAKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgRW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgRW50cnlHYXRpbmdUeXBlIDwgR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgICAgICAgJ2ludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPAoJJiYKCipza2lwX2FuZDE6CgkvLyBpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlCglhc3NlcnQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI2CgkvLyBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDEKCT09CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI3CgkvLyBhc3NlcnQoRW50cnlHYXRpbmdBZGRyZXNzICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoqaWY3X2VuZDoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzAKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICAgICAgICBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludCA4MAoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglpbnQgODEKCWZyYW1lX2RpZyAtMyAvLyBFbnRyeUdhdGluZ0FkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWZyYW1lX2RpZyAtNSAvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJaW50IDE2MQoJZnJhbWVfZGlnIC02IC8vIFJld2FyZFBlclBheW91dDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAobWJyUGF5bWVudCkgZm9yIGFkZFBvb2wgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkUG9vbAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFBvb2wobWJyUGF5bWVudDogUGF5VHhuLCB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBub2RlTnVtOiB1aW50NjQpOiBWYWxpZGF0b3JQb29sS2V5Ci8vCi8vIEFkZHMgYSBuZXcgcG9vbCB0byBhIHZhbGlkYXRvcidzIHBvb2wgc2V0LCByZXR1cm5pbmcgdGhlICdrZXknIHRvIHJlZmVyZW5jZSB0aGUgcG9vbCBpbiB0aGUgZnV0dXJlIGZvciBzdGFraW5nLCBldGMuCi8vIFRoZSBjYWxsZXIgbXVzdCBwYXkgdGhlIGNvc3Qgb2YgdGhlIHZhbGlkYXRvcnMgTUJSIGluY3JlYXNlIGFzIHdlbGwgYXMgdGhlIE1CUiB0aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgcG9vbCBpdHNlbGYuCi8vCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBjYWxsIF0KLy8gQHBhcmFtIHtQYXlUeG59IG1iclBheW1lbnQgcGF5bWVudCBmcm9tIGNhbGxlciB3aGljaCBjb3ZlcnMgbWJyIGluY3JlYXNlIG9mIGFkZGluZyBhIG5ldyBwb29sCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCBpcyBpZCBvZiB2YWxpZGF0b3IgdG8gcG9vbCB0byAobXVzdCBiZSBvd25lciBvciBtYW5hZ2VyKQovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bSBpcyBub2RlIG51bWJlciB0byBhZGQgdG8KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2wga2V5IHRvIGNyZWF0ZWQgcG9vbAphZGRQb29sOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NAoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU3CgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiB0aGlzLmdldE1ickFtb3VudHMoKS5hZGRQb29sTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTkKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY5CgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnQgMCAvLyBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCAwCglpbnQgNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCA0MDk2CglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfbGVuCgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUKCWFzc2VydAoJaW50IDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCWJ5dGUgYjY0IEN3PT0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzUKCS8vIGdsb2JhbE51bVVpbnQ6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtVWludAoJaW50IDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzYKCS8vIGdsb2JhbE51bUJ5dGVTbGljZTogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UKCWludCAzCglpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NwoJLy8gZXh0cmFQcm9ncmFtUGFnZXM6IDMKCWludCAzCglpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc4CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyBjcmVhdGluZ0NvbnRyYWN0SUQsIHZhbGlkYXRvcklkLCBwb29sSWQsIG1pbkVudHJ5U3Rha2UKCS8vICAgICAgICAgICAgICAgICBtZXRob2QoJ2NyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkJyksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih2YWxpZGF0b3JJZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYihudW1Qb29scyBhcyB1aW50NjQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICAgICAgICBdCgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnQgMjA5CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyA9IG51bVBvb2xzIGFzIHVpbnQxNgoJaW50IDI0MgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDkxCgkvLyBwb29sQXBwSWQgPSB0aGlzLml0eG4uY3JlYXRlZEFwcGxpY2F0aW9uSUQuaWQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWZyYW1lX2J1cnkgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tudW1Qb29scyAtIDFdLnBvb2xBcHBJZCA9IHBvb2xBcHBJZAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCWJ5dGUgMHhmYmNjMGY2YiAvLyByZXRpT1BfdmFsaWRhdG9yQWRkZWRQb29sKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnQgMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA1CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglpbnQgMTQ0Cglib3hfY3JlYXRlCglwb3AKCippZjExX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKyByZWFsQW1vdW50IDwgdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSwKCS8vICAgICAgICAgICAgICd0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAnLAoJLy8gICAgICAgICApCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJKwoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OAoJLy8gZmluZFJldCA9IHRoaXMuZmluZFBvb2xGb3JTdGFrZXIodmFsaWRhdG9ySWQsIHN0YWtlciwgcmVhbEFtb3VudCkKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJZnJhbWVfYnVyeSAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NTkKCS8vIHBvb2xLZXkgPSBmaW5kUmV0WzBdCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYyCgkvLyBwb29sS2V5LnBvb2xJZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEyX2VuZAoKCS8vICppZjEyX2NvbnNlcXVlbnQKCS8vIE5vIHBvb2wgYXZhaWxhYmxlIHdpdGggZnJlZSBzdGFrZS4gIFZhbGlkYXRvciBuZWVkcyB0byBhZGQgYW5vdGhlciBwb29sCgllcnIKCippZjEyX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2NwoJLy8gdGhpcy51cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlciwgcG9vbEtleSkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY2FsbHN1YiB1cGRhdGVTdGFrZXJQb29sU2V0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTcwCgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgICAgICAgcG9vbEtleSwKCS8vICAgICAgICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCWZyYW1lX2RpZyA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJY2FsbHN1YiBjYWxsUG9vbEFkZFN0YWtlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTc3CgkvLyB0aGlzLnJldGlPUF9zdGFrZUFkZGVkLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogdmFsaWRhdG9ySWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYW1vdW50U3Rha2VkOiByZWFsQW1vdW50LAoJLy8gICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgIH0pCglieXRlIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglpdG9iCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTg1CgkvLyByZXR1cm4gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gOAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNQoJLy8gcG9vbDFBcHBJRCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkCglpbnQgMjY4CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTUKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNgoJLy8gbGFzdFBheW91dFVwZGF0ZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby51cGRhdGVkRm9yUGF5b3V0CglpbnQgODkyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCgkvLyAqaWYxNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNwoJLy8gbGFzdFBheW91dFVwZGF0ZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglpbnQgMAoJIT0KCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vICppZjE1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE5CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjIKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJaW50IDE2OQoJaW50IDQKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNQoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTZfZW5kCgoJLy8gKmlmMTZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI2CgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvCglpbnQgNzAwIC8vIGhlYWRPZmZzZXQKCWludCAyMDAKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnQgODkyCglmcmFtZV9kaWcgMSAvLyBjdXJSb3VuZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50IDI0MgoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnQgMV8wMDBfMDAwCgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVtpXSA9IG91clBvb2xQY3RPZldob2xlCglpbnQgNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50IDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAxMCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayArPSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkCglpbnQgMjYwCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NQoJLy8gdGhpcy5yZXZlcmlmeU5GRE93bmVyc2hpcChwb29sS2V5LmlkKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgljYWxsc3ViIHJldmVyaWZ5TkZET3duZXJzaGlwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc3CgkvLyB0aGlzLnJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZS5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYWxnb0FkZGVkOiBhbGdvVG9BZGQsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkhlbGRCYWNrOiByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkLAoJLy8gICAgICAgICAgICAgc2F0dXJhdGVkQnVyblRvRmVlU2luazogc2F0dXJhdGVkQnVyblRvRmVlU2luaywKCS8vICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb246IHZhbGlkYXRvckNvbW1pc3Npb24sCgkvLyAgICAgICAgIH0pCglieXRlIDB4YjNlNDdjM2QgLy8gcmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlKHVpbnQ2NCx1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNSAvLyBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZDoKCS8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXJSZW1vdmVkKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBib29sCglhc3NlcnQKCWludCAwCglnZXRiaXQKCgkvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMyAoc3Rha2VyKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoJY2FsbHN1YiBzdGFrZVJlbW92ZWQKCWludCAxCglyZXR1cm4KCi8vIHN0YWtlUmVtb3ZlZChwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NCwgcmV3YXJkUmVtb3ZlZDogdWludDY0LCBzdGFrZXJSZW1vdmVkOiBib29sZWFuKTogdm9pZAovLwovLyBzdGFrZVJlbW92ZWQgaXMgY2FsbGVkIGJ5IFN0YWtpbmcgcG9vbHMgdG8gaW5mb3JtIHRoZSB2YWxpZGF0b3IgKHVzKSB0aGF0IGEgcGFydGljdWxhciBhbW91bnQgb2YgdG90YWwgc3Rha2UgaGFzIGJlZW4gcmVtb3ZlZAovLyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIElmIGFueSBhbW91bnQgb2YgcmV3YXJkUmVtb3ZlZCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhhdCBhbW91bnQgb2YgcmV3YXJkIGlzIHNlbnQgdG8gdGhlIHVzZQovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgY2FsbGluZyB1cyBmcm9tIHdoaWNoIHN0YWtlIHdhcyByZW1vdmVkCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRSZW1vdmVkIC0gYWxnbyBhbW91bnQgcmVtb3ZlZAovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkUmVtb3ZlZCAtIGlmIGFwcGxpY2FibGUsIGFtb3VudCBvZiB0b2tlbiByZXdhcmQgcmVtb3ZlZCAoYnkgcG9vbCAxIGNhbGxlcikgb3IgVE8gcmVtb3ZlIGFuZCBwYXkgb3V0ICh2aWEgcG9vbCAxIGZyb20gZGlmZmVyZW50IHBvb2wgY2FsbGVyKQovLyBAcGFyYW0ge2Jvb2xlYW59IHN0YWtlclJlbW92ZWQKc3Rha2VSZW1vdmVkOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vICppZjE3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA3CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxN19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTAKCS8vIHRoaXMudmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWNhbGxzdWIgdmVyaWZ5UG9vbEtleUNhbGxlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxNAoJLy8gYXNzZXJ0KGFtb3VudFJlbW92ZWQgPiAwIHx8IHJld2FyZFJlbW92ZWQgPiAwLCAnc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkJykKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+CglkdXAKCWJueiAqc2tpcF9vcjIKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+Cgl8fAoKKnNraXBfb3IyOgoJLy8gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gKmlmMThfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjEKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMThfZWxzZQoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMgoJLy8gcmV3YXJkVG9rZW5JRCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMwoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSUQgIT09IDAsICJyZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpbnQgMAoJIT0KCgkvLyByZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyNAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrID49IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgJ3Jld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgICAgICkKCWludCAyNjAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCT49CgoJLy8gcmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczMAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgLT0gcmV3YXJkUmVtb3ZlZAoJaW50IDI2MAoJZHVwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZCkKCWludCAyNjgKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczOAoJLy8gbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0KCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjE5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc0MQoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VSZW1vdmVkLmxvZyh7CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgYW1vdW50VW5zdGFrZWQ6IGFtb3VudFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JRCksCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWIgKmlmMThfZW5kCgoqaWYxOF9lbHNlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzUxCgkvLyB0aGlzLnJldGlPUF9zdGFrZVJlbW92ZWQubG9nKHsKCS8vICAgICAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICBzdGFrZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICBhbW91bnRVbnN0YWtlZDogYW1vdW50UmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAvLyBubyB0b2tlbnMgcmV3YXJkZWQuLgoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC56ZXJvSW5kZXgsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IDAsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludCAyNDQKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzkKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wKCWZyYW1lX2RpZyAzIC8vIHN0YWtlck91dE9mUHJvdG9jb2w6IGJvb2wKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc4MAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNgoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDYKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjRfZW5kOgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjEKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjI1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNAoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmFsc2UKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjUKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNwoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyOQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sU2V0W2ldLnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgOCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMzCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF0KCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjdfZW5kOgoKKmlmMjZfZW5kOgoKKmZvcl8zX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJaW50IDIwOQoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ2CgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWludCA0MzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ3CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl80OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ5CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlIDB4MDAKCWludCAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludCAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50IDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzYKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgOAoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc4CgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCA8IE1BWF9OT0RFUwoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgOAoJPAoJYnogKmZvcl81X2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MAoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID09PSBwb29sQXBwSWQKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MQoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50IDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODgzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludCA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4NgoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODg3CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MQoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyOV9lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggKz0gMQoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgkvLyBjb3VsZG4ndCBmaW5kIHBvb2wgYXBwIGlkIGluIG5vZGVzIHRvIG1vdmUKCWVycgoJcmV0c3ViCgovLyBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAocmVjZWl2ZXIpIGZvciBlbXB0eVRva2VuUmV3YXJkcyBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGVtcHR5VG9rZW5SZXdhcmRzCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZW1wdHlUb2tlblJld2FyZHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcmVjZWl2ZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gU2VuZHMgdGhlIHJld2FyZCB0b2tlbnMgaGVsZCBpbiBwb29sIDEgdG8gc3BlY2lmaWVkIHJlY2VpdmVyLgovLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIG93bmVyIHdoZW4gdGhleSB3YW50IHRvIGdldCByZXdhcmQgdG9rZW5zICdiYWNrJyB3aGljaCB0aGV5IHNlbnQgdG8KLy8gdGhlIGZpcnN0IHBvb2wgKGxpa2VseSBiZWNhdXNlIHZhbGlkYXRvciBpcyBzdW5zZXR0aW5nLiAgQW55IHRva2VucyBjdXJyZW50bHkgJ3Jlc2VydmVkJyBmb3Igc3Rha2VycyB0byBjbGFpbSB3aWxsCi8vIE5PVCBiZSBzZW50IGFzIHRoZXkgbXVzdCBiZSBoZWxkIGJhY2sgZm9yIHN0YWtlcnMgdG8gbGF0ZXIgY2xhaW0uCi8vIFsgT05MWSBPV05FUiBDQU4gQ0FMTF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gcmVjZWl2ZXIgLSB0aGUgYWNjb3VudCB0byBzZW5kIHRoZSB0b2tlbnMgdG8gKG11c3QgYWxyZWFkeSBiZSBvcHRlZC1pbiB0byB0aGUgcmV3YXJkIHRva2VuKQovLyBAcmV0dXJucyB7dWludDY0fSB0aGUgYW1vdW50IG9mIHJld2FyZCB0b2tlbiBzZW50CmVtcHR5VG9rZW5SZXdhcmRzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxMQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEyCgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEzCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrCglpbnQgMjYwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTQKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnQgMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE1CgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50IDI2OAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTcKCS8vIHRva2VuUmV3YXJkQmFsID0KCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkyMQoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5wYXlUb2tlblJld2FyZD4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3JlY2VpdmVyLCByZXdhcmRUb2tlbklkLCB0b2tlblJld2FyZEJhbF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDI5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyIHx8CgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWludCA4CglpbnQgMzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnQgNDAKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyB2ZXJpZnlQb29sS2V5Q2FsbGVyIHZlcmlmaWVzIHRoZSBwYXNzZWQgaW4ga2V5IChmcm9tIGEgc3Rha2luZyBwb29sIGNhbGxpbmcgdXMgdG8gdXBkYXRlIG1ldHJpY3MpIGlzIHZhbGlkCi8vIGFuZCBtYXRjaGVzIHRoZSBpbmZvcm1hdGlvbiB3ZSBoYXZlIGluIG91ciBzdGF0ZS4gICdGYWtlJyBwb29scyBjb3VsZCBjYWxsIHVzIHRvIHVwZGF0ZSBvdXIgZGF0YSwgYnV0IHRoZXkKLy8gY2FuJ3QgZmFrZSB0aGUgaWRzIGFuZCBtb3N0IGltcG9ydGFudGx5IGFwcGxpY2F0aW9uIGlkKCEpIG9mIHRoZSBjYWxsZXIgdGhhdCBoYXMgdG8gbWF0Y2guCnZlcmlmeVBvb2xLZXlDYWxsZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQyCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBhc3NlcnQocG9vbEtleS5pZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCd2YWxpZGF0b3JJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OAoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjkKCS8vIHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvICE9PSAwCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMF9lbmQKCgkvLyAqaWYzMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDcyCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzQKCS8vIHZhbGlkYXRvckNvbmZpZy5vd25lciAhPT0gbmZkT3duZXIgJiYgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIgIT09IG5mZE93bmVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnQgNzIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDkxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA+PSBNSU5fRVBPQ0hfTEVOR1RIICYmIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIDw9IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICAnZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA+PSBNSU5fUENUX1RPX1ZBTElEQVRPUiAmJiBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yIDw9IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgJ2NvbW1pc3Npb24gcGVyY2VudGFnZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ3CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludCAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMDcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXInLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludCAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50IDMKCTw9CgkmJgoKKnNraXBfYW5kODoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTExMQoJLy8gY29uZmlnLnN1bnNldHRpbmdPbiAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTIKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMzX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzNAoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQzCgkvLyByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWl0eG5fbmV4dAoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTM5CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQwCgkvLyBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDgKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgNTAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYzNF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTUzCgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsU3Rha2VycyA9IHBvb2xOdW1TdGFrZXJzIGFzIHVpbnQxNgoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCA9IHBvb2xBbGdvU3Rha2VkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnQgMjQ0CglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAxCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sCglmcmFtZV9kaWcgLTUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuCglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkrCglieXRlIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgLy8gIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludCAyNTIKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTY2CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzAKCS8vIGFzc2VydCh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMpCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3MgoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDEKCS0KCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyByZW1vdmVGcm9tU3Rha2VyUG9vbFNldChzdGFrZXI6IEFkZHJlc3MsIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBbYm9vbGVhbiwgYm9vbGVhbl0KLy8KLy8gUmVtb3ZlcyBhIHBvb2wga2V5IGZyb20gdGhlIHN0YWtlcidzIGFjdGl2ZSBwb29sIHNldCAtIGZhaWxzIGlmIG5vdCBmb3VuZCAoISkKLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUgcG9vbCBrZXkgdGhleSBzaG91bGQgYmUgc3RvcmVkIGluCi8vCi8vIEByZXR1cm4gW2Jvb2xlYW4sIGJvb2xlYW5dIFtpcyB0aGUgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHMgb2YgdGhlIGdpdmVuIFZBTElEQVRPUiwgYW5kIGlzIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzXQpyZW1vdmVGcm9tU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk5CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMAoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAxCgkvLyBmb3VuZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl84OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNQoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0MF9lbmQKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwOAoJLy8gaW5BbnlQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA5CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWY0MV9lbmQKCgkvLyAqaWY0MV9jb25zZXF1ZW50CgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDJfZWxzZQoKCS8vICppZjQyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTEKCS8vIGZvdW5kID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTMKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0Ml9lbmQKCippZjQyX2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzgKCipmb3JfOF9lbmQ6CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTkKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyMwoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXQoJYnl0ZSAweDAwCglpbnQgMAoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAwCgk9PQoJc2V0Yml0CglpbnQgMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDAKCT09CglzZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIGFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKYWRkUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJaW50IDIyNQoJaW50IDEKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJLQoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludCA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgktCglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50IDgwCglpbnQgMQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50IDAKCWludCAyNDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0Nl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRCB8fAoJLy8gICAgICAgICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50IDEKCT09CglkdXAKCWJueiAqc2tpcF9vcjQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50IDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAyCgk9PQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MAoJLy8gZm91bmQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MgoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MwoJLy8gZm91bmQgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgliICpmb3JPZl8wX2VuZAoKKmlmNTBfZW5kOgoKKmZvck9mXzBfY29udGludWU6CgkvLyBpbmNyZW1lbnQgb2Zmc2V0IGFuZCBsb29wIGlmIG5vdCBvdXQgb2YgYm91bmRzCglmcmFtZV9kaWcgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoJaW50IDgKCSsKCWR1cAoJaW50IDMyIC8vIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnQgOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0OV9lbmQ6CgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAzCgk9PQoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNTFfZW5kOgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk3CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxMAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTJfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOQoJLy8gdXNlck9mZmVyZWRORkROYW1lID0gQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpIGFzIHN0cmluZwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiaXNWYWxpZE5mZEFwcElkKHN0cmluZyx1aW50NjQpYm9vbCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglsb2FkIDIwMCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnQgMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDkKCS8vIGFwcGxpY2F0aW9uQXJnczogWydyZWFkX3Byb3BlcnR5JywgJ3YuY2FBbGdvLjAuYXMnXQoJYnl0ZSAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWJ5dGUgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjYUFsZ29EYXRhLmxlbmd0aDsgaSArPSAzMikKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgoqZm9yXzEwOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTMKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU0CgkvLyBhZGRyICE9PSByYXdCeXRlcyhnbG9iYWxzLnplcm9BZGRyZXNzKSAmJiBhZGRyID09PSByYXdCeXRlcyhhZGRyVG9GaW5kKQoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDExCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWZyYW1lX2RpZyAtMiAvLyBhZGRyVG9GaW5kOiBBZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDExOgoJYnogKmlmNTNfZW5kCgoJLy8gKmlmNTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1NQoJLy8gcmV0dXJuIHRydWUKCWludCAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1M19lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSArPSAzMgoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCSsKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCWIgKmZvcl8xMAoKKmZvcl8xMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU4CgkvLyByZXR1cm4gZmFsc2UKCWludCAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfSEFSRF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxNTAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludCAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIG1pbkJhbCArPSBjb250cmFjdHMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyBjb250cmFjdHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNAoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludCAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNgoJLy8gbWluQmFsICs9IGxvY2FsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC00IC8vIGxvY2FsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDcKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA5CgkvLyBtaW5CYWwgKz0gZ2xvYmFsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTcgLy8gZ2xvYmFsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDEwCgkvLyByZXR1cm4gbWluQmFsCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDE3CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEUKCWludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCgltZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCW1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCgltZXRob2QgImdhcygpdm9pZCIKCW1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCgltZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCW1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCgltZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCgltZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCgltZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCW1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCW1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCW1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCW1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCW1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/contracts/contracts/artifacts/ValidatorRegistry.arc56_draft.json b/contracts/contracts/artifacts/ValidatorRegistry.arc56_draft.json index 91fd54fe..ce2f177a 100644 --- a/contracts/contracts/artifacts/ValidatorRegistry.arc56_draft.json +++ b/contracts/contracts/artifacts/ValidatorRegistry.arc56_draft.json @@ -1473,28205 +1473,28013 @@ "call": [] }, "sourceInfo": { - "approval": [ - { - "teal": 1, - "source": 50, - "pc": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170 - ] - }, - { - "teal": 9, - "source": 50, - "pc": [ - 171, - 172 - ] - }, - { - "teal": 10, - "source": 50, - "pc": [ - 173 - ] - }, - { - "teal": 11, - "source": 50, - "pc": [ - 174, - 175 - ] - }, - { - "teal": 18, - "source": 50, - "pc": [ - 176, - 177 - ] - }, - { - "teal": 19, - "source": 50, - "pc": [ - 178 - ] - }, - { - "teal": 20, - "source": 50, - "pc": [ - 179, - 180 - ] - }, - { - "teal": 21, - "source": 50, - "pc": [ - 181 - ] - }, - { - "teal": 22, - "source": 50, - "pc": [ - 182, - 183 - ] - }, - { - "teal": 23, - "source": 50, - "pc": [ - 184 - ] - }, - { - "teal": 24, - "source": 50, - "pc": [ - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210 - ] - }, - { - "teal": 28, - "source": 50, - "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", - "pc": [ - 211 - ] - }, - { - "teal": 33, - "source": 81, - "pc": [ - 212, - 213, - 214 - ] - }, - { - "teal": 34, - "source": 81, - "pc": [ - 215 - ] - }, - { - "teal": 35, - "source": 81, - "pc": [ - 216 - ] - }, - { - "teal": 39, - "source": 81, - "pc": [ - 217, - 218, - 219 - ] - }, - { - "teal": 43, - "source": 82, - "pc": [ - 220, - 221 - ] - }, - { - "teal": 44, - "source": 82, - "pc": [ - 222 - ] - }, - { - "teal": 45, - "source": 82, - "pc": [ - 223, - 224 - ] - }, - { - "teal": 46, - "source": 82, - "pc": [ - 225 - ] - }, - { - "teal": 47, - "source": 82, - "pc": [ - 226, - 227 - ] - }, - { - "teal": 48, - "source": 82, - "pc": [ - 228 - ] - }, - { - "teal": 49, - "source": 82, - "pc": [ - 229 - ] - }, - { - "teal": 53, - "source": 83, - "pc": [ - 230, - 231 - ] - }, - { - "teal": 54, - "source": 83, - "pc": [ - 232 - ] - }, - { - "teal": 55, - "source": 83, - "pc": [ - 233 - ] - }, - { - "teal": 59, - "source": 84, - "pc": [ - 234, - 235 - ] - }, - { - "teal": 60, - "source": 84, - "pc": [ - 236 - ] - }, - { - "teal": 61, - "source": 84, - "pc": [ - 237 - ] - }, - { - "teal": 65, - "source": 85, - "pc": [ - 238, - 239 - ] - }, - { - "teal": 66, - "source": 85, - "pc": [ - 240 - ] - }, - { - "teal": 67, - "source": 85, - "pc": [ - 241 - ] - }, - { - "teal": 68, - "source": 81, - "pc": [ - 242 - ] - }, - { - "teal": 73, - "source": 88, - "pc": [ - 243, - 244, - 245 - ] - }, - { - "teal": 74, - "source": 88, - "pc": [ - 246 - ] - }, - { - "teal": 77, - "source": 88, - "pc": [ - 247, - 248, - 249 - ] - }, - { - "teal": 78, - "source": 88, - "pc": [ - 250 - ] - }, - { - "teal": 79, - "source": 88, - "pc": [ - 251 - ] - }, - { - "teal": 83, - "source": 88, - "pc": [ - 252, - 253, - 254 - ] - }, - { - "teal": 87, - "source": 90, - "pc": [ - 255, - 256 - ] - }, - { - "teal": 88, - "source": 90, - "pc": [ - 257, - 258 - ] - }, - { - "teal": 89, - "source": 90, - "pc": [ - 259 - ] - }, - { - "teal": 90, - "source": 90, - "pc": [ - 260 - ] - }, - { - "teal": 91, - "source": 88, - "pc": [ - 261 - ] - }, - { - "teal": 96, - "source": 93, - "pc": [ - 262, - 263, - 264 - ] - }, - { - "teal": 97, - "source": 93, - "pc": [ - 265, - 266, - 267 - ] - }, - { - "teal": 100, - "source": 93, - "pc": [ - 268, - 269, - 270 - ] - }, - { - "teal": 101, - "source": 93, - "pc": [ - 271 - ] - }, - { - "teal": 104, - "source": 93, - "pc": [ - 272, - 273, - 274 - ] - }, - { - "teal": 105, - "source": 93, - "pc": [ - 275 - ] - }, - { - "teal": 106, - "source": 93, - "pc": [ - 276 - ] - }, - { - "teal": 110, - "source": 93, - "pc": [ - 277, - 278, - 279 - ] - }, - { - "teal": 114, - "source": 94, - "pc": [ - 280, - 281 - ] - }, - { - "teal": 115, - "source": 94, - "pc": [ - 282 - ] - }, - { - "teal": 116, - "source": 94, - "pc": [ - 283 - ] - }, - { - "teal": 117, - "source": 94, - "pc": [ - 284 - ] - }, - { - "teal": 118, - "source": 94, - "pc": [ - 285 - ] - }, - { - "teal": 119, - "source": 94, - "pc": [ - 286 - ] - }, - { - "teal": 123, - "source": 95, - "pc": [ - 287, - 288 - ] - }, - { - "teal": 124, - "source": 95, - "pc": [ - 289, - 290 - ] - }, - { - "teal": 125, - "source": 95, - "pc": [ - 291, - 292 - ] - }, - { - "teal": 126, - "source": 95, - "pc": [ - 293 - ] - }, - { - "teal": 127, - "source": 93, - "pc": [ - 294 - ] - }, - { - "teal": 132, - "source": 98, - "pc": [ - 295, - 296, - 297 - ] - }, - { - "teal": 133, - "source": 98, - "pc": [ - 298 - ] - }, - { - "teal": 134, - "source": 98, - "pc": [ - 299 - ] - }, - { - "teal": 138, - "source": 98, - "pc": [ - 300, - 301, - 302 - ] - }, - { - "teal": 142, - "source": 99, - "pc": [ - 303, - 304 - ] - }, - { - "teal": 143, - "source": 99, - "pc": [ - 305 - ] - }, - { - "teal": 144, - "source": 99, - "pc": [ - 306, - 307 - ] - }, - { - "teal": 145, - "source": 99, - "pc": [ - 308 - ] - }, - { - "teal": 146, - "source": 99, - "pc": [ - 309, - 310 - ] - }, - { - "teal": 147, - "source": 99, - "pc": [ - 311 - ] - }, - { - "teal": 148, - "source": 99, - "pc": [ - 312 - ] - }, - { - "teal": 149, - "source": 98, - "pc": [ - 313 - ] - }, - { - "teal": 154, - "source": 105, - "pc": [ - 314, - 315, - 316 - ] - }, - { - "teal": 155, - "source": 105, - "pc": [ - 317 - ] - }, - { - "teal": 156, - "source": 105, - "pc": [ - 318 - ] - }, - { - "teal": 162, - "source": 105, - "pc": [ - 319, - 320, - 321 - ] - }, - { - "teal": 163, - "source": 105, - "pc": [ - 322 - ] - }, - { - "teal": 168, - "source": 116, - "pc": [ - 323 - ] - }, - { - "teal": 171, - "source": 116, - "pc": [ - 324, - 325, - 326 - ] - }, - { - "teal": 172, - "source": 116, - "pc": [ - 327 - ] - }, - { - "teal": 173, - "source": 116, - "pc": [ - 328 - ] - }, - { - "teal": 174, - "source": 116, - "pc": [ - 329 - ] - }, - { - "teal": 175, - "source": 116, - "pc": [ - 330 - ] - }, - { - "teal": 187, - "source": 116, - "pc": [ - 331, - 332, - 333 - ] - }, - { - "teal": 212, - "source": 121, - "pc": [ - 334, - 335, - 336 - ] - }, - { - "teal": 213, - "source": 121, - "pc": [ - 337, - 338, - 339 - ] - }, - { - "teal": 214, - "source": 121, - "pc": [ - 340 - ] - }, - { - "teal": 215, - "source": 131, - "pc": [ - 341, - 342 - ] - }, - { - "teal": 216, - "source": 130, - "pc": [ - 343, - 344 - ] - }, - { - "teal": 217, - "source": 129, - "pc": [ - 345 - ] - }, - { - "teal": 218, - "source": 129, - "pc": [ - 346, - 347 - ] - }, - { - "teal": 219, - "source": 126, - "pc": [ - 348, - 349 - ] - }, - { - "teal": 220, - "source": 123, - "pc": [ - 350 - ] - }, - { - "teal": 221, - "source": 122, - "pc": [ - 351, - 352, - 353 - ] - }, - { - "teal": 222, - "source": 122, - "pc": [ - 354 - ] - }, - { - "teal": 223, - "source": 122, - "pc": [ - 355 - ] - }, - { - "teal": 224, - "source": 134, - "pc": [ - 356, - 357 - ] - }, - { - "teal": 225, - "source": 135, - "pc": [ - 358, - 359, - 360 - ] - }, - { - "teal": 226, - "source": 135, - "pc": [ - 361, - 362, - 363 - ] - }, - { - "teal": 227, - "source": 134, - "pc": [ - 364 - ] - }, - { - "teal": 228, - "source": 134, - "pc": [ - 365 - ] - }, - { - "teal": 229, - "source": 134, - "pc": [ - 366 - ] - }, - { - "teal": 230, - "source": 139, - "pc": [ - 367, - 368, - 369 - ] - }, - { - "teal": 231, - "source": 138, - "pc": [ - 370, - 371, - 372 - ] - }, - { - "teal": 232, - "source": 138, - "pc": [ - 373 - ] - }, - { - "teal": 233, - "source": 138, - "pc": [ - 374 - ] - }, - { - "teal": 234, - "source": 116, - "pc": [ - 375 - ] - }, - { - "teal": 239, - "source": 147, - "pc": [ - 376 - ] - }, - { - "teal": 242, - "source": 147, - "pc": [ - 377, - 378, - 379 - ] - }, - { - "teal": 243, - "source": 147, - "pc": [ - 380 - ] - }, - { - "teal": 244, - "source": 147, - "pc": [ - 381 - ] - }, - { - "teal": 245, - "source": 147, - "pc": [ - 382 - ] - }, - { - "teal": 246, - "source": 147, - "pc": [ - 383 - ] - }, - { - "teal": 252, - "source": 147, - "pc": [ - 384, - 385, - 386 - ] - }, - { - "teal": 268, - "source": 154, - "pc": [ - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428 - ] - }, - { - "teal": 269, - "source": 155, - "pc": [ - 429, - 430, - 431 - ] - }, - { - "teal": 270, - "source": 155, - "pc": [ - 432 - ] - }, - { - "teal": 271, - "source": 155, - "pc": [ - 433 - ] - }, - { - "teal": 272, - "source": 156, - "pc": [ - 434, - 435, - 436 - ] - }, - { - "teal": 273, - "source": 156, - "pc": [ - 437 - ] - }, - { - "teal": 274, - "source": 156, - "pc": [ - 438 - ] - }, - { - "teal": 275, - "source": 157, - "pc": [ - 439, - 440, - 441 - ] - }, - { - "teal": 276, - "source": 157, - "pc": [ - 442 - ] - }, - { - "teal": 277, - "source": 157, - "pc": [ - 443 - ] - }, - { - "teal": 278, - "source": 158, - "pc": [ - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453 - ] - }, - { - "teal": 279, - "source": 158, - "pc": [ - 454 - ] - }, - { - "teal": 280, - "source": 159, - "pc": [ - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464 - ] - }, - { - "teal": 281, - "source": 159, - "pc": [ - 465 - ] - }, - { - "teal": 282, - "source": 160, - "pc": [ - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475 - ] - }, - { - "teal": 283, - "source": 160, - "pc": [ - 476 - ] - }, - { - "teal": 284, - "source": 147, - "pc": [ - 477 - ] - }, - { - "teal": 289, - "source": 167, - "pc": [ - 478 - ] - }, - { - "teal": 292, - "source": 167, - "pc": [ - 479, - 480, - 481 - ] - }, - { - "teal": 293, - "source": 167, - "pc": [ - 482 - ] - }, - { - "teal": 294, - "source": 167, - "pc": [ - 483 - ] - }, - { - "teal": 295, - "source": 167, - "pc": [ - 484 - ] - }, - { - "teal": 296, - "source": 167, - "pc": [ - 485 - ] - }, - { - "teal": 297, - "source": 167, - "pc": [ - 486 - ] - }, - { - "teal": 303, - "source": 167, - "pc": [ - 487, - 488, - 489 - ] - }, - { - "teal": 307, - "source": 169, - "pc": [ - 490, - 491 - ] - }, - { - "teal": 308, - "source": 169, - "pc": [ - 492 - ] - }, - { - "teal": 309, - "source": 167, - "pc": [ - 493 - ] - }, - { - "teal": 314, - "source": 172, - "pc": [ - 494 - ] - }, - { - "teal": 317, - "source": 173, - "pc": [ - 495, - 496, - 497 - ] - }, - { - "teal": 318, - "source": 173, - "pc": [ - 498 - ] - }, - { - "teal": 321, - "source": 172, - "pc": [ - 499, - 500, - 501 - ] - }, - { - "teal": 322, - "source": 172, - "pc": [ - 502 - ] - }, - { - "teal": 323, - "source": 172, - "pc": [ - 503 - ] - }, - { - "teal": 324, - "source": 172, - "pc": [ - 504 - ] - }, - { - "teal": 325, - "source": 172, - "pc": [ - 505 - ] - }, - { - "teal": 329, - "source": 172, - "pc": [ - 506, - 507, - 508 - ] - }, - { - "teal": 333, - "source": 174, - "pc": [ - 509 - ] - }, - { - "teal": 334, - "source": 174, - "pc": [ - 510, - 511 - ] - }, - { - "teal": 335, - "source": 174, - "pc": [ - 512 - ] - }, - { - "teal": 336, - "source": 174, - "pc": [ - 513, - 514 - ] - }, - { - "teal": 337, - "source": 174, - "pc": [ - 515 - ] - }, - { - "teal": 338, - "source": 174, - "pc": [ - 516 - ] - }, - { - "teal": 339, - "source": 174, - "pc": [ - 517, - 518 - ] - }, - { - "teal": 340, - "source": 174, - "pc": [ - 519 - ] - }, - { - "teal": 341, - "source": 172, - "pc": [ - 520 - ] - }, - { - "teal": 346, - "source": 177, - "pc": [ - 521 - ] - }, - { - "teal": 349, - "source": 178, - "pc": [ - 522, - 523, - 524 - ] - }, - { - "teal": 350, - "source": 178, - "pc": [ - 525 - ] - }, - { - "teal": 353, - "source": 177, - "pc": [ - 526, - 527, - 528 - ] - }, - { - "teal": 354, - "source": 177, - "pc": [ - 529 - ] - }, - { - "teal": 355, - "source": 177, - "pc": [ - 530 - ] - }, - { - "teal": 356, - "source": 177, - "pc": [ - 531 - ] - }, - { - "teal": 357, - "source": 177, - "pc": [ - 532 - ] - }, - { - "teal": 361, - "source": 177, - "pc": [ - 533, - 534, - 535 - ] - }, - { - "teal": 365, - "source": 179, - "pc": [ - 536, - 537 - ] - }, - { - "teal": 366, - "source": 179, - "pc": [ - 538, - 539 - ] - }, - { - "teal": 367, - "source": 179, - "pc": [ - 540 - ] - }, - { - "teal": 368, - "source": 179, - "pc": [ - 541, - 542 - ] - }, - { - "teal": 369, - "source": 179, - "pc": [ - 543 - ] - }, - { - "teal": 370, - "source": 179, - "pc": [ - 544 - ] - }, - { - "teal": 371, - "source": 179, - "pc": [ - 545, - 546 - ] - }, - { - "teal": 372, - "source": 179, - "pc": [ - 547 - ] - }, - { - "teal": 373, - "source": 177, - "pc": [ - 548 - ] - }, - { - "teal": 378, - "source": 182, - "pc": [ - 549 - ] - }, - { - "teal": 381, - "source": 183, - "pc": [ - 550, - 551, - 552 - ] - }, - { - "teal": 382, - "source": 183, - "pc": [ - 553 - ] - }, - { - "teal": 385, - "source": 182, - "pc": [ - 554, - 555, - 556 - ] - }, - { - "teal": 386, - "source": 182, - "pc": [ - 557 - ] - }, - { - "teal": 387, - "source": 182, - "pc": [ - 558 - ] - }, - { - "teal": 388, - "source": 182, - "pc": [ - 559 - ] - }, - { - "teal": 389, - "source": 182, - "pc": [ - 560 - ] - }, - { - "teal": 393, - "source": 182, - "pc": [ - 561, - 562, - 563 - ] - }, - { - "teal": 400, - "source": 185, - "pc": [ - 564 - ] - }, - { - "teal": 401, - "source": 185, - "pc": [ - 565, - 566 - ] - }, - { - "teal": 402, - "source": 185, - "pc": [ - 567 - ] - }, - { - "teal": 403, - "source": 185, - "pc": [ - 568, - 569 - ] - }, - { - "teal": 404, - "source": 185, - "pc": [ - 570 - ] - }, - { - "teal": 405, - "source": 185, - "pc": [ - 571 - ] - }, - { - "teal": 406, - "source": 185, - "pc": [ - 572, - 573 - ] - }, - { - "teal": 407, - "source": 185, - "pc": [ - 574 - ] - }, - { - "teal": 408, - "source": 186, - "pc": [ - 575, - 576 - ] - }, - { - "teal": 409, - "source": 186, - "pc": [ - 577, - 578 - ] - }, - { - "teal": 410, - "source": 186, - "pc": [ - 579 - ] - }, - { - "teal": 411, - "source": 186, - "pc": [ - 580, - 581 - ] - }, - { - "teal": 412, - "source": 186, - "pc": [ - 582 - ] - }, - { - "teal": 413, - "source": 186, - "pc": [ - 583 - ] - }, - { - "teal": 414, - "source": 186, - "pc": [ - 584, - 585 - ] - }, - { - "teal": 415, - "source": 186, - "pc": [ - 586 - ] - }, - { - "teal": 416, - "source": 186, - "pc": [ - 587 - ] - }, - { - "teal": 417, - "source": 182, - "pc": [ - 588 - ] - }, - { - "teal": 422, - "source": 196, - "pc": [ - 589 - ] - }, - { - "teal": 425, - "source": 197, - "pc": [ - 590, - 591, - 592 - ] - }, - { - "teal": 426, - "source": 197, - "pc": [ - 593 - ] - }, - { - "teal": 429, - "source": 196, - "pc": [ - 594, - 595, - 596 - ] - }, - { - "teal": 430, - "source": 196, - "pc": [ - 597 - ] - }, - { - "teal": 431, - "source": 196, - "pc": [ - 598 - ] - }, - { - "teal": 432, - "source": 196, - "pc": [ - 599, - 600 - ] - }, - { - "teal": 433, - "source": 196, - "pc": [ - 601 - ] - }, - { - "teal": 434, - "source": 196, - "pc": [ - 602 - ] - }, - { - "teal": 435, - "source": 196, - "pc": [ - 603, - 604, - 605 - ] - }, - { - "teal": 436, - "source": 196, - "pc": [ - 606 - ] - }, - { - "teal": 437, - "source": 196, - "pc": [ - 607 - ] - }, - { - "teal": 438, - "source": 196, - "pc": [ - 608 - ] - }, - { - "teal": 439, - "source": 196, - "pc": [ - 609 - ] - }, - { - "teal": 440, - "source": 196, - "pc": [ - 610 - ] - }, - { - "teal": 441, - "source": 196, - "pc": [ - 611 - ] - }, - { - "teal": 450, - "source": 196, - "pc": [ - 612, - 613, - 614 - ] - }, - { - "teal": 453, - "source": 196, - "pc": [ - 615 - ] - }, - { - "teal": 454, - "source": 196, - "pc": [ - 616, - 617 - ] - }, - { - "teal": 458, - "source": 198, - "pc": [ - 618 - ] - }, - { - "teal": 459, - "source": 198, - "pc": [ - 619, - 620 - ] - }, - { - "teal": 463, - "source": 199, - "pc": [ - 621, - 622 - ] - }, - { - "teal": 464, - "source": 199, - "pc": [ - 623, - 624 - ] - }, - { - "teal": 465, - "source": 199, - "pc": [ - 625 - ] - }, - { - "teal": 466, - "source": 199, - "pc": [ - 626, - 627 - ] - }, - { - "teal": 467, - "source": 199, - "pc": [ - 628 - ] - }, - { - "teal": 468, - "source": 199, - "pc": [ - 629 - ] - }, - { - "teal": 469, - "source": 199, - "pc": [ - 630, - 631 - ] - }, - { - "teal": 470, - "source": 199, - "pc": [ - 632 - ] - }, - { - "teal": 471, - "source": 199, - "pc": [ - 633, - 634 - ] - }, - { - "teal": 475, - "source": 200, - "pc": [ - 635 - ] - }, - { - "teal": 476, - "source": 200, - "pc": [ - 636, - 637 - ] - }, - { - "teal": 481, - "source": 200, - "pc": [ - 638, - 639 - ] - }, - { - "teal": 482, - "source": 200, - "pc": [ - 640 - ] - }, - { - "teal": 483, - "source": 200, - "pc": [ - 641 - ] - }, - { - "teal": 484, - "source": 200, - "pc": [ - 642, - 643, - 644 - ] - }, - { - "teal": 489, - "source": 201, - "pc": [ - 645, - 646 - ] - }, - { - "teal": 490, - "source": 201, - "pc": [ - 647, - 648 - ] - }, - { - "teal": 491, - "source": 201, - "pc": [ - 649, - 650 - ] - }, - { - "teal": 492, - "source": 201, - "pc": [ - 651 - ] - }, - { - "teal": 493, - "source": 201, - "pc": [ - 652 - ] - }, - { - "teal": 494, - "source": 201, - "pc": [ - 653 - ] - }, - { - "teal": 495, - "source": 201, - "pc": [ - 654 - ] - }, - { - "teal": 496, - "source": 201, - "pc": [ - 655 - ] - }, - { - "teal": 497, - "source": 201, - "pc": [ - 656 - ] - }, - { - "teal": 498, - "source": 201, - "pc": [ - 657 - ] - }, - { - "teal": 499, - "source": 201, - "pc": [ - 658 - ] - }, - { - "teal": 500, - "source": 201, - "pc": [ - 659, - 660, - 661 - ] - }, - { - "teal": 503, - "source": 203, - "pc": [ - 662, - 663, - 664 - ] - }, - { - "teal": 508, - "source": 205, - "pc": [ - 665, - 666 - ] - }, - { - "teal": 509, - "source": 205, - "pc": [ - 667, - 668 - ] - }, - { - "teal": 510, - "source": 205, - "pc": [ - 669, - 670 - ] - }, - { - "teal": 511, - "source": 205, - "pc": [ - 671, - 672 - ] - }, - { - "teal": 512, - "source": 205, - "pc": [ - 673 - ] - }, - { - "teal": 513, - "source": 205, - "pc": [ - 674, - 675 - ] - }, - { - "teal": 514, - "source": 205, - "pc": [ - 676 - ] - }, - { - "teal": 515, - "source": 205, - "pc": [ - 677 - ] - }, - { - "teal": 516, - "source": 205, - "pc": [ - 678, - 679 - ] - }, - { - "teal": 521, - "source": 200, - "pc": [ - 680, - 681 - ] - }, - { - "teal": 522, - "source": 200, - "pc": [ - 682 - ] - }, - { - "teal": 523, - "source": 200, - "pc": [ - 683 - ] - }, - { - "teal": 524, - "source": 200, - "pc": [ - 684, - 685 - ] - }, - { - "teal": 525, - "source": 200, - "pc": [ - 686, - 687, - 688 - ] - }, - { - "teal": 530, - "source": 207, - "pc": [ - 689, - 690 - ] - }, - { - "teal": 533, - "source": 196, - "pc": [ - 691, - 692 - ] - }, - { - "teal": 536, - "source": 196, - "pc": [ - 693, - 694 - ] - }, - { - "teal": 537, - "source": 196, - "pc": [ - 695 - ] - }, - { - "teal": 542, - "source": 215, - "pc": [ - 696 - ] - }, - { - "teal": 545, - "source": 216, - "pc": [ - 697, - 698, - 699 - ] - }, - { - "teal": 546, - "source": 216, - "pc": [ - 700 - ] - }, - { - "teal": 549, - "source": 216, - "pc": [ - 701, - 702, - 703 - ] - }, - { - "teal": 550, - "source": 216, - "pc": [ - 704 - ] - }, - { - "teal": 553, - "source": 215, - "pc": [ - 705, - 706, - 707 - ] - }, - { - "teal": 554, - "source": 215, - "pc": [ - 708 - ] - }, - { - "teal": 555, - "source": 215, - "pc": [ - 709 - ] - }, - { - "teal": 556, - "source": 215, - "pc": [ - 710 - ] - }, - { - "teal": 557, - "source": 215, - "pc": [ - 711 - ] - }, - { - "teal": 558, - "source": 215, - "pc": [ - 712 - ] - }, - { - "teal": 566, - "source": 215, - "pc": [ - 713, - 714, - 715 - ] - }, - { - "teal": 573, - "source": 218, - "pc": [ - 716, - 717 - ] - }, - { - "teal": 574, - "source": 218, - "pc": [ - 718 - ] - }, - { - "teal": 575, - "source": 218, - "pc": [ - 719 - ] - }, - { - "teal": 576, - "source": 218, - "pc": [ - 720 - ] - }, - { - "teal": 577, - "source": 218, - "pc": [ - 721, - 722, - 723 - ] - }, - { - "teal": 578, - "source": 218, - "pc": [ - 724, - 725 - ] - }, - { - "teal": 579, - "source": 218, - "pc": [ - 726 - ] - }, - { - "teal": 580, - "source": 218, - "pc": [ - 727 - ] - }, - { - "teal": 581, - "source": 218, - "pc": [ - 728 - ] - }, - { - "teal": 585, - "source": 217, - "errorMessage": "pool id must be between 1 and number of pools for this validator", - "pc": [ - 729 - ] - }, - { - "teal": 589, - "source": 221, - "pc": [ - 730, - 731 - ] - }, - { - "teal": 590, - "source": 221, - "pc": [ - 732, - 733 - ] - }, - { - "teal": 591, - "source": 221, - "pc": [ - 734 - ] - }, - { - "teal": 592, - "source": 221, - "pc": [ - 735 - ] - }, - { - "teal": 593, - "source": 221, - "pc": [ - 736, - 737 - ] - }, - { - "teal": 594, - "source": 221, - "pc": [ - 738 - ] - }, - { - "teal": 595, - "source": 221, - "pc": [ - 739 - ] - }, - { - "teal": 596, - "source": 221, - "pc": [ - 740 - ] - }, - { - "teal": 597, - "source": 221, - "pc": [ - 741 - ] - }, - { - "teal": 598, - "source": 221, - "pc": [ - 742 - ] - }, - { - "teal": 599, - "source": 221, - "pc": [ - 743 - ] - }, - { - "teal": 600, - "source": 221, - "pc": [ - 744, - 745 - ] - }, - { - "teal": 601, - "source": 221, - "pc": [ - 746 - ] - }, - { - "teal": 602, - "source": 221, - "pc": [ - 747 - ] - }, - { - "teal": 603, - "source": 221, - "pc": [ - 748, - 749 - ] - }, - { - "teal": 604, - "source": 221, - "pc": [ - 750 - ] - }, - { - "teal": 605, - "source": 221, - "pc": [ - 751 - ] - }, - { - "teal": 606, - "source": 215, - "pc": [ - 752 - ] - }, - { - "teal": 611, - "source": 224, - "pc": [ - 753 - ] - }, - { - "teal": 614, - "source": 225, - "pc": [ - 754, - 755, - 756 - ] - }, - { - "teal": 615, - "source": 225, - "pc": [ - 757 - ] - }, - { - "teal": 616, - "source": 225, - "pc": [ - 758 - ] - }, - { - "teal": 617, - "source": 225, - "pc": [ - 759 - ] - }, - { - "teal": 618, - "source": 225, - "pc": [ - 760 - ] - }, - { - "teal": 621, - "source": 225, - "errorMessage": "argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)", - "pc": [ - 761 - ] - }, - { - "teal": 624, - "source": 224, - "pc": [ - 762, - 763, - 764 - ] - }, - { - "teal": 625, - "source": 224, - "pc": [ - 765 - ] - }, - { - "teal": 626, - "source": 224, - "pc": [ - 766 - ] - }, - { - "teal": 627, - "source": 224, - "pc": [ - 767 - ] - }, - { - "teal": 628, - "source": 224, - "pc": [ - 768 - ] - }, - { - "teal": 632, - "source": 224, - "pc": [ - 769, - 770, - 771 - ] - }, - { - "teal": 636, - "source": 226, - "pc": [ - 772, - 773 - ] - }, - { - "teal": 637, - "source": 226, - "pc": [ - 774, - 775 - ] - }, - { - "teal": 638, - "source": 226, - "pc": [ - 776, - 777, - 778 - ] - }, - { - "teal": 639, - "source": 226, - "pc": [ - 779 - ] - }, - { - "teal": 640, - "source": 226, - "pc": [ - 780 - ] - }, - { - "teal": 641, - "source": 226, - "pc": [ - 781 - ] - }, - { - "teal": 642, - "source": 226, - "pc": [ - 782, - 783 - ] - }, - { - "teal": 643, - "source": 226, - "pc": [ - 784 - ] - }, - { - "teal": 644, - "source": 226, - "pc": [ - 785 - ] - }, - { - "teal": 645, - "source": 226, - "pc": [ - 786, - 787 - ] - }, - { - "teal": 646, - "source": 226, - "pc": [ - 788 - ] - }, - { - "teal": 647, - "source": 226, - "pc": [ - 789, - 790 - ] - }, - { - "teal": 648, - "source": 226, - "pc": [ - 791, - 792, - 793 - ] - }, - { - "teal": 649, - "source": 226, - "pc": [ - 794 - ] - }, - { - "teal": 650, - "source": 226, - "pc": [ - 795 - ] - }, - { - "teal": 651, - "source": 226, - "pc": [ - 796 - ] - }, - { - "teal": 652, - "source": 226, - "pc": [ - 797, - 798 - ] - }, - { - "teal": 653, - "source": 226, - "pc": [ - 799 - ] - }, - { - "teal": 654, - "source": 224, - "pc": [ - 800 - ] - }, - { - "teal": 659, - "source": 236, - "pc": [ - 801 - ] - }, - { - "teal": 662, - "source": 237, - "pc": [ - 802, - 803, - 804 - ] - }, - { - "teal": 663, - "source": 237, - "pc": [ - 805 - ] - }, - { - "teal": 666, - "source": 236, - "pc": [ - 806, - 807, - 808 - ] - }, - { - "teal": 667, - "source": 236, - "pc": [ - 809 - ] - }, - { - "teal": 668, - "source": 236, - "pc": [ - 810 - ] - }, - { - "teal": 669, - "source": 236, - "pc": [ - 811 - ] - }, - { - "teal": 670, - "source": 236, - "pc": [ - 812 - ] - }, - { - "teal": 671, - "source": 236, - "pc": [ - 813 - ] - }, - { - "teal": 681, - "source": 236, - "pc": [ - 814, - 815, - 816 - ] - }, - { - "teal": 684, - "source": 236, - "pc": [ - 817 - ] - }, - { - "teal": 685, - "source": 236, - "pc": [ - 818, - 819 - ] - }, - { - "teal": 689, - "source": 238, - "pc": [ - 820, - 821 - ] - }, - { - "teal": 690, - "source": 238, - "pc": [ - 822, - 823 - ] - }, - { - "teal": 691, - "source": 238, - "pc": [ - 824 - ] - }, - { - "teal": 692, - "source": 238, - "pc": [ - 825, - 826 - ] - }, - { - "teal": 693, - "source": 238, - "pc": [ - 827 - ] - }, - { - "teal": 694, - "source": 238, - "pc": [ - 828 - ] - }, - { - "teal": 695, - "source": 238, - "pc": [ - 829, - 830 - ] - }, - { - "teal": 696, - "source": 238, - "pc": [ - 831 - ] - }, - { - "teal": 697, - "source": 238, - "pc": [ - 832 - ] - }, - { - "teal": 698, - "source": 238, - "pc": [ - 833, - 834 - ] - }, - { - "teal": 702, - "source": 239, - "pc": [ - 835, - 836, - 837 - ] - }, - { - "teal": 703, - "source": 239, - "pc": [ - 838, - 839 - ] - }, - { - "teal": 704, - "source": 239, - "pc": [ - 840 - ] - }, - { - "teal": 705, - "source": 239, - "pc": [ - 841, - 842 - ] - }, - { - "teal": 709, - "source": 240, - "pc": [ - 843, - 844, - 845 - ] - }, - { - "teal": 710, - "source": 240, - "pc": [ - 846 - ] - }, - { - "teal": 711, - "source": 240, - "pc": [ - 847 - ] - }, - { - "teal": 712, - "source": 240, - "pc": [ - 848, - 849 - ] - }, - { - "teal": 713, - "source": 240, - "pc": [ - 850 - ] - }, - { - "teal": 714, - "source": 240, - "pc": [ - 851 - ] - }, - { - "teal": 715, - "source": 240, - "pc": [ - 852, - 853 - ] - }, - { - "teal": 716, - "source": 240, - "pc": [ - 854 - ] - }, - { - "teal": 717, - "source": 240, - "pc": [ - 855 - ] - }, - { - "teal": 718, - "source": 240, - "pc": [ - 856, - 857 - ] - }, - { - "teal": 723, - "source": 241, - "pc": [ - 858, - 859 - ] - }, - { - "teal": 724, - "source": 241, - "pc": [ - 860 - ] - }, - { - "teal": 725, - "source": 241, - "pc": [ - 861 - ] - }, - { - "teal": 726, - "source": 241, - "pc": [ - 862, - 863, - 864 - ] - }, - { - "teal": 731, - "source": 242, - "pc": [ - 865, - 866, - 867 - ] - }, - { - "teal": 732, - "source": 242, - "pc": [ - 868, - 869 - ] - }, - { - "teal": 738, - "source": 244, - "pc": [ - 870, - 871 - ] - }, - { - "teal": 739, - "source": 244, - "pc": [ - 872, - 873 - ] - }, - { - "teal": 740, - "source": 244, - "pc": [ - 874 - ] - }, - { - "teal": 741, - "source": 244, - "pc": [ - 875, - 876, - 877 - ] - }, - { - "teal": 746, - "source": 245, - "pc": [ - 878, - 879 - ] - }, - { - "teal": 747, - "source": 245, - "pc": [ - 880, - 881 - ] - }, - { - "teal": 752, - "source": 247, - "pc": [ - 882, - 883 - ] - }, - { - "teal": 755, - "source": 236, - "pc": [ - 884, - 885 - ] - }, - { - "teal": 758, - "source": 236, - "pc": [ - 886, - 887 - ] - }, - { - "teal": 759, - "source": 236, - "pc": [ - 888 - ] - }, - { - "teal": 764, - "source": 254, - "pc": [ - 889 - ] - }, - { - "teal": 767, - "source": 255, - "pc": [ - 890, - 891, - 892 - ] - }, - { - "teal": 768, - "source": 255, - "pc": [ - 893 - ] - }, - { - "teal": 769, - "source": 255, - "pc": [ - 894 - ] - }, - { - "teal": 770, - "source": 255, - "pc": [ - 895, - 896 - ] - }, - { - "teal": 771, - "source": 255, - "pc": [ - 897 - ] - }, - { - "teal": 774, - "source": 255, - "errorMessage": "argument 0 (staker) for doesStakerNeedToPayMBR must be a address", - "pc": [ - 898 - ] - }, - { - "teal": 777, - "source": 254, - "pc": [ - 899, - 900, - 901 - ] - }, - { - "teal": 778, - "source": 254, - "pc": [ - 902, - 903 - ] - }, - { - "teal": 779, - "source": 254, - "pc": [ - 904 - ] - }, - { - "teal": 780, - "source": 254, - "pc": [ - 905, - 906 - ] - }, - { - "teal": 781, - "source": 254, - "pc": [ - 907 - ] - }, - { - "teal": 782, - "source": 254, - "pc": [ - 908 - ] - }, - { - "teal": 783, - "source": 254, - "pc": [ - 909 - ] - }, - { - "teal": 784, - "source": 254, - "pc": [ - 910 - ] - }, - { - "teal": 785, - "source": 254, - "pc": [ - 911 - ] - }, - { - "teal": 792, - "source": 254, - "pc": [ - 912, - 913, - 914 - ] - }, - { - "teal": 796, - "source": 256, - "pc": [ - 915 - ] - }, - { - "teal": 797, - "source": 256, - "pc": [ - 916, - 917 - ] - }, - { - "teal": 798, - "source": 256, - "pc": [ - 918 - ] - }, - { - "teal": 799, - "source": 256, - "pc": [ - 919 - ] - }, - { - "teal": 800, - "source": 256, - "pc": [ - 920 - ] - }, - { - "teal": 801, - "source": 256, - "pc": [ - 921 - ] - }, - { - "teal": 802, - "source": 256, - "pc": [ - 922 - ] - }, - { - "teal": 803, - "source": 254, - "pc": [ - 923 - ] - }, - { - "teal": 808, - "source": 265, - "pc": [ - 924 - ] - }, - { - "teal": 811, - "source": 266, - "pc": [ - 925, - 926, - 927 - ] - }, - { - "teal": 812, - "source": 266, - "pc": [ - 928 - ] - }, - { - "teal": 813, - "source": 266, - "pc": [ - 929 - ] - }, - { - "teal": 814, - "source": 266, - "pc": [ - 930, - 931 - ] - }, - { - "teal": 815, - "source": 266, - "pc": [ - 932 - ] - }, - { - "teal": 818, - "source": 266, - "errorMessage": "argument 0 (staker) for getStakedPoolsForAccount must be a address", - "pc": [ - 933 - ] - }, - { - "teal": 821, - "source": 265, - "pc": [ - 934, - 935, - 936 - ] - }, - { - "teal": 822, - "source": 265, - "pc": [ - 937 - ] - }, - { - "teal": 823, - "source": 265, - "pc": [ - 938 - ] - }, - { - "teal": 824, - "source": 265, - "pc": [ - 939 - ] - }, - { - "teal": 825, - "source": 265, - "pc": [ - 940 - ] - }, - { - "teal": 826, - "source": 265, - "pc": [ - 941 - ] - }, - { - "teal": 827, - "source": 265, - "pc": [ - 942, - 943, - 944 - ] - }, - { - "teal": 828, - "source": 265, - "pc": [ - 945 - ] - }, - { - "teal": 829, - "source": 265, - "pc": [ - 946 - ] - }, - { - "teal": 830, - "source": 265, - "pc": [ - 947 - ] - }, - { - "teal": 831, - "source": 265, - "pc": [ - 948 - ] - }, - { - "teal": 832, - "source": 265, - "pc": [ - 949 - ] - }, - { - "teal": 833, - "source": 265, - "pc": [ - 950 - ] - }, - { - "teal": 842, - "source": 265, - "pc": [ - 951, - 952, - 953 - ] - }, - { - "teal": 845, - "source": 265, - "pc": [ - 954 - ] - }, - { - "teal": 846, - "source": 265, - "pc": [ - 955, - 956 - ] - }, - { - "teal": 851, - "source": 267, - "pc": [ - 957 - ] - }, - { - "teal": 852, - "source": 267, - "pc": [ - 958, - 959 - ] - }, - { - "teal": 853, - "source": 267, - "pc": [ - 960 - ] - }, - { - "teal": 854, - "source": 267, - "pc": [ - 961 - ] - }, - { - "teal": 855, - "source": 267, - "pc": [ - 962 - ] - }, - { - "teal": 856, - "source": 267, - "pc": [ - 963 - ] - }, - { - "teal": 857, - "source": 267, - "pc": [ - 964 - ] - }, - { - "teal": 858, - "source": 267, - "pc": [ - 965, - 966, - 967 - ] - }, - { - "teal": 863, - "source": 268, - "pc": [ - 968 - ] - }, - { - "teal": 864, - "source": 268, - "pc": [ - 969, - 970, - 971 - ] - }, - { - "teal": 869, - "source": 270, - "pc": [ - 972 - ] - }, - { - "teal": 870, - "source": 270, - "pc": [ - 973, - 974 - ] - }, - { - "teal": 874, - "source": 271, - "pc": [ - 975 - ] - }, - { - "teal": 875, - "source": 271, - "pc": [ - 976, - 977 - ] - }, - { - "teal": 876, - "source": 271, - "pc": [ - 978 - ] - }, - { - "teal": 877, - "source": 271, - "pc": [ - 979 - ] - }, - { - "teal": 880, - "source": 271, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", - "pc": [ - 980 - ] - }, - { - "teal": 881, - "source": 271, - "pc": [ - 981, - 982 - ] - }, - { - "teal": 885, - "source": 272, - "pc": [ - 983 - ] - }, - { - "teal": 886, - "source": 272, - "pc": [ - 984, - 985 - ] - }, - { - "teal": 891, - "source": 272, - "pc": [ - 986, - 987 - ] - }, - { - "teal": 892, - "source": 272, - "pc": [ - 988, - 989 - ] - }, - { - "teal": 893, - "source": 272, - "pc": [ - 990 - ] - }, - { - "teal": 894, - "source": 272, - "pc": [ - 991, - 992, - 993 - ] - }, - { - "teal": 899, - "source": 273, - "pc": [ - 994, - 995 - ] - }, - { - "teal": 900, - "source": 273, - "pc": [ - 996, - 997 - ] - }, - { - "teal": 901, - "source": 273, - "pc": [ - 998 - ] - }, - { - "teal": 902, - "source": 273, - "pc": [ - 999 - ] - }, - { - "teal": 903, - "source": 273, - "pc": [ - 1000 - ] - }, - { - "teal": 904, - "source": 273, - "pc": [ - 1001 - ] - }, - { - "teal": 905, - "source": 273, - "pc": [ - 1002 - ] - }, - { - "teal": 906, - "source": 273, - "pc": [ - 1003 - ] - }, - { - "teal": 907, - "source": 273, - "pc": [ - 1004 - ] - }, - { - "teal": 908, - "source": 273, - "pc": [ - 1005 - ] - }, - { - "teal": 909, - "source": 273, - "pc": [ - 1006 - ] - }, - { - "teal": 910, - "source": 273, - "pc": [ - 1007, - 1008, - 1009 - ] - }, - { - "teal": 915, - "source": 274, - "pc": [ - 1010, - 1011 - ] - }, - { - "teal": 916, - "source": 274, - "pc": [ - 1012, - 1013 - ] - }, - { - "teal": 917, - "source": 274, - "pc": [ - 1014, - 1015 - ] - }, - { - "teal": 918, - "source": 274, - "pc": [ - 1016 - ] - }, - { - "teal": 919, - "source": 274, - "pc": [ - 1017 - ] - }, - { - "teal": 920, - "source": 274, - "pc": [ - 1018 - ] - }, - { - "teal": 921, - "source": 274, - "pc": [ - 1019 - ] - }, - { - "teal": 922, - "source": 274, - "pc": [ - 1020 - ] - }, - { - "teal": 923, - "source": 274, - "pc": [ - 1021, - 1022 - ] - }, - { - "teal": 930, - "source": 272, - "pc": [ - 1023, - 1024 - ] - }, - { - "teal": 931, - "source": 272, - "pc": [ - 1025 - ] - }, - { - "teal": 932, - "source": 272, - "pc": [ - 1026 - ] - }, - { - "teal": 933, - "source": 272, - "pc": [ - 1027, - 1028 - ] - }, - { - "teal": 934, - "source": 272, - "pc": [ - 1029, - 1030, - 1031 - ] - }, - { - "teal": 939, - "source": 277, - "pc": [ - 1032, - 1033 - ] - }, - { - "teal": 943, - "source": 265, - "pc": [ - 1034, - 1035 - ] - }, - { - "teal": 946, - "source": 265, - "pc": [ - 1036, - 1037 - ] - }, - { - "teal": 947, - "source": 265, - "pc": [ - 1038 - ] - }, - { - "teal": 952, - "source": 287, - "pc": [ - 1039 - ] - }, - { - "teal": 955, - "source": 288, - "pc": [ - 1040, - 1041, - 1042 - ] - }, - { - "teal": 956, - "source": 288, - "pc": [ - 1043 - ] - }, - { - "teal": 959, - "source": 287, - "pc": [ - 1044, - 1045, - 1046 - ] - }, - { - "teal": 960, - "source": 287, - "pc": [ - 1047 - ] - }, - { - "teal": 961, - "source": 287, - "pc": [ - 1048 - ] - }, - { - "teal": 962, - "source": 287, - "pc": [ - 1049 - ] - }, - { - "teal": 963, - "source": 287, - "pc": [ - 1050 - ] - }, - { - "teal": 973, - "source": 287, - "pc": [ - 1051, - 1052, - 1053 - ] - }, - { - "teal": 977, - "source": 289, - "pc": [ - 1054, - 1055 - ] - }, - { - "teal": 978, - "source": 289, - "pc": [ - 1056, - 1057 - ] - }, - { - "teal": 979, - "source": 289, - "pc": [ - 1058 - ] - }, - { - "teal": 980, - "source": 289, - "pc": [ - 1059, - 1060 - ] - }, - { - "teal": 981, - "source": 289, - "pc": [ - 1061 - ] - }, - { - "teal": 982, - "source": 289, - "pc": [ - 1062 - ] - }, - { - "teal": 983, - "source": 289, - "pc": [ - 1063, - 1064 - ] - }, - { - "teal": 984, - "source": 289, - "pc": [ - 1065 - ] - }, - { - "teal": 985, - "source": 287, - "pc": [ - 1066 - ] - }, - { - "teal": 990, - "source": 292, - "pc": [ - 1067 - ] - }, - { - "teal": 993, - "source": 293, - "pc": [ - 1068, - 1069, - 1070 - ] - }, - { - "teal": 994, - "source": 293, - "pc": [ - 1071 - ] - }, - { - "teal": 997, - "source": 292, - "pc": [ - 1072, - 1073, - 1074 - ] - }, - { - "teal": 998, - "source": 292, - "pc": [ - 1075 - ] - }, - { - "teal": 999, - "source": 292, - "pc": [ - 1076 - ] - }, - { - "teal": 1000, - "source": 292, - "pc": [ - 1077 - ] - }, - { - "teal": 1001, - "source": 292, - "pc": [ - 1078 - ] - }, - { - "teal": 1005, - "source": 292, - "pc": [ - 1079, - 1080, - 1081 - ] - }, - { - "teal": 1009, - "source": 294, - "pc": [ - 1082 - ] - }, - { - "teal": 1010, - "source": 294, - "pc": [ - 1083, - 1084 - ] - }, - { - "teal": 1011, - "source": 294, - "pc": [ - 1085 - ] - }, - { - "teal": 1012, - "source": 294, - "pc": [ - 1086 - ] - }, - { - "teal": 1013, - "source": 294, - "pc": [ - 1087 - ] - }, - { - "teal": 1014, - "source": 294, - "pc": [ - 1088 - ] - }, - { - "teal": 1015, - "source": 294, - "pc": [ - 1089 - ] - }, - { - "teal": 1018, - "source": 294, - "errorMessage": "the specified validator id doesn't exist", - "pc": [ - 1090 - ] - }, - { - "teal": 1022, - "source": 296, - "pc": [ - 1091, - 1092 - ] - }, - { - "teal": 1023, - "source": 296, - "pc": [ - 1093, - 1094 - ] - }, - { - "teal": 1024, - "source": 296, - "pc": [ - 1095 - ] - }, - { - "teal": 1025, - "source": 296, - "pc": [ - 1096, - 1097 - ] - }, - { - "teal": 1026, - "source": 296, - "pc": [ - 1098 - ] - }, - { - "teal": 1027, - "source": 296, - "pc": [ - 1099 - ] - }, - { - "teal": 1028, - "source": 296, - "pc": [ - 1100, - 1101 - ] - }, - { - "teal": 1029, - "source": 296, - "pc": [ - 1102 - ] - }, - { - "teal": 1030, - "source": 292, - "pc": [ - 1103 - ] - }, - { - "teal": 1035, - "source": 299, - "pc": [ - 1104 - ] - }, - { - "teal": 1038, - "source": 299, - "pc": [ - 1105, - 1106, - 1107 - ] - }, - { - "teal": 1039, - "source": 299, - "pc": [ - 1108 - ] - }, - { - "teal": 1040, - "source": 299, - "pc": [ - 1109 - ] - }, - { - "teal": 1041, - "source": 299, - "pc": [ - 1110 - ] - }, - { - "teal": 1042, - "source": 299, - "pc": [ - 1111 - ] - }, - { - "teal": 1043, - "source": 299, - "pc": [ - 1112 - ] - }, - { - "teal": 1047, - "source": 299, - "pc": [ - 1113, - 1114, - 1115 - ] - }, - { - "teal": 1051, - "source": 301, - "pc": [ - 1116, - 1117 - ] - }, - { - "teal": 1052, - "source": 299, - "pc": [ - 1118 - ] - }, - { - "teal": 1057, - "source": 312, - "pc": [ - 1119 - ] - }, - { - "teal": 1060, - "source": 312, - "pc": [ - 1120, - 1121, - 1122 - ] - }, - { - "teal": 1061, - "source": 312, - "pc": [ - 1123 - ] - }, - { - "teal": 1062, - "source": 312, - "pc": [ - 1124 - ] - }, - { - "teal": 1063, - "source": 312, - "pc": [ - 1125, - 1126 - ] - }, - { - "teal": 1064, - "source": 312, - "pc": [ - 1127 - ] - }, - { - "teal": 1067, - "source": 312, - "errorMessage": "argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)", - "pc": [ - 1128 - ] - }, - { - "teal": 1070, - "source": 312, - "pc": [ - 1129, - 1130, - 1131 - ] - }, - { - "teal": 1071, - "source": 312, - "pc": [ - 1132, - 1133, - 1134 - ] - }, - { - "teal": 1074, - "source": 312, - "pc": [ - 1135, - 1136 - ] - }, - { - "teal": 1075, - "source": 312, - "pc": [ - 1137 - ] - }, - { - "teal": 1076, - "source": 312, - "pc": [ - 1138 - ] - }, - { - "teal": 1077, - "source": 312, - "pc": [ - 1139 - ] - }, - { - "teal": 1078, - "source": 312, - "pc": [ - 1140, - 1141 - ] - }, - { - "teal": 1079, - "source": 312, - "pc": [ - 1142 - ] - }, - { - "teal": 1080, - "source": 312, - "pc": [ - 1143 - ] - }, - { - "teal": 1083, - "source": 312, - "errorMessage": "argument 2 (mbrPayment) for addValidator must be a pay transaction", - "pc": [ - 1144 - ] - }, - { - "teal": 1086, - "source": 312, - "pc": [ - 1145, - 1146, - 1147 - ] - }, - { - "teal": 1087, - "source": 312, - "pc": [ - 1148 - ] - }, - { - "teal": 1088, - "source": 312, - "pc": [ - 1149 - ] - }, - { - "teal": 1089, - "source": 312, - "pc": [ - 1150 - ] - }, - { - "teal": 1090, - "source": 312, - "pc": [ - 1151 - ] - }, - { - "teal": 1091, - "source": 312, - "pc": [ - 1152 - ] - }, - { - "teal": 1103, - "source": 312, - "pc": [ - 1153, - 1154, - 1155 - ] - }, - { - "teal": 1106, - "source": 312, - "pc": [ - 1156 - ] - }, - { - "teal": 1110, - "source": 313, - "pc": [ - 1157, - 1158 - ] - }, - { - "teal": 1111, - "source": 313, - "pc": [ - 1159, - 1160, - 1161 - ] - }, - { - "teal": 1116, - "source": 315, - "pc": [ - 1162, - 1163 - ] - }, - { - "teal": 1117, - "source": 315, - "pc": [ - 1164, - 1165 - ] - }, - { - "teal": 1118, - "source": 315, - "pc": [ - 1166, - 1167 - ] - }, - { - "teal": 1119, - "source": 315, - "pc": [ - 1168 - ] - }, - { - "teal": 1122, - "source": 315, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 1169 - ] - }, - { - "teal": 1125, - "source": 315, - "pc": [ - 1170, - 1171 - ] - }, - { - "teal": 1126, - "source": 315, - "pc": [ - 1172, - 1173 - ] - }, - { - "teal": 1127, - "source": 315, - "pc": [ - 1174, - 1175, - 1176 - ] - }, - { - "teal": 1128, - "source": 315, - "pc": [ - 1177, - 1178, - 1179 - ] - }, - { - "teal": 1129, - "source": 315, - "pc": [ - 1180 - ] - }, - { - "teal": 1130, - "source": 315, - "pc": [ - 1181 - ] - }, - { - "teal": 1133, - "source": 315, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}", - "pc": [ - 1182 - ] - }, - { - "teal": 1137, - "source": 317, - "pc": [ - 1183, - 1184 - ] - }, - { - "teal": 1138, - "source": 317, - "pc": [ - 1185, - 1186 - ] - }, - { - "teal": 1139, - "source": 317, - "pc": [ - 1187, - 1188, - 1189, - 1190, - 1191 - ] - }, - { - "teal": 1140, - "source": 317, - "pc": [ - 1192 - ] - }, - { - "teal": 1143, - "source": 317, - "errorMessage": "fee must be 10 ALGO or more to prevent spamming of validators", - "pc": [ - 1193 - ] - }, - { - "teal": 1147, - "source": 320, - "pc": [ - 1194, - 1195 - ] - }, - { - "teal": 1148, - "source": 320, - "pc": [ - 1196 - ] - }, - { - "teal": 1149, - "source": 320, - "pc": [ - 1197 - ] - }, - { - "teal": 1150, - "source": 320, - "pc": [ - 1198 - ] - }, - { - "teal": 1151, - "source": 320, - "pc": [ - 1199, - 1200 - ] - }, - { - "teal": 1155, - "source": 321, - "pc": [ - 1201, - 1202 - ] - }, - { - "teal": 1156, - "source": 321, - "pc": [ - 1203, - 1204 - ] - }, - { - "teal": 1157, - "source": 321, - "pc": [ - 1205 - ] - }, - { - "teal": 1161, - "source": 323, - "pc": [ - 1206 - ] - }, - { - "teal": 1162, - "source": 323, - "pc": [ - 1207, - 1208 - ] - }, - { - "teal": 1163, - "source": 323, - "pc": [ - 1209 - ] - }, - { - "teal": 1164, - "source": 323, - "pc": [ - 1210 - ] - }, - { - "teal": 1165, - "source": 323, - "pc": [ - 1211, - 1212, - 1213 - ] - }, - { - "teal": 1166, - "source": 323, - "pc": [ - 1214 - ] - }, - { - "teal": 1167, - "source": 323, - "pc": [ - 1215 - ] - }, - { - "teal": 1171, - "source": 324, - "pc": [ - 1216 - ] - }, - { - "teal": 1172, - "source": 324, - "pc": [ - 1217, - 1218 - ] - }, - { - "teal": 1173, - "source": 324, - "pc": [ - 1219 - ] - }, - { - "teal": 1174, - "source": 324, - "pc": [ - 1220, - 1221 - ] - }, - { - "teal": 1175, - "source": 324, - "pc": [ - 1222 - ] - }, - { - "teal": 1176, - "source": 324, - "pc": [ - 1223 - ] - }, - { - "teal": 1177, - "source": 324, - "pc": [ - 1224, - 1225 - ] - }, - { - "teal": 1178, - "source": 324, - "pc": [ - 1226 - ] - }, - { - "teal": 1182, - "source": 325, - "pc": [ - 1227 - ] - }, - { - "teal": 1183, - "source": 325, - "pc": [ - 1228, - 1229 - ] - }, - { - "teal": 1184, - "source": 325, - "pc": [ - 1230 - ] - }, - { - "teal": 1185, - "source": 325, - "pc": [ - 1231 - ] - }, - { - "teal": 1186, - "source": 325, - "pc": [ - 1232, - 1233 - ] - }, - { - "teal": 1187, - "source": 325, - "pc": [ - 1234 - ] - }, - { - "teal": 1188, - "source": 325, - "pc": [ - 1235 - ] - }, - { - "teal": 1189, - "source": 325, - "pc": [ - 1236, - 1237 - ] - }, - { - "teal": 1190, - "source": 325, - "pc": [ - 1238 - ] - }, - { - "teal": 1195, - "source": 328, - "pc": [ - 1239, - 1240 - ] - }, - { - "teal": 1196, - "source": 328, - "pc": [ - 1241, - 1242, - 1243 - ] - }, - { - "teal": 1197, - "source": 328, - "pc": [ - 1244 - ] - }, - { - "teal": 1198, - "source": 328, - "pc": [ - 1245 - ] - }, - { - "teal": 1199, - "source": 328, - "pc": [ - 1246 - ] - }, - { - "teal": 1200, - "source": 328, - "pc": [ - 1247, - 1248, - 1249 - ] - }, - { - "teal": 1205, - "source": 330, - "pc": [ - 1250, - 1251 - ] - }, - { - "teal": 1206, - "source": 330, - "pc": [ - 1252, - 1253, - 1254 - ] - }, - { - "teal": 1207, - "source": 330, - "pc": [ - 1255 - ] - }, - { - "teal": 1208, - "source": 330, - "pc": [ - 1256, - 1257, - 1258 - ] - }, - { - "teal": 1211, - "source": 330, - "errorMessage": "provided NFD must be valid", - "pc": [ - 1259 - ] - }, - { - "teal": 1218, - "source": 333, - "pc": [ - 1260, - 1261 - ] - }, - { - "teal": 1219, - "source": 333, - "pc": [ - 1262, - 1263 - ] - }, - { - "teal": 1220, - "source": 333, - "pc": [ - 1264, - 1265, - 1266 - ] - }, - { - "teal": 1221, - "source": 333, - "pc": [ - 1267 - ] - }, - { - "teal": 1222, - "source": 333, - "pc": [ - 1268, - 1269 - ] - }, - { - "teal": 1223, - "source": 333, - "pc": [ - 1270 - ] - }, - { - "teal": 1226, - "source": 333, - "errorMessage": "global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')", - "pc": [ - 1271 - ] - }, - { - "teal": 1227, - "source": 333, - "pc": [ - 1272 - ] - }, - { - "teal": 1230, - "source": 332, - "errorMessage": "If specifying NFD, account adding validator must be owner", - "pc": [ - 1273 - ] - }, - { - "teal": 1237, - "source": 338, - "pc": [ - 1274, - 1275 - ] - }, - { - "teal": 1238, - "source": 338, - "pc": [ - 1276, - 1277, - 1278 - ] - }, - { - "teal": 1239, - "source": 338, - "pc": [ - 1279 - ] - }, - { - "teal": 1240, - "source": 338, - "pc": [ - 1280, - 1281 - ] - }, - { - "teal": 1241, - "source": 338, - "pc": [ - 1282 - ] - }, - { - "teal": 1242, - "source": 338, - "pc": [ - 1283 - ] - }, - { - "teal": 1243, - "source": 338, - "pc": [ - 1284, - 1285, - 1286 - ] - }, - { - "teal": 1244, - "source": 339, - "pc": [ - 1287, - 1288 - ] - }, - { - "teal": 1245, - "source": 339, - "pc": [ - 1289, - 1290, - 1291 - ] - }, - { - "teal": 1246, - "source": 339, - "pc": [ - 1292 - ] - }, - { - "teal": 1247, - "source": 339, - "pc": [ - 1293, - 1294 - ] - }, - { - "teal": 1248, - "source": 339, - "pc": [ - 1295 - ] - }, - { - "teal": 1249, - "source": 338, - "pc": [ - 1296 - ] - }, - { - "teal": 1252, - "source": 337, - "pc": [ - 1297, - 1298, - 1299 - ] - }, - { - "teal": 1260, - "source": 343, - "pc": [ - 1300, - 1301 - ] - }, - { - "teal": 1261, - "source": 343, - "pc": [ - 1302, - 1303, - 1304 - ] - }, - { - "teal": 1262, - "source": 343, - "pc": [ - 1305 - ] - }, - { - "teal": 1263, - "source": 343, - "pc": [ - 1306, - 1307, - 1308 - ] - }, - { - "teal": 1266, - "source": 342, - "errorMessage": "provided NFD App id for gating must be valid NFD", - "pc": [ - 1309 - ] - }, - { - "teal": 1271, - "source": 347, - "pc": [ - 1310, - 1311, - 1312, - 1313, - 1314, - 1315 - ] - }, - { - "teal": 1272, - "source": 347, - "pc": [ - 1316, - 1317 - ] - }, - { - "teal": 1273, - "source": 347, - "pc": [ - 1318 - ] - }, - { - "teal": 1274, - "source": 347, - "pc": [ - 1319, - 1320 - ] - }, - { - "teal": 1275, - "source": 347, - "pc": [ - 1321, - 1322, - 1323 - ] - }, - { - "teal": 1276, - "source": 347, - "pc": [ - 1324 - ] - }, - { - "teal": 1277, - "source": 347, - "pc": [ - 1325, - 1326 - ] - }, - { - "teal": 1278, - "source": 347, - "pc": [ - 1327, - 1328, - 1329 - ] - }, - { - "teal": 1279, - "source": 347, - "pc": [ - 1330 - ] - }, - { - "teal": 1280, - "source": 347, - "pc": [ - 1331 - ] - }, - { - "teal": 1281, - "source": 347, - "pc": [ - 1332 - ] - }, - { - "teal": 1285, - "source": 348, - "pc": [ - 1333, - 1334 - ] - }, - { - "teal": 1288, - "source": 312, - "pc": [ - 1335, - 1336 - ] - }, - { - "teal": 1289, - "source": 312, - "pc": [ - 1337 - ] - }, - { - "teal": 1294, - "source": 358, - "pc": [ - 1338, - 1339, - 1340 - ] - }, - { - "teal": 1295, - "source": 358, - "pc": [ - 1341 - ] - }, - { - "teal": 1296, - "source": 358, - "pc": [ - 1342 - ] - }, - { - "teal": 1297, - "source": 358, - "pc": [ - 1343, - 1344 - ] - }, - { - "teal": 1298, - "source": 358, - "pc": [ - 1345 - ] - }, - { - "teal": 1301, - "source": 358, - "errorMessage": "argument 0 (manager) for changeValidatorManager must be a address", - "pc": [ - 1346 - ] - }, - { - "teal": 1304, - "source": 358, - "pc": [ - 1347, - 1348, - 1349 - ] - }, - { - "teal": 1305, - "source": 358, - "pc": [ - 1350 - ] - }, - { - "teal": 1308, - "source": 358, - "pc": [ - 1351, - 1352, - 1353 - ] - }, - { - "teal": 1309, - "source": 358, - "pc": [ - 1354 - ] - }, - { - "teal": 1310, - "source": 358, - "pc": [ - 1355 - ] - }, - { - "teal": 1320, - "source": 358, - "pc": [ - 1356, - 1357, - 1358 - ] - }, - { - "teal": 1324, - "source": 359, - "pc": [ - 1359, - 1360 - ] - }, - { - "teal": 1325, - "source": 359, - "pc": [ - 1361, - 1362, - 1363 - ] - }, - { - "teal": 1329, - "source": 360, - "pc": [ - 1364, - 1365 - ] - }, - { - "teal": 1330, - "source": 360, - "pc": [ - 1366, - 1367 - ] - }, - { - "teal": 1331, - "source": 360, - "pc": [ - 1368 - ] - }, - { - "teal": 1334, - "source": 360, - "errorMessage": "needs to at least be valid address", - "pc": [ - 1369 - ] - }, - { - "teal": 1338, - "source": 361, - "pc": [ - 1370, - 1371 - ] - }, - { - "teal": 1339, - "source": 361, - "pc": [ - 1372, - 1373 - ] - }, - { - "teal": 1340, - "source": 361, - "pc": [ - 1374 - ] - }, - { - "teal": 1341, - "source": 361, - "pc": [ - 1375, - 1376 - ] - }, - { - "teal": 1342, - "source": 361, - "pc": [ - 1377 - ] - }, - { - "teal": 1343, - "source": 361, - "pc": [ - 1378 - ] - }, - { - "teal": 1344, - "source": 361, - "pc": [ - 1379, - 1380 - ] - }, - { - "teal": 1345, - "source": 361, - "pc": [ - 1381 - ] - }, - { - "teal": 1346, - "source": 358, - "pc": [ - 1382 - ] - }, - { - "teal": 1351, - "source": 372, - "pc": [ - 1383, - 1384, - 1385 - ] - }, - { - "teal": 1352, - "source": 372, - "pc": [ - 1386 - ] - }, - { - "teal": 1355, - "source": 372, - "pc": [ - 1387, - 1388, - 1389 - ] - }, - { - "teal": 1356, - "source": 372, - "pc": [ - 1390 - ] - }, - { - "teal": 1359, - "source": 372, - "pc": [ - 1391, - 1392, - 1393 - ] - }, - { - "teal": 1360, - "source": 372, - "pc": [ - 1394 - ] - }, - { - "teal": 1363, - "source": 372, - "pc": [ - 1395, - 1396, - 1397 - ] - }, - { - "teal": 1364, - "source": 372, - "pc": [ - 1398 - ] - }, - { - "teal": 1365, - "source": 372, - "pc": [ - 1399 - ] - }, - { - "teal": 1376, - "source": 372, - "pc": [ - 1400, - 1401, - 1402 - ] - }, - { - "teal": 1380, - "source": 373, - "pc": [ - 1403, - 1404 - ] - }, - { - "teal": 1381, - "source": 373, - "pc": [ - 1405, - 1406, - 1407 - ] - }, - { - "teal": 1385, - "source": 374, - "pc": [ - 1408, - 1409 - ] - }, - { - "teal": 1386, - "source": 374, - "pc": [ - 1410, - 1411 - ] - }, - { - "teal": 1387, - "source": 374, - "pc": [ - 1412 - ] - }, - { - "teal": 1388, - "source": 374, - "pc": [ - 1413 - ] - }, - { - "teal": 1389, - "source": 374, - "pc": [ - 1414, - 1415 - ] - }, - { - "teal": 1390, - "source": 374, - "pc": [ - 1416 - ] - }, - { - "teal": 1391, - "source": 374, - "pc": [ - 1417 - ] - }, - { - "teal": 1392, - "source": 374, - "pc": [ - 1418, - 1419 - ] - }, - { - "teal": 1393, - "source": 374, - "pc": [ - 1420 - ] - }, - { - "teal": 1397, - "source": 375, - "pc": [ - 1421, - 1422, - 1423 - ] - }, - { - "teal": 1398, - "source": 375, - "pc": [ - 1424, - 1425 - ] - }, - { - "teal": 1399, - "source": 375, - "pc": [ - 1426 - ] - }, - { - "teal": 1400, - "source": 375, - "pc": [ - 1427 - ] - }, - { - "teal": 1401, - "source": 375, - "pc": [ - 1428, - 1429 - ] - }, - { - "teal": 1402, - "source": 375, - "pc": [ - 1430 - ] - }, - { - "teal": 1403, - "source": 375, - "pc": [ - 1431 - ] - }, - { - "teal": 1404, - "source": 375, - "pc": [ - 1432, - 1433 - ] - }, - { - "teal": 1405, - "source": 375, - "pc": [ - 1434 - ] - }, - { - "teal": 1406, - "source": 372, - "pc": [ - 1435 - ] - }, - { - "teal": 1411, - "source": 386, - "pc": [ - 1436, - 1437, - 1438 - ] - }, - { - "teal": 1412, - "source": 386, - "pc": [ - 1439, - 1440, - 1441 - ] - }, - { - "teal": 1415, - "source": 386, - "pc": [ - 1442, - 1443, - 1444 - ] - }, - { - "teal": 1416, - "source": 386, - "pc": [ - 1445 - ] - }, - { - "teal": 1419, - "source": 386, - "pc": [ - 1446, - 1447, - 1448 - ] - }, - { - "teal": 1420, - "source": 386, - "pc": [ - 1449 - ] - }, - { - "teal": 1423, - "source": 386, - "pc": [ - 1450, - 1451, - 1452 - ] - }, - { - "teal": 1424, - "source": 386, - "pc": [ - 1453 - ] - }, - { - "teal": 1425, - "source": 386, - "pc": [ - 1454 - ] - }, - { - "teal": 1436, - "source": 386, - "pc": [ - 1455, - 1456, - 1457 - ] - }, - { - "teal": 1440, - "source": 387, - "pc": [ - 1458, - 1459 - ] - }, - { - "teal": 1441, - "source": 387, - "pc": [ - 1460, - 1461, - 1462 - ] - }, - { - "teal": 1445, - "source": 389, - "pc": [ - 1463, - 1464 - ] - }, - { - "teal": 1446, - "source": 389, - "pc": [ - 1465, - 1466, - 1467 - ] - }, - { - "teal": 1449, - "source": 389, - "errorMessage": "provided NFD must be valid", - "pc": [ - 1468 - ] - }, - { - "teal": 1456, - "source": 392, - "pc": [ - 1469, - 1470 - ] - }, - { - "teal": 1457, - "source": 392, - "pc": [ - 1471, - 1472 - ] - }, - { - "teal": 1458, - "source": 392, - "pc": [ - 1473, - 1474 - ] - }, - { - "teal": 1459, - "source": 392, - "pc": [ - 1475 - ] - }, - { - "teal": 1462, - "source": 392, - "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')", - "pc": [ - 1476 - ] - }, - { - "teal": 1463, - "source": 392, - "pc": [ - 1477 - ] - }, - { - "teal": 1466, - "source": 391, - "errorMessage": "If specifying NFD, account adding validator must be owner", - "pc": [ - 1478 - ] - }, - { - "teal": 1470, - "source": 395, - "pc": [ - 1479, - 1480 - ] - }, - { - "teal": 1471, - "source": 395, - "pc": [ - 1481, - 1482 - ] - }, - { - "teal": 1472, - "source": 395, - "pc": [ - 1483 - ] - }, - { - "teal": 1473, - "source": 395, - "pc": [ - 1484 - ] - }, - { - "teal": 1474, - "source": 395, - "pc": [ - 1485, - 1486 - ] - }, - { - "teal": 1475, - "source": 395, - "pc": [ - 1487 - ] - }, - { - "teal": 1476, - "source": 395, - "pc": [ - 1488 - ] - }, - { - "teal": 1477, - "source": 395, - "pc": [ - 1489, - 1490 - ] - }, - { - "teal": 1478, - "source": 395, - "pc": [ - 1491 - ] - }, - { - "teal": 1479, - "source": 386, - "pc": [ - 1492 - ] - }, - { - "teal": 1484, - "source": 402, - "pc": [ - 1493, - 1494, - 1495 - ] - }, - { - "teal": 1485, - "source": 402, - "pc": [ - 1496 - ] - }, - { - "teal": 1486, - "source": 402, - "pc": [ - 1497 - ] - }, - { - "teal": 1487, - "source": 402, - "pc": [ - 1498, - 1499 - ] - }, - { - "teal": 1488, - "source": 402, - "pc": [ - 1500 - ] - }, - { - "teal": 1491, - "source": 402, - "errorMessage": "argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address", - "pc": [ - 1501 - ] - }, - { - "teal": 1494, - "source": 402, - "pc": [ - 1502, - 1503, - 1504 - ] - }, - { - "teal": 1495, - "source": 402, - "pc": [ - 1505 - ] - }, - { - "teal": 1498, - "source": 402, - "pc": [ - 1506, - 1507, - 1508 - ] - }, - { - "teal": 1499, - "source": 402, - "pc": [ - 1509 - ] - }, - { - "teal": 1500, - "source": 402, - "pc": [ - 1510 - ] - }, - { - "teal": 1507, - "source": 402, - "pc": [ - 1511, - 1512, - 1513 - ] - }, - { - "teal": 1511, - "source": 403, - "pc": [ - 1514, - 1515 - ] - }, - { - "teal": 1512, - "source": 403, - "pc": [ - 1516, - 1517, - 1518 - ] - }, - { - "teal": 1516, - "source": 404, - "pc": [ - 1519, - 1520 - ] - }, - { - "teal": 1517, - "source": 404, - "pc": [ - 1521, - 1522 - ] - }, - { - "teal": 1518, - "source": 404, - "pc": [ - 1523 - ] - }, - { - "teal": 1519, - "source": 404, - "pc": [ - 1524 - ] - }, - { - "teal": 1523, - "source": 405, - "pc": [ - 1525, - 1526, - 1527 - ] - }, - { - "teal": 1524, - "source": 405, - "pc": [ - 1528, - 1529 - ] - }, - { - "teal": 1525, - "source": 405, - "pc": [ - 1530 - ] - }, - { - "teal": 1526, - "source": 405, - "pc": [ - 1531, - 1532 - ] - }, - { - "teal": 1527, - "source": 405, - "pc": [ - 1533 - ] - }, - { - "teal": 1528, - "source": 405, - "pc": [ - 1534 - ] - }, - { - "teal": 1529, - "source": 405, - "pc": [ - 1535, - 1536 - ] - }, - { - "teal": 1530, - "source": 405, - "pc": [ - 1537 - ] - }, - { - "teal": 1531, - "source": 402, - "pc": [ - 1538 - ] - }, - { - "teal": 1536, - "source": 418, - "pc": [ - 1539, - 1540, - 1541 - ] - }, - { - "teal": 1537, - "source": 418, - "pc": [ - 1542 - ] - }, - { - "teal": 1540, - "source": 417, - "pc": [ - 1543, - 1544, - 1545 - ] - }, - { - "teal": 1541, - "source": 417, - "pc": [ - 1546 - ] - }, - { - "teal": 1544, - "source": 416, - "pc": [ - 1547, - 1548, - 1549 - ] - }, - { - "teal": 1545, - "source": 416, - "pc": [ - 1550 - ] - }, - { - "teal": 1546, - "source": 416, - "pc": [ - 1551 - ] - }, - { - "teal": 1547, - "source": 416, - "pc": [ - 1552, - 1553 - ] - }, - { - "teal": 1548, - "source": 416, - "pc": [ - 1554 - ] - }, - { - "teal": 1551, - "source": 416, - "errorMessage": "argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]", - "pc": [ - 1555 - ] - }, - { - "teal": 1554, - "source": 415, - "pc": [ - 1556, - 1557, - 1558 - ] - }, - { - "teal": 1555, - "source": 415, - "pc": [ - 1559 - ] - }, - { - "teal": 1556, - "source": 415, - "pc": [ - 1560 - ] - }, - { - "teal": 1557, - "source": 415, - "pc": [ - 1561, - 1562 - ] - }, - { - "teal": 1558, - "source": 415, - "pc": [ - 1563 - ] - }, - { - "teal": 1561, - "source": 415, - "errorMessage": "argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address", - "pc": [ - 1564 - ] - }, - { - "teal": 1564, - "source": 414, - "pc": [ - 1565, - 1566, - 1567 - ] - }, - { - "teal": 1565, - "source": 414, - "pc": [ - 1568 - ] - }, - { - "teal": 1566, - "source": 414, - "pc": [ - 1569 - ] - }, - { - "teal": 1567, - "source": 414, - "pc": [ - 1570 - ] - }, - { - "teal": 1568, - "source": 414, - "pc": [ - 1571 - ] - }, - { - "teal": 1571, - "source": 414, - "errorMessage": "argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8", - "pc": [ - 1572 - ] - }, - { - "teal": 1572, - "source": 414, - "pc": [ - 1573 - ] - }, - { - "teal": 1575, - "source": 413, - "pc": [ - 1574, - 1575, - 1576 - ] - }, - { - "teal": 1576, - "source": 413, - "pc": [ - 1577 - ] - }, - { - "teal": 1579, - "source": 412, - "pc": [ - 1578, - 1579, - 1580 - ] - }, - { - "teal": 1580, - "source": 412, - "pc": [ - 1581 - ] - }, - { - "teal": 1581, - "source": 412, - "pc": [ - 1582 - ] - }, - { - "teal": 1588, - "source": 412, - "pc": [ - 1583, - 1584, - 1585 - ] - }, - { - "teal": 1592, - "source": 420, - "pc": [ - 1586, - 1587 - ] - }, - { - "teal": 1593, - "source": 420, - "pc": [ - 1588, - 1589, - 1590 - ] - }, - { - "teal": 1600, - "source": 423, - "pc": [ - 1591, - 1592 - ] - }, - { - "teal": 1601, - "source": 423, - "pc": [ - 1593 - ] - }, - { - "teal": 1602, - "source": 423, - "pc": [ - 1594 - ] - }, - { - "teal": 1603, - "source": 423, - "pc": [ - 1595 - ] - }, - { - "teal": 1604, - "source": 423, - "pc": [ - 1596, - 1597, - 1598 - ] - }, - { - "teal": 1605, - "source": 423, - "pc": [ - 1599, - 1600 - ] - }, - { - "teal": 1606, - "source": 423, - "pc": [ - 1601, - 1602 - ] - }, - { - "teal": 1607, - "source": 423, - "pc": [ - 1603 - ] - }, - { - "teal": 1608, - "source": 423, - "pc": [ - 1604 - ] - }, - { - "teal": 1612, - "source": 422, - "errorMessage": "invalid Entry gating type", - "pc": [ - 1605 - ] - }, - { - "teal": 1617, - "source": 426, - "pc": [ - 1606, - 1607 - ] - }, - { - "teal": 1618, - "source": 426, - "pc": [ - 1608 - ] - }, - { - "teal": 1619, - "source": 426, - "pc": [ - 1609 - ] - }, - { - "teal": 1620, - "source": 426, - "pc": [ - 1610, - 1611, - 1612 - ] - }, - { - "teal": 1625, - "source": 427, - "pc": [ - 1613, - 1614 - ] - }, - { - "teal": 1626, - "source": 427, - "pc": [ - 1615, - 1616 - ] - }, - { - "teal": 1627, - "source": 427, - "pc": [ - 1617 - ] - }, - { - "teal": 1628, - "source": 427, - "pc": [ - 1618 - ] - }, - { - "teal": 1635, - "source": 430, - "pc": [ - 1619, - 1620 - ] - }, - { - "teal": 1636, - "source": 430, - "pc": [ - 1621, - 1622 - ] - }, - { - "teal": 1637, - "source": 430, - "pc": [ - 1623 - ] - }, - { - "teal": 1638, - "source": 430, - "pc": [ - 1624 - ] - }, - { - "teal": 1639, - "source": 430, - "pc": [ - 1625, - 1626, - 1627 - ] - }, - { - "teal": 1640, - "source": 431, - "pc": [ - 1628, - 1629 - ] - }, - { - "teal": 1641, - "source": 431, - "pc": [ - 1630, - 1631 - ] - }, - { - "teal": 1642, - "source": 431, - "pc": [ - 1632 - ] - }, - { - "teal": 1643, - "source": 430, - "pc": [ - 1633 - ] - }, - { - "teal": 1646, - "source": 429, - "pc": [ - 1634, - 1635, - 1636 - ] - }, - { - "teal": 1651, - "source": 433, - "pc": [ - 1637, - 1638 - ] - }, - { - "teal": 1652, - "source": 433, - "pc": [ - 1639, - 1640, - 1641 - ] - }, - { - "teal": 1653, - "source": 433, - "pc": [ - 1642 - ] - }, - { - "teal": 1654, - "source": 433, - "pc": [ - 1643, - 1644, - 1645 - ] - }, - { - "teal": 1657, - "source": 433, - "errorMessage": "provided NFD App id for gating must be valid NFD", - "pc": [ - 1646 - ] - }, - { - "teal": 1662, - "source": 435, - "pc": [ - 1647, - 1648 - ] - }, - { - "teal": 1663, - "source": 435, - "pc": [ - 1649, - 1650 - ] - }, - { - "teal": 1664, - "source": 435, - "pc": [ - 1651 - ] - }, - { - "teal": 1665, - "source": 435, - "pc": [ - 1652, - 1653, - 1654 - ] - }, - { - "teal": 1666, - "source": 435, - "pc": [ - 1655 - ] - }, - { - "teal": 1667, - "source": 435, - "pc": [ - 1656, - 1657 - ] - }, - { - "teal": 1668, - "source": 435, - "pc": [ - 1658 - ] - }, - { - "teal": 1669, - "source": 435, - "pc": [ - 1659 - ] - }, - { - "teal": 1670, - "source": 435, - "pc": [ - 1660, - 1661 - ] - }, - { - "teal": 1671, - "source": 435, - "pc": [ - 1662 - ] - }, - { - "teal": 1675, - "source": 436, - "pc": [ - 1663, - 1664 - ] - }, - { - "teal": 1676, - "source": 436, - "pc": [ - 1665, - 1666 - ] - }, - { - "teal": 1677, - "source": 436, - "pc": [ - 1667 - ] - }, - { - "teal": 1678, - "source": 436, - "pc": [ - 1668, - 1669 - ] - }, - { - "teal": 1679, - "source": 436, - "pc": [ - 1670 - ] - }, - { - "teal": 1680, - "source": 436, - "pc": [ - 1671 - ] - }, - { - "teal": 1681, - "source": 436, - "pc": [ - 1672, - 1673 - ] - }, - { - "teal": 1682, - "source": 436, - "pc": [ - 1674 - ] - }, - { - "teal": 1686, - "source": 437, - "pc": [ - 1675, - 1676 - ] - }, - { - "teal": 1687, - "source": 437, - "pc": [ - 1677, - 1678 - ] - }, - { - "teal": 1688, - "source": 437, - "pc": [ - 1679 - ] - }, - { - "teal": 1689, - "source": 437, - "pc": [ - 1680, - 1681 - ] - }, - { - "teal": 1690, - "source": 437, - "pc": [ - 1682 - ] - }, - { - "teal": 1691, - "source": 437, - "pc": [ - 1683 - ] - }, - { - "teal": 1692, - "source": 437, - "pc": [ - 1684, - 1685 - ] - }, - { - "teal": 1693, - "source": 437, - "pc": [ - 1686 - ] - }, - { - "teal": 1697, - "source": 438, - "pc": [ - 1687, - 1688 - ] - }, - { - "teal": 1698, - "source": 438, - "pc": [ - 1689, - 1690 - ] - }, - { - "teal": 1699, - "source": 438, - "pc": [ - 1691 - ] - }, - { - "teal": 1700, - "source": 438, - "pc": [ - 1692 - ] - }, - { - "teal": 1701, - "source": 438, - "pc": [ - 1693, - 1694 - ] - }, - { - "teal": 1702, - "source": 438, - "pc": [ - 1695 - ] - }, - { - "teal": 1703, - "source": 438, - "pc": [ - 1696 - ] - }, - { - "teal": 1704, - "source": 438, - "pc": [ - 1697, - 1698 - ] - }, - { - "teal": 1705, - "source": 438, - "pc": [ - 1699 - ] - }, - { - "teal": 1709, - "source": 439, - "pc": [ - 1700, - 1701, - 1702 - ] - }, - { - "teal": 1710, - "source": 439, - "pc": [ - 1703, - 1704 - ] - }, - { - "teal": 1711, - "source": 439, - "pc": [ - 1705 - ] - }, - { - "teal": 1712, - "source": 439, - "pc": [ - 1706 - ] - }, - { - "teal": 1713, - "source": 439, - "pc": [ - 1707, - 1708 - ] - }, - { - "teal": 1714, - "source": 439, - "pc": [ - 1709 - ] - }, - { - "teal": 1715, - "source": 439, - "pc": [ - 1710 - ] - }, - { - "teal": 1716, - "source": 439, - "pc": [ - 1711, - 1712 - ] - }, - { - "teal": 1717, - "source": 439, - "pc": [ - 1713 - ] - }, - { - "teal": 1718, - "source": 412, - "pc": [ - 1714 - ] - }, - { - "teal": 1723, - "source": 453, - "pc": [ - 1715 - ] - }, - { - "teal": 1726, - "source": 453, - "pc": [ - 1716, - 1717, - 1718 - ] - }, - { - "teal": 1727, - "source": 453, - "pc": [ - 1719 - ] - }, - { - "teal": 1730, - "source": 453, - "pc": [ - 1720, - 1721, - 1722 - ] - }, - { - "teal": 1731, - "source": 453, - "pc": [ - 1723 - ] - }, - { - "teal": 1734, - "source": 453, - "pc": [ - 1724, - 1725 - ] - }, - { - "teal": 1735, - "source": 453, - "pc": [ - 1726 - ] - }, - { - "teal": 1736, - "source": 453, - "pc": [ - 1727 - ] - }, - { - "teal": 1737, - "source": 453, - "pc": [ - 1728 - ] - }, - { - "teal": 1738, - "source": 453, - "pc": [ - 1729, - 1730 - ] - }, - { - "teal": 1739, - "source": 453, - "pc": [ - 1731 - ] - }, - { - "teal": 1740, - "source": 453, - "pc": [ - 1732 - ] - }, - { - "teal": 1743, - "source": 453, - "errorMessage": "argument 2 (mbrPayment) for addPool must be a pay transaction", - "pc": [ - 1733 - ] - }, - { - "teal": 1746, - "source": 453, - "pc": [ - 1734, - 1735, - 1736 - ] - }, - { - "teal": 1747, - "source": 453, - "pc": [ - 1737 - ] - }, - { - "teal": 1748, - "source": 453, - "pc": [ - 1738 - ] - }, - { - "teal": 1749, - "source": 453, - "pc": [ - 1739 - ] - }, - { - "teal": 1750, - "source": 453, - "pc": [ - 1740 - ] - }, - { - "teal": 1763, - "source": 453, - "pc": [ - 1741, - 1742, - 1743 - ] - }, - { - "teal": 1766, - "source": 453, - "pc": [ - 1744 - ] - }, - { - "teal": 1767, - "source": 453, - "pc": [ - 1745 - ] - }, - { - "teal": 1771, - "source": 454, - "pc": [ - 1746, - 1747 - ] - }, - { - "teal": 1772, - "source": 454, - "pc": [ - 1748, - 1749, - 1750 - ] - }, - { - "teal": 1777, - "source": 457, - "pc": [ - 1751, - 1752 - ] - }, - { - "teal": 1778, - "source": 457, - "pc": [ - 1753, - 1754 - ] - }, - { - "teal": 1779, - "source": 457, - "pc": [ - 1755, - 1756 - ] - }, - { - "teal": 1780, - "source": 457, - "pc": [ - 1757 - ] - }, - { - "teal": 1783, - "source": 457, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 1758 - ] - }, - { - "teal": 1786, - "source": 457, - "pc": [ - 1759, - 1760 - ] - }, - { - "teal": 1787, - "source": 457, - "pc": [ - 1761, - 1762 - ] - }, - { - "teal": 1788, - "source": 457, - "pc": [ - 1763, - 1764, - 1765 - ] - }, - { - "teal": 1789, - "source": 457, - "pc": [ - 1766, - 1767, - 1768 - ] - }, - { - "teal": 1790, - "source": 457, - "pc": [ - 1769 - ] - }, - { - "teal": 1791, - "source": 457, - "pc": [ - 1770 - ] - }, - { - "teal": 1794, - "source": 457, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}", - "pc": [ - 1771 - ] - }, - { - "teal": 1798, - "source": 459, - "pc": [ - 1772 - ] - }, - { - "teal": 1799, - "source": 459, - "pc": [ - 1773, - 1774 - ] - }, - { - "teal": 1800, - "source": 459, - "pc": [ - 1775 - ] - }, - { - "teal": 1801, - "source": 459, - "pc": [ - 1776 - ] - }, - { - "teal": 1802, - "source": 459, - "pc": [ - 1777 - ] - }, - { - "teal": 1803, - "source": 459, - "pc": [ - 1778 - ] - }, - { - "teal": 1804, - "source": 459, - "pc": [ - 1779 - ] - }, - { - "teal": 1807, - "source": 459, - "errorMessage": "specified validator id isn't valid", - "pc": [ - 1780 - ] - }, - { - "teal": 1811, - "source": 461, - "pc": [ - 1781, - 1782 - ] - }, - { - "teal": 1812, - "source": 461, - "pc": [ - 1783, - 1784 - ] - }, - { - "teal": 1813, - "source": 461, - "pc": [ - 1785 - ] - }, - { - "teal": 1814, - "source": 461, - "pc": [ - 1786, - 1787 - ] - }, - { - "teal": 1815, - "source": 461, - "pc": [ - 1788 - ] - }, - { - "teal": 1816, - "source": 461, - "pc": [ - 1789 - ] - }, - { - "teal": 1817, - "source": 461, - "pc": [ - 1790, - 1791 - ] - }, - { - "teal": 1818, - "source": 461, - "pc": [ - 1792 - ] - }, - { - "teal": 1819, - "source": 461, - "pc": [ - 1793 - ] - }, - { - "teal": 1820, - "source": 461, - "pc": [ - 1794, - 1795 - ] - }, - { - "teal": 1825, - "source": 462, - "pc": [ - 1796, - 1797 - ] - }, - { - "teal": 1826, - "source": 58, - "pc": [ - 1798 - ] - }, - { - "teal": 1827, - "source": 462, - "pc": [ - 1799 - ] - }, - { - "teal": 1828, - "source": 462, - "pc": [ - 1800, - 1801, - 1802 - ] - }, - { - "teal": 1832, - "source": 463, - "errorMessage": "already at max pool size", - "pc": [ - 1803 - ] - }, - { - "teal": 1837, - "source": 465, - "pc": [ - 1804, - 1805 - ] - }, - { - "teal": 1838, - "source": 465, - "pc": [ - 1806 - ] - }, - { - "teal": 1839, - "source": 465, - "pc": [ - 1807 - ] - }, - { - "teal": 1840, - "source": 465, - "pc": [ - 1808, - 1809 - ] - }, - { - "teal": 1862, - "source": 468, - "pc": [ - 1810 - ] - }, - { - "teal": 1863, - "source": 468, - "pc": [ - 1811, - 1812 - ] - }, - { - "teal": 1864, - "source": 468, - "pc": [ - 1813, - 1814 - ] - }, - { - "teal": 1868, - "source": 469, - "pc": [ - 1815 - ] - }, - { - "teal": 1869, - "source": 469, - "pc": [ - 1816, - 1817 - ] - }, - { - "teal": 1876, - "source": 471, - "pc": [ - 1818, - 1819 - ] - }, - { - "teal": 1877, - "source": 471, - "pc": [ - 1820 - ] - }, - { - "teal": 1878, - "source": 471, - "pc": [ - 1821, - 1822 - ] - }, - { - "teal": 1879, - "source": 471, - "pc": [ - 1823 - ] - }, - { - "teal": 1880, - "source": 471, - "pc": [ - 1824, - 1825 - ] - }, - { - "teal": 1881, - "source": 472, - "pc": [ - 1826, - 1827 - ] - }, - { - "teal": 1882, - "source": 472, - "pc": [ - 1828, - 1829 - ] - }, - { - "teal": 1883, - "source": 472, - "pc": [ - 1830, - 1831 - ] - }, - { - "teal": 1884, - "source": 472, - "pc": [ - 1832 - ] - }, - { - "teal": 1887, - "source": 472, - "errorMessage": "box value does not exist: this.stakingPoolApprovalProgram.size", - "pc": [ - 1833 - ] - }, - { - "teal": 1888, - "source": 472, - "pc": [ - 1834, - 1835 - ] - }, - { - "teal": 1889, - "source": 472, - "pc": [ - 1836 - ] - }, - { - "teal": 1890, - "source": 472, - "pc": [ - 1837 - ] - }, - { - "teal": 1891, - "source": 472, - "pc": [ - 1838, - 1839 - ] - }, - { - "teal": 1895, - "source": 474, - "pc": [ - 1840, - 1841, - 1842 - ] - }, - { - "teal": 1896, - "source": 474, - "pc": [ - 1843, - 1844 - ] - }, - { - "teal": 1900, - "source": 475, - "pc": [ - 1845, - 1846 - ] - }, - { - "teal": 1901, - "source": 475, - "pc": [ - 1847, - 1848 - ] - }, - { - "teal": 1905, - "source": 476, - "pc": [ - 1849, - 1850 - ] - }, - { - "teal": 1906, - "source": 476, - "pc": [ - 1851, - 1852 - ] - }, - { - "teal": 1910, - "source": 477, - "pc": [ - 1853, - 1854 - ] - }, - { - "teal": 1911, - "source": 477, - "pc": [ - 1855, - 1856 - ] - }, - { - "teal": 1922, - "source": 480, - "pc": [ - 1857, - 1858, - 1859, - 1860, - 1861, - 1862 - ] - }, - { - "teal": 1923, - "source": 480, - "pc": [ - 1863, - 1864 - ] - }, - { - "teal": 1924, - "source": 481, - "pc": [ - 1865, - 1866, - 1867 - ] - }, - { - "teal": 1925, - "source": 481, - "pc": [ - 1868 - ] - }, - { - "teal": 1926, - "source": 481, - "pc": [ - 1869, - 1870 - ] - }, - { - "teal": 1927, - "source": 482, - "pc": [ - 1871, - 1872 - ] - }, - { - "teal": 1928, - "source": 482, - "pc": [ - 1873 - ] - }, - { - "teal": 1929, - "source": 482, - "pc": [ - 1874, - 1875 - ] - }, - { - "teal": 1930, - "source": 483, - "pc": [ - 1876, - 1877 - ] - }, - { - "teal": 1931, - "source": 483, - "pc": [ - 1878 - ] - }, - { - "teal": 1932, - "source": 483, - "pc": [ - 1879, - 1880 - ] - }, - { - "teal": 1933, - "source": 484, - "pc": [ - 1881, - 1882 - ] - }, - { - "teal": 1934, - "source": 484, - "pc": [ - 1883 - ] - }, - { - "teal": 1935, - "source": 484, - "pc": [ - 1884 - ] - }, - { - "teal": 1936, - "source": 484, - "pc": [ - 1885, - 1886 - ] - }, - { - "teal": 1937, - "source": 484, - "pc": [ - 1887 - ] - }, - { - "teal": 1938, - "source": 484, - "pc": [ - 1888 - ] - }, - { - "teal": 1939, - "source": 484, - "pc": [ - 1889, - 1890 - ] - }, - { - "teal": 1940, - "source": 484, - "pc": [ - 1891 - ] - }, - { - "teal": 1941, - "source": 484, - "pc": [ - 1892 - ] - }, - { - "teal": 1942, - "source": 484, - "pc": [ - 1893 - ] - }, - { - "teal": 1943, - "source": 484, - "pc": [ - 1894, - 1895 - ] - }, - { - "teal": 1946, - "source": 468, - "pc": [ - 1896 - ] - }, - { - "teal": 1947, - "source": 468, - "pc": [ - 1897, - 1898 - ] - }, - { - "teal": 1950, - "source": 468, - "pc": [ - 1899 - ] - }, - { - "teal": 1954, - "source": 488, - "pc": [ - 1900, - 1901 - ] - }, - { - "teal": 1955, - "source": 488, - "pc": [ - 1902, - 1903 - ] - }, - { - "teal": 1956, - "source": 488, - "pc": [ - 1904 - ] - }, - { - "teal": 1957, - "source": 488, - "pc": [ - 1905, - 1906, - 1907 - ] - }, - { - "teal": 1958, - "source": 488, - "pc": [ - 1908 - ] - }, - { - "teal": 1959, - "source": 488, - "pc": [ - 1909, - 1910 - ] - }, - { - "teal": 1960, - "source": 488, - "pc": [ - 1911 - ] - }, - { - "teal": 1961, - "source": 488, - "pc": [ - 1912 - ] - }, - { - "teal": 1962, - "source": 488, - "pc": [ - 1913, - 1914 - ] - }, - { - "teal": 1963, - "source": 488, - "pc": [ - 1915 - ] - }, - { - "teal": 1967, - "source": 491, - "pc": [ - 1916, - 1917 - ] - }, - { - "teal": 1968, - "source": 491, - "pc": [ - 1918, - 1919 - ] - }, - { - "teal": 1972, - "source": 492, - "pc": [ - 1920, - 1921 - ] - }, - { - "teal": 1973, - "source": 492, - "pc": [ - 1922, - 1923 - ] - }, - { - "teal": 1974, - "source": 492, - "pc": [ - 1924 - ] - }, - { - "teal": 1975, - "source": 492, - "pc": [ - 1925 - ] - }, - { - "teal": 1976, - "source": 492, - "pc": [ - 1926, - 1927 - ] - }, - { - "teal": 1977, - "source": 492, - "pc": [ - 1928 - ] - }, - { - "teal": 1978, - "source": 492, - "pc": [ - 1929 - ] - }, - { - "teal": 1979, - "source": 492, - "pc": [ - 1930 - ] - }, - { - "teal": 1980, - "source": 492, - "pc": [ - 1931 - ] - }, - { - "teal": 1981, - "source": 492, - "pc": [ - 1932, - 1933 - ] - }, - { - "teal": 1982, - "source": 492, - "pc": [ - 1934 - ] - }, - { - "teal": 1983, - "source": 492, - "pc": [ - 1935 - ] - }, - { - "teal": 1984, - "source": 492, - "pc": [ - 1936, - 1937 - ] - }, - { - "teal": 1985, - "source": 492, - "pc": [ - 1938 - ] - }, - { - "teal": 1986, - "source": 492, - "pc": [ - 1939 - ] - }, - { - "teal": 1987, - "source": 492, - "pc": [ - 1940, - 1941 - ] - }, - { - "teal": 1988, - "source": 492, - "pc": [ - 1942 - ] - }, - { - "teal": 1992, - "source": 493, - "pc": [ - 1943, - 1944 - ] - }, - { - "teal": 1993, - "source": 493, - "pc": [ - 1945, - 1946 - ] - }, - { - "teal": 1994, - "source": 493, - "pc": [ - 1947, - 1948 - ] - }, - { - "teal": 1995, - "source": 493, - "pc": [ - 1949, - 1950, - 1951 - ] - }, - { - "teal": 2003, - "source": 495, - "pc": [ - 1952, - 1953, - 1954, - 1955, - 1956, - 1957 - ] - }, - { - "teal": 2004, - "source": 496, - "pc": [ - 1958, - 1959 - ] - }, - { - "teal": 2005, - "source": 496, - "pc": [ - 1960 - ] - }, - { - "teal": 2006, - "source": 497, - "pc": [ - 1961, - 1962 - ] - }, - { - "teal": 2007, - "source": 497, - "pc": [ - 1963 - ] - }, - { - "teal": 2008, - "source": 497, - "pc": [ - 1964 - ] - }, - { - "teal": 2009, - "source": 497, - "pc": [ - 1965 - ] - }, - { - "teal": 2010, - "source": 497, - "pc": [ - 1966, - 1967 - ] - }, - { - "teal": 2011, - "source": 497, - "pc": [ - 1968 - ] - }, - { - "teal": 2014, - "source": 497, - "errorMessage": "numPools as uint16 overflowed 16 bits", - "pc": [ - 1969 - ] - }, - { - "teal": 2015, - "source": 497, - "pc": [ - 1970, - 1971, - 1972 - ] - }, - { - "teal": 2016, - "source": 497, - "pc": [ - 1973 - ] - }, - { - "teal": 2017, - "source": 498, - "pc": [ - 1974, - 1975 - ] - }, - { - "teal": 2018, - "source": 498, - "pc": [ - 1976 - ] - }, - { - "teal": 2019, - "source": 498, - "pc": [ - 1977 - ] - }, - { - "teal": 2020, - "source": 495, - "pc": [ - 1978 - ] - }, - { - "teal": 2021, - "source": 495, - "pc": [ - 1979 - ] - }, - { - "teal": 2025, - "source": 501, - "pc": [ - 1980, - 1981 - ] - }, - { - "teal": 2026, - "source": 501, - "pc": [ - 1982 - ] - }, - { - "teal": 2027, - "source": 501, - "pc": [ - 1983, - 1984 - ] - }, - { - "teal": 2028, - "source": 501, - "pc": [ - 1985 - ] - }, - { - "teal": 2029, - "source": 501, - "pc": [ - 1986 - ] - }, - { - "teal": 2030, - "source": 501, - "pc": [ - 1987, - 1988 - ] - }, - { - "teal": 2031, - "source": 501, - "pc": [ - 1989 - ] - }, - { - "teal": 2032, - "source": 501, - "pc": [ - 1990 - ] - }, - { - "teal": 2035, - "source": 453, - "pc": [ - 1991, - 1992 - ] - }, - { - "teal": 2038, - "source": 453, - "pc": [ - 1993, - 1994 - ] - }, - { - "teal": 2039, - "source": 453, - "pc": [ - 1995 - ] - }, - { - "teal": 2044, - "source": 513, - "pc": [ - 1996 - ] - }, - { - "teal": 2047, - "source": 513, - "pc": [ - 1997, - 1998, - 1999 - ] - }, - { - "teal": 2048, - "source": 513, - "pc": [ - 2000 - ] - }, - { - "teal": 2051, - "source": 513, - "pc": [ - 2001, - 2002, - 2003 - ] - }, - { - "teal": 2052, - "source": 513, - "pc": [ - 2004 - ] - }, - { - "teal": 2055, - "source": 513, - "pc": [ - 2005, - 2006 - ] - }, - { - "teal": 2056, - "source": 513, - "pc": [ - 2007 - ] - }, - { - "teal": 2057, - "source": 513, - "pc": [ - 2008 - ] - }, - { - "teal": 2058, - "source": 513, - "pc": [ - 2009 - ] - }, - { - "teal": 2059, - "source": 513, - "pc": [ - 2010, - 2011 - ] - }, - { - "teal": 2060, - "source": 513, - "pc": [ - 2012 - ] - }, - { - "teal": 2061, - "source": 513, - "pc": [ - 2013 - ] - }, - { - "teal": 2064, - "source": 513, - "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", - "pc": [ - 2014 - ] - }, - { - "teal": 2067, - "source": 513, - "pc": [ - 2015, - 2016, - 2017 - ] - }, - { - "teal": 2068, - "source": 513, - "pc": [ - 2018 - ] - }, - { - "teal": 2069, - "source": 513, - "pc": [ - 2019 - ] - }, - { - "teal": 2070, - "source": 513, - "pc": [ - 2020 - ] - }, - { - "teal": 2071, - "source": 513, - "pc": [ - 2021 - ] - }, - { - "teal": 2083, - "source": 513, - "pc": [ - 2022, - 2023, - 2024 - ] - }, - { - "teal": 2086, - "source": 513, - "pc": [ - 2025 - ] - }, - { - "teal": 2087, - "source": 513, - "pc": [ - 2026, - 2027 - ] - }, - { - "teal": 2091, - "source": 514, - "pc": [ - 2028 - ] - }, - { - "teal": 2092, - "source": 514, - "pc": [ - 2029, - 2030 - ] - }, - { - "teal": 2093, - "source": 514, - "pc": [ - 2031 - ] - }, - { - "teal": 2094, - "source": 514, - "pc": [ - 2032 - ] - }, - { - "teal": 2095, - "source": 514, - "pc": [ - 2033 - ] - }, - { - "teal": 2096, - "source": 514, - "pc": [ - 2034 - ] - }, - { - "teal": 2097, - "source": 514, - "pc": [ - 2035 - ] - }, - { - "teal": 2100, - "source": 514, - "errorMessage": "specified validator id isn't valid", - "pc": [ - 2036 - ] - }, - { - "teal": 2105, - "source": 517, - "pc": [ - 2037, - 2038 - ] - }, - { - "teal": 2106, - "source": 517, - "pc": [ - 2039 - ] - }, - { - "teal": 2107, - "source": 517, - "pc": [ - 2040 - ] - }, - { - "teal": 2108, - "source": 517, - "pc": [ - 2041, - 2042 - ] - }, - { - "teal": 2109, - "source": 517, - "pc": [ - 2043 - ] - }, - { - "teal": 2110, - "source": 517, - "pc": [ - 2044 - ] - }, - { - "teal": 2111, - "source": 517, - "pc": [ - 2045, - 2046 - ] - }, - { - "teal": 2112, - "source": 517, - "pc": [ - 2047 - ] - }, - { - "teal": 2113, - "source": 517, - "pc": [ - 2048 - ] - }, - { - "teal": 2114, - "source": 517, - "pc": [ - 2049 - ] - }, - { - "teal": 2115, - "source": 517, - "pc": [ - 2050 - ] - }, - { - "teal": 2116, - "source": 517, - "pc": [ - 2051, - 2052, - 2053 - ] - }, - { - "teal": 2124, - "source": 520, - "pc": [ - 2054, - 2055 - ] - }, - { - "teal": 2125, - "source": 520, - "pc": [ - 2056 - ] - }, - { - "teal": 2126, - "source": 520, - "pc": [ - 2057 - ] - }, - { - "teal": 2127, - "source": 520, - "pc": [ - 2058, - 2059 - ] - }, - { - "teal": 2128, - "source": 520, - "pc": [ - 2060 - ] - }, - { - "teal": 2129, - "source": 520, - "pc": [ - 2061 - ] - }, - { - "teal": 2130, - "source": 520, - "pc": [ - 2062, - 2063 - ] - }, - { - "teal": 2131, - "source": 520, - "pc": [ - 2064 - ] - }, - { - "teal": 2132, - "source": 520, - "pc": [ - 2065 - ] - }, - { - "teal": 2133, - "source": 520, - "pc": [ - 2066, - 2067 - ] - }, - { - "teal": 2134, - "source": 520, - "pc": [ - 2068 - ] - }, - { - "teal": 2137, - "source": 519, - "errorMessage": "can't stake with a validator that is past its sunsetting time", - "pc": [ - 2069 - ] - }, - { - "teal": 2142, - "source": 525, - "pc": [ - 2070, - 2071 - ] - }, - { - "teal": 2143, - "source": 525, - "pc": [ - 2072, - 2073 - ] - }, - { - "teal": 2151, - "source": 529, - "pc": [ - 2074, - 2075 - ] - }, - { - "teal": 2152, - "source": 530, - "pc": [ - 2076, - 2077 - ] - }, - { - "teal": 2153, - "source": 530, - "pc": [ - 2078, - 2079 - ] - }, - { - "teal": 2154, - "source": 530, - "pc": [ - 2080 - ] - }, - { - "teal": 2157, - "source": 530, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", - "pc": [ - 2081 - ] - }, - { - "teal": 2160, - "source": 529, - "pc": [ - 2082, - 2083 - ] - }, - { - "teal": 2161, - "source": 531, - "pc": [ - 2084, - 2085 - ] - }, - { - "teal": 2162, - "source": 531, - "pc": [ - 2086, - 2087 - ] - }, - { - "teal": 2163, - "source": 531, - "pc": [ - 2088 - ] - }, - { - "teal": 2166, - "source": 531, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 2089 - ] - }, - { - "teal": 2170, - "source": 537, - "pc": [ - 2090, - 2091 - ] - }, - { - "teal": 2171, - "source": 537, - "pc": [ - 2092, - 2093 - ] - }, - { - "teal": 2172, - "source": 537, - "pc": [ - 2094, - 2095, - 2096 - ] - }, - { - "teal": 2176, - "source": 539, - "pc": [ - 2097, - 2098 - ] - }, - { - "teal": 2177, - "source": 539, - "pc": [ - 2099, - 2100 - ] - }, - { - "teal": 2178, - "source": 539, - "pc": [ - 2101, - 2102 - ] - }, - { - "teal": 2182, - "source": 540, - "pc": [ - 2103 - ] - }, - { - "teal": 2183, - "source": 540, - "pc": [ - 2104, - 2105 - ] - }, - { - "teal": 2188, - "source": 542, - "pc": [ - 2106, - 2107 - ] - }, - { - "teal": 2189, - "source": 542, - "pc": [ - 2108, - 2109, - 2110 - ] - }, - { - "teal": 2190, - "source": 542, - "pc": [ - 2111, - 2112, - 2113 - ] - }, - { - "teal": 2195, - "source": 545, - "pc": [ - 2114, - 2115, - 2116 - ] - }, - { - "teal": 2196, - "source": 545, - "pc": [ - 2117, - 2118, - 2119 - ] - }, - { - "teal": 2197, - "source": 545, - "pc": [ - 2120 - ] - }, - { - "teal": 2198, - "source": 545, - "pc": [ - 2121, - 2122 - ] - }, - { - "teal": 2202, - "source": 546, - "pc": [ - 2123, - 2124 - ] - }, - { - "teal": 2203, - "source": 546, - "pc": [ - 2125, - 2126 - ] - }, - { - "teal": 2204, - "source": 546, - "pc": [ - 2127 - ] - }, - { - "teal": 2205, - "source": 546, - "pc": [ - 2128, - 2129 - ] - }, - { - "teal": 2209, - "source": 547, - "pc": [ - 2130 - ] - }, - { - "teal": 2210, - "source": 547, - "pc": [ - 2131, - 2132 - ] - }, - { - "teal": 2211, - "source": 547, - "pc": [ - 2133 - ] - }, - { - "teal": 2212, - "source": 547, - "pc": [ - 2134, - 2135, - 2136 - ] - }, - { - "teal": 2213, - "source": 547, - "pc": [ - 2137 - ] - }, - { - "teal": 2214, - "source": 547, - "pc": [ - 2138 - ] - }, - { - "teal": 2222, - "source": 552, - "pc": [ - 2139, - 2140 - ] - }, - { - "teal": 2223, - "source": 552, - "pc": [ - 2141 - ] - }, - { - "teal": 2224, - "source": 552, - "pc": [ - 2142 - ] - }, - { - "teal": 2225, - "source": 552, - "pc": [ - 2143, - 2144 - ] - }, - { - "teal": 2226, - "source": 552, - "pc": [ - 2145 - ] - }, - { - "teal": 2227, - "source": 552, - "pc": [ - 2146 - ] - }, - { - "teal": 2228, - "source": 552, - "pc": [ - 2147, - 2148 - ] - }, - { - "teal": 2229, - "source": 552, - "pc": [ - 2149 - ] - }, - { - "teal": 2230, - "source": 552, - "pc": [ - 2150 - ] - }, - { - "teal": 2231, - "source": 552, - "pc": [ - 2151, - 2152 - ] - }, - { - "teal": 2232, - "source": 552, - "pc": [ - 2153 - ] - }, - { - "teal": 2233, - "source": 552, - "pc": [ - 2154, - 2155, - 2156 - ] - }, - { - "teal": 2234, - "source": 552, - "pc": [ - 2157 - ] - }, - { - "teal": 2237, - "source": 551, - "errorMessage": "total staked for all of a validators pools may not exceed hard cap", - "pc": [ - 2158 - ] - }, - { - "teal": 2241, - "source": 558, - "pc": [ - 2159, - 2160 - ] - }, - { - "teal": 2242, - "source": 558, - "pc": [ - 2161, - 2162 - ] - }, - { - "teal": 2243, - "source": 558, - "pc": [ - 2163, - 2164 - ] - }, - { - "teal": 2244, - "source": 558, - "pc": [ - 2165, - 2166, - 2167 - ] - }, - { - "teal": 2245, - "source": 558, - "pc": [ - 2168, - 2169 - ] - }, - { - "teal": 2251, - "source": 560, - "pc": [ - 2170, - 2171 - ] - }, - { - "teal": 2252, - "source": 560, - "pc": [ - 2172, - 2173 - ] - }, - { - "teal": 2253, - "source": 560, - "pc": [ - 2174, - 2175 - ] - }, - { - "teal": 2254, - "source": 560, - "pc": [ - 2176, - 2177 - ] - }, - { - "teal": 2255, - "source": 560, - "pc": [ - 2178 - ] - }, - { - "teal": 2256, - "source": 560, - "pc": [ - 2179, - 2180 - ] - }, - { - "teal": 2260, - "source": 561, - "pc": [ - 2181, - 2182 - ] - }, - { - "teal": 2261, - "source": 561, - "pc": [ - 2183, - 2184 - ] - }, - { - "teal": 2262, - "source": 561, - "pc": [ - 2185, - 2186 - ] - }, - { - "teal": 2263, - "source": 561, - "pc": [ - 2187, - 2188, - 2189 - ] - }, - { - "teal": 2264, - "source": 561, - "pc": [ - 2190 - ] - }, - { - "teal": 2265, - "source": 561, - "pc": [ - 2191, - 2192 - ] - }, - { - "teal": 2270, - "source": 562, - "pc": [ - 2193, - 2194 - ] - }, - { - "teal": 2271, - "source": 562, - "pc": [ - 2195, - 2196 - ] - }, - { - "teal": 2272, - "source": 562, - "pc": [ - 2197, - 2198 - ] - }, - { - "teal": 2273, - "source": 562, - "pc": [ - 2199, - 2200, - 2201 - ] - }, - { - "teal": 2274, - "source": 562, - "pc": [ - 2202 - ] - }, - { - "teal": 2275, - "source": 562, - "pc": [ - 2203 - ] - }, - { - "teal": 2276, - "source": 562, - "pc": [ - 2204 - ] - }, - { - "teal": 2277, - "source": 562, - "pc": [ - 2205, - 2206, - 2207 - ] - }, - { - "teal": 2281, - "source": 563, - "errorMessage": "No pool available with free stake. Validator needs to add another pool", - "pc": [ - 2208 - ] - }, - { - "teal": 2286, - "source": 567, - "pc": [ - 2209, - 2210 - ] - }, - { - "teal": 2287, - "source": 567, - "pc": [ - 2211, - 2212 - ] - }, - { - "teal": 2288, - "source": 567, - "pc": [ - 2213, - 2214 - ] - }, - { - "teal": 2289, - "source": 567, - "pc": [ - 2215, - 2216, - 2217 - ] - }, - { - "teal": 2290, - "source": 567, - "pc": [ - 2218, - 2219 - ] - }, - { - "teal": 2291, - "source": 567, - "pc": [ - 2220, - 2221, - 2222 - ] - }, - { - "teal": 2301, - "source": 575, - "pc": [ - 2223, - 2224 - ] - }, - { - "teal": 2302, - "source": 574, - "pc": [ - 2225, - 2226 - ] - }, - { - "teal": 2303, - "source": 573, - "pc": [ - 2227, - 2228 - ] - }, - { - "teal": 2304, - "source": 572, - "pc": [ - 2229, - 2230 - ] - }, - { - "teal": 2305, - "source": 572, - "pc": [ - 2231, - 2232 - ] - }, - { - "teal": 2306, - "source": 572, - "pc": [ - 2233, - 2234 - ] - }, - { - "teal": 2307, - "source": 572, - "pc": [ - 2235, - 2236, - 2237 - ] - }, - { - "teal": 2308, - "source": 571, - "pc": [ - 2238, - 2239 - ] - }, - { - "teal": 2309, - "source": 570, - "pc": [ - 2240, - 2241, - 2242 - ] - }, - { - "teal": 2319, - "source": 577, - "pc": [ - 2243, - 2244, - 2245, - 2246, - 2247, - 2248 - ] - }, - { - "teal": 2320, - "source": 578, - "pc": [ - 2249, - 2250 - ] - }, - { - "teal": 2321, - "source": 578, - "pc": [ - 2251 - ] - }, - { - "teal": 2322, - "source": 579, - "pc": [ - 2252, - 2253 - ] - }, - { - "teal": 2323, - "source": 579, - "pc": [ - 2254, - 2255 - ] - }, - { - "teal": 2324, - "source": 579, - "pc": [ - 2256, - 2257 - ] - }, - { - "teal": 2325, - "source": 579, - "pc": [ - 2258, - 2259, - 2260 - ] - }, - { - "teal": 2326, - "source": 579, - "pc": [ - 2261 - ] - }, - { - "teal": 2327, - "source": 579, - "pc": [ - 2262 - ] - }, - { - "teal": 2328, - "source": 579, - "pc": [ - 2263 - ] - }, - { - "teal": 2329, - "source": 579, - "pc": [ - 2264 - ] - }, - { - "teal": 2330, - "source": 579, - "pc": [ - 2265, - 2266 - ] - }, - { - "teal": 2331, - "source": 579, - "pc": [ - 2267 - ] - }, - { - "teal": 2334, - "source": 579, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", - "pc": [ - 2268 - ] - }, - { - "teal": 2335, - "source": 579, - "pc": [ - 2269, - 2270, - 2271 - ] - }, - { - "teal": 2336, - "source": 579, - "pc": [ - 2272 - ] - }, - { - "teal": 2337, - "source": 580, - "pc": [ - 2273, - 2274 - ] - }, - { - "teal": 2338, - "source": 580, - "pc": [ - 2275, - 2276 - ] - }, - { - "teal": 2339, - "source": 580, - "pc": [ - 2277, - 2278 - ] - }, - { - "teal": 2340, - "source": 580, - "pc": [ - 2279, - 2280, - 2281 - ] - }, - { - "teal": 2341, - "source": 580, - "pc": [ - 2282 - ] - }, - { - "teal": 2342, - "source": 580, - "pc": [ - 2283 - ] - }, - { - "teal": 2343, - "source": 580, - "pc": [ - 2284 - ] - }, - { - "teal": 2344, - "source": 582, - "pc": [ - 2285, - 2286 - ] - }, - { - "teal": 2345, - "source": 582, - "pc": [ - 2287 - ] - }, - { - "teal": 2346, - "source": 581, - "pc": [ - 2288, - 2289 - ] - }, - { - "teal": 2347, - "source": 581, - "pc": [ - 2290 - ] - }, - { - "teal": 2348, - "source": 581, - "pc": [ - 2291 - ] - }, - { - "teal": 2349, - "source": 577, - "pc": [ - 2292 - ] - }, - { - "teal": 2350, - "source": 577, - "pc": [ - 2293 - ] - }, - { - "teal": 2354, - "source": 585, - "pc": [ - 2294, - 2295 - ] - }, - { - "teal": 2355, - "source": 585, - "pc": [ - 2296, - 2297 - ] - }, - { - "teal": 2356, - "source": 585, - "pc": [ - 2298, - 2299 - ] - }, - { - "teal": 2357, - "source": 585, - "pc": [ - 2300, - 2301, - 2302 - ] - }, - { - "teal": 2360, - "source": 513, - "pc": [ - 2303, - 2304 - ] - }, - { - "teal": 2363, - "source": 513, - "pc": [ - 2305, - 2306 - ] - }, - { - "teal": 2364, - "source": 513, - "pc": [ - 2307 - ] - }, - { - "teal": 2369, - "source": 603, - "pc": [ - 2308 - ] - }, - { - "teal": 2372, - "source": 603, - "pc": [ - 2309, - 2310, - 2311 - ] - }, - { - "teal": 2373, - "source": 603, - "pc": [ - 2312 - ] - }, - { - "teal": 2376, - "source": 603, - "pc": [ - 2313, - 2314, - 2315 - ] - }, - { - "teal": 2377, - "source": 603, - "pc": [ - 2316 - ] - }, - { - "teal": 2378, - "source": 603, - "pc": [ - 2317 - ] - }, - { - "teal": 2379, - "source": 603, - "pc": [ - 2318 - ] - }, - { - "teal": 2380, - "source": 603, - "pc": [ - 2319 - ] - }, - { - "teal": 2398, - "source": 603, - "pc": [ - 2320, - 2321, - 2322 - ] - }, - { - "teal": 2401, - "source": 603, - "pc": [ - 2323 - ] - }, - { - "teal": 2402, - "source": 603, - "pc": [ - 2324, - 2325 - ] - }, - { - "teal": 2406, - "source": 605, - "pc": [ - 2326, - 2327 - ] - }, - { - "teal": 2407, - "source": 605, - "pc": [ - 2328 - ] - }, - { - "teal": 2408, - "source": 605, - "pc": [ - 2329 - ] - }, - { - "teal": 2409, - "source": 605, - "pc": [ - 2330, - 2331 - ] - }, - { - "teal": 2410, - "source": 605, - "pc": [ - 2332 - ] - }, - { - "teal": 2411, - "source": 605, - "pc": [ - 2333 - ] - }, - { - "teal": 2412, - "source": 605, - "pc": [ - 2334, - 2335 - ] - }, - { - "teal": 2413, - "source": 605, - "pc": [ - 2336 - ] - }, - { - "teal": 2414, - "source": 605, - "pc": [ - 2337 - ] - }, - { - "teal": 2415, - "source": 605, - "pc": [ - 2338, - 2339 - ] - }, - { - "teal": 2419, - "source": 606, - "pc": [ - 2340, - 2341 - ] - }, - { - "teal": 2420, - "source": 606, - "pc": [ - 2342 - ] - }, - { - "teal": 2421, - "source": 606, - "pc": [ - 2343 - ] - }, - { - "teal": 2422, - "source": 606, - "pc": [ - 2344 - ] - }, - { - "teal": 2427, - "source": 608, - "pc": [ - 2345, - 2346 - ] - }, - { - "teal": 2428, - "source": 608, - "pc": [ - 2347, - 2348 - ] - }, - { - "teal": 2429, - "source": 608, - "pc": [ - 2349, - 2350 - ] - }, - { - "teal": 2430, - "source": 608, - "pc": [ - 2351 - ] - }, - { - "teal": 2431, - "source": 608, - "pc": [ - 2352 - ] - }, - { - "teal": 2432, - "source": 608, - "pc": [ - 2353, - 2354, - 2355 - ] - }, - { - "teal": 2437, - "source": 609, - "pc": [ - 2356, - 2357 - ] - }, - { - "teal": 2438, - "source": 609, - "pc": [ - 2358, - 2359 - ] - }, - { - "teal": 2439, - "source": 609, - "pc": [ - 2360 - ] - }, - { - "teal": 2440, - "source": 609, - "pc": [ - 2361, - 2362 - ] - }, - { - "teal": 2441, - "source": 609, - "pc": [ - 2363 - ] - }, - { - "teal": 2442, - "source": 609, - "pc": [ - 2364 - ] - }, - { - "teal": 2443, - "source": 609, - "pc": [ - 2365, - 2366 - ] - }, - { - "teal": 2444, - "source": 609, - "pc": [ - 2367 - ] - }, - { - "teal": 2445, - "source": 609, - "pc": [ - 2368, - 2369, - 2370 - ] - }, - { - "teal": 2450, - "source": 615, - "pc": [ - 2371, - 2372 - ] - }, - { - "teal": 2451, - "source": 615, - "pc": [ - 2373, - 2374 - ] - }, - { - "teal": 2455, - "source": 616, - "pc": [ - 2375, - 2376 - ] - }, - { - "teal": 2456, - "source": 616, - "pc": [ - 2377 - ] - }, - { - "teal": 2457, - "source": 616, - "pc": [ - 2378 - ] - }, - { - "teal": 2458, - "source": 616, - "pc": [ - 2379, - 2380 - ] - }, - { - "teal": 2459, - "source": 616, - "pc": [ - 2381 - ] - }, - { - "teal": 2460, - "source": 616, - "pc": [ - 2382 - ] - }, - { - "teal": 2461, - "source": 616, - "pc": [ - 2383, - 2384 - ] - }, - { - "teal": 2462, - "source": 616, - "pc": [ - 2385 - ] - }, - { - "teal": 2463, - "source": 616, - "pc": [ - 2386 - ] - }, - { - "teal": 2464, - "source": 616, - "pc": [ - 2387, - 2388 - ] - }, - { - "teal": 2469, - "source": 617, - "pc": [ - 2389, - 2390 - ] - }, - { - "teal": 2470, - "source": 617, - "pc": [ - 2391 - ] - }, - { - "teal": 2471, - "source": 617, - "pc": [ - 2392 - ] - }, - { - "teal": 2472, - "source": 617, - "pc": [ - 2393, - 2394, - 2395 - ] - }, - { - "teal": 2478, - "source": 619, - "pc": [ - 2396, - 2397 - ] - }, - { - "teal": 2479, - "source": 619, - "pc": [ - 2398, - 2399, - 2400, - 2401, - 2402, - 2403, - 2404, - 2405, - 2406, - 2407, - 2408, - 2409 - ] - }, - { - "teal": 2480, - "source": 619, - "pc": [ - 2410 - ] - }, - { - "teal": 2483, - "source": 619, - "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", - "pc": [ - 2411 - ] - }, - { - "teal": 2484, - "source": 619, - "pc": [ - 2412, - 2413 - ] - }, - { - "teal": 2485, - "source": 619, - "pc": [ - 2414 - ] - }, - { - "teal": 2486, - "source": 619, - "pc": [ - 2415, - 2416, - 2417 - ] - }, - { - "teal": 2491, - "source": 620, - "pc": [ - 2418, - 2419 - ] - }, - { - "teal": 2492, - "source": 620, - "pc": [ - 2420, - 2421 - ] - }, - { - "teal": 2493, - "source": 620, - "pc": [ - 2422 - ] - }, - { - "teal": 2494, - "source": 620, - "pc": [ - 2423, - 2424 - ] - }, - { - "teal": 2495, - "source": 620, - "pc": [ - 2425 - ] - }, - { - "teal": 2496, - "source": 620, - "pc": [ - 2426 - ] - }, - { - "teal": 2497, - "source": 620, - "pc": [ - 2427, - 2428 - ] - }, - { - "teal": 2498, - "source": 620, - "pc": [ - 2429 - ] - }, - { - "teal": 2499, - "source": 620, - "pc": [ - 2430, - 2431, - 2432 - ] - }, - { - "teal": 2504, - "source": 622, - "pc": [ - 2433, - 2434, - 2435 - ] - }, - { - "teal": 2505, - "source": 622, - "pc": [ - 2436, - 2437 - ] - }, - { - "teal": 2506, - "source": 622, - "pc": [ - 2438 - ] - }, - { - "teal": 2507, - "source": 622, - "pc": [ - 2439, - 2440 - ] - }, - { - "teal": 2508, - "source": 622, - "pc": [ - 2441 - ] - }, - { - "teal": 2509, - "source": 622, - "pc": [ - 2442 - ] - }, - { - "teal": 2510, - "source": 622, - "pc": [ - 2443, - 2444 - ] - }, - { - "teal": 2511, - "source": 622, - "pc": [ - 2445 - ] - }, - { - "teal": 2512, - "source": 622, - "pc": [ - 2446 - ] - }, - { - "teal": 2513, - "source": 622, - "pc": [ - 2447, - 2448 - ] - }, - { - "teal": 2517, - "source": 623, - "pc": [ - 2449, - 2450 - ] - }, - { - "teal": 2518, - "source": 623, - "pc": [ - 2451, - 2452 - ] - }, - { - "teal": 2519, - "source": 623, - "pc": [ - 2453, - 2454 - ] - }, - { - "teal": 2520, - "source": 623, - "pc": [ - 2455 - ] - }, - { - "teal": 2521, - "source": 623, - "pc": [ - 2456 - ] - }, - { - "teal": 2522, - "source": 623, - "pc": [ - 2457, - 2458 - ] - }, - { - "teal": 2527, - "source": 625, - "pc": [ - 2459, - 2460 - ] - }, - { - "teal": 2528, - "source": 625, - "pc": [ - 2461, - 2462 - ] - }, - { - "teal": 2529, - "source": 625, - "pc": [ - 2463, - 2464 - ] - }, - { - "teal": 2530, - "source": 625, - "pc": [ - 2465 - ] - }, - { - "teal": 2531, - "source": 625, - "pc": [ - 2466 - ] - }, - { - "teal": 2532, - "source": 625, - "pc": [ - 2467, - 2468 - ] - }, - { - "teal": 2533, - "source": 625, - "pc": [ - 2469 - ] - }, - { - "teal": 2534, - "source": 625, - "pc": [ - 2470, - 2471, - 2472 - ] - }, - { - "teal": 2539, - "source": 626, - "pc": [ - 2473, - 2474 - ] - }, - { - "teal": 2540, - "source": 626, - "pc": [ - 2475, - 2476 - ] - }, - { - "teal": 2541, - "source": 626, - "pc": [ - 2477 - ] - }, - { - "teal": 2542, - "source": 626, - "pc": [ - 2478, - 2479 - ] - }, - { - "teal": 2543, - "source": 626, - "pc": [ - 2480 - ] - }, - { - "teal": 2544, - "source": 626, - "pc": [ - 2481 - ] - }, - { - "teal": 2545, - "source": 626, - "pc": [ - 2482, - 2483 - ] - }, - { - "teal": 2546, - "source": 626, - "pc": [ - 2484 - ] - }, - { - "teal": 2547, - "source": 626, - "pc": [ - 2485, - 2486, - 2487 - ] - }, - { - "teal": 2554, - "source": 629, - "pc": [ - 2488, - 2489 - ] - }, - { - "teal": 2555, - "source": 629, - "pc": [ - 2490, - 2491 - ] - }, - { - "teal": 2556, - "source": 629, - "pc": [ - 2492 - ] - }, - { - "teal": 2557, - "source": 629, - "pc": [ - 2493 - ] - }, - { - "teal": 2558, - "source": 629, - "pc": [ - 2494, - 2495 - ] - }, - { - "teal": 2559, - "source": 629, - "pc": [ - 2496 - ] - }, - { - "teal": 2560, - "source": 629, - "pc": [ - 2497 - ] - }, - { - "teal": 2561, - "source": 629, - "pc": [ - 2498, - 2499 - ] - }, - { - "teal": 2562, - "source": 629, - "pc": [ - 2500 - ] - }, - { - "teal": 2566, - "source": 631, - "pc": [ - 2501, - 2502 - ] - }, - { - "teal": 2567, - "source": 631, - "pc": [ - 2503, - 2504 - ] - }, - { - "teal": 2568, - "source": 631, - "pc": [ - 2505 - ] - }, - { - "teal": 2569, - "source": 631, - "pc": [ - 2506, - 2507 - ] - }, - { - "teal": 2570, - "source": 631, - "pc": [ - 2508 - ] - }, - { - "teal": 2571, - "source": 631, - "pc": [ - 2509 - ] - }, - { - "teal": 2572, - "source": 631, - "pc": [ - 2510, - 2511 - ] - }, - { - "teal": 2573, - "source": 631, - "pc": [ - 2512 - ] - }, - { - "teal": 2574, - "source": 631, - "pc": [ - 2513 - ] - }, - { - "teal": 2575, - "source": 631, - "pc": [ - 2514, - 2515 - ] - }, - { - "teal": 2579, - "source": 632, - "pc": [ - 2516, - 2517 - ] - }, - { - "teal": 2580, - "source": 632, - "pc": [ - 2518 - ] - }, - { - "teal": 2581, - "source": 632, - "pc": [ - 2519 - ] - }, - { - "teal": 2582, - "source": 632, - "pc": [ - 2520, - 2521 - ] - }, - { - "teal": 2583, - "source": 632, - "pc": [ - 2522 - ] - }, - { - "teal": 2584, - "source": 632, - "pc": [ - 2523 - ] - }, - { - "teal": 2585, - "source": 632, - "pc": [ - 2524, - 2525 - ] - }, - { - "teal": 2586, - "source": 632, - "pc": [ - 2526 - ] - }, - { - "teal": 2587, - "source": 632, - "pc": [ - 2527 - ] - }, - { - "teal": 2588, - "source": 632, - "pc": [ - 2528, - 2529 - ] - }, - { - "teal": 2592, - "source": 633, - "pc": [ - 2530 - ] - }, - { - "teal": 2593, - "source": 633, - "pc": [ - 2531, - 2532 - ] - }, - { - "teal": 2598, - "source": 633, - "pc": [ - 2533, - 2534 - ] - }, - { - "teal": 2599, - "source": 633, - "pc": [ - 2535, - 2536 - ] - }, - { - "teal": 2600, - "source": 633, - "pc": [ - 2537 - ] - }, - { - "teal": 2601, - "source": 633, - "pc": [ - 2538, - 2539, - 2540 - ] - }, - { - "teal": 2608, - "source": 639, - "pc": [ - 2541, - 2542 - ] - }, - { - "teal": 2609, - "source": 639, - "pc": [ - 2543, - 2544 - ] - }, - { - "teal": 2610, - "source": 639, - "pc": [ - 2545, - 2546 - ] - }, - { - "teal": 2611, - "source": 639, - "pc": [ - 2547 - ] - }, - { - "teal": 2612, - "source": 639, - "pc": [ - 2548 - ] - }, - { - "teal": 2613, - "source": 639, - "pc": [ - 2549, - 2550 - ] - }, - { - "teal": 2614, - "source": 639, - "pc": [ - 2551 - ] - }, - { - "teal": 2615, - "source": 639, - "pc": [ - 2552 - ] - }, - { - "teal": 2616, - "source": 639, - "pc": [ - 2553 - ] - }, - { - "teal": 2617, - "source": 639, - "pc": [ - 2554, - 2555 - ] - }, - { - "teal": 2618, - "source": 639, - "pc": [ - 2556 - ] - }, - { - "teal": 2619, - "source": 639, - "pc": [ - 2557 - ] - }, - { - "teal": 2620, - "source": 639, - "pc": [ - 2558, - 2559 - ] - }, - { - "teal": 2621, - "source": 639, - "pc": [ - 2560 - ] - }, - { - "teal": 2622, - "source": 639, - "pc": [ - 2561 - ] - }, - { - "teal": 2623, - "source": 639, - "pc": [ - 2562, - 2563 - ] - }, - { - "teal": 2624, - "source": 638, - "pc": [ - 2564 - ] - }, - { - "teal": 2625, - "source": 638, - "pc": [ - 2565 - ] - }, - { - "teal": 2626, - "source": 640, - "pc": [ - 2566, - 2567 - ] - }, - { - "teal": 2627, - "source": 638, - "pc": [ - 2568 - ] - }, - { - "teal": 2628, - "source": 638, - "pc": [ - 2569 - ] - }, - { - "teal": 2629, - "source": 638, - "pc": [ - 2570 - ] - }, - { - "teal": 2630, - "source": 638, - "pc": [ - 2571 - ] - }, - { - "teal": 2631, - "source": 638, - "pc": [ - 2572 - ] - }, - { - "teal": 2634, - "source": 638, - "errorMessage": "wideRatio failed", - "pc": [ - 2573 - ] - }, - { - "teal": 2635, - "source": 638, - "pc": [ - 2574, - 2575 - ] - }, - { - "teal": 2639, - "source": 642, - "pc": [ - 2576, - 2577 - ] - }, - { - "teal": 2640, - "source": 642, - "pc": [ - 2578, - 2579 - ] - }, - { - "teal": 2641, - "source": 642, - "pc": [ - 2580 - ] - }, - { - "teal": 2642, - "source": 642, - "pc": [ - 2581 - ] - }, - { - "teal": 2643, - "source": 642, - "pc": [ - 2582 - ] - }, - { - "teal": 2644, - "source": 642, - "pc": [ - 2583, - 2584 - ] - }, - { - "teal": 2645, - "source": 642, - "pc": [ - 2585 - ] - }, - { - "teal": 2646, - "source": 642, - "pc": [ - 2586 - ] - }, - { - "teal": 2647, - "source": 642, - "pc": [ - 2587, - 2588 - ] - }, - { - "teal": 2648, - "source": 642, - "pc": [ - 2589 - ] - }, - { - "teal": 2649, - "source": 642, - "pc": [ - 2590 - ] - }, - { - "teal": 2650, - "source": 642, - "pc": [ - 2591, - 2592 - ] - }, - { - "teal": 2651, - "source": 642, - "pc": [ - 2593 - ] - }, - { - "teal": 2656, - "source": 633, - "pc": [ - 2594, - 2595 - ] - }, - { - "teal": 2657, - "source": 633, - "pc": [ - 2596 - ] - }, - { - "teal": 2658, - "source": 633, - "pc": [ - 2597 - ] - }, - { - "teal": 2659, - "source": 633, - "pc": [ - 2598, - 2599 - ] - }, - { - "teal": 2660, - "source": 633, - "pc": [ - 2600, - 2601, - 2602 - ] - }, - { - "teal": 2665, - "source": 644, - "pc": [ - 2603, - 2604 - ] - }, - { - "teal": 2666, - "source": 644, - "pc": [ - 2605, - 2606 - ] - }, - { - "teal": 2667, - "source": 644, - "pc": [ - 2607 - ] - }, - { - "teal": 2668, - "source": 644, - "pc": [ - 2608, - 2609 - ] - }, - { - "teal": 2669, - "source": 644, - "pc": [ - 2610 - ] - }, - { - "teal": 2670, - "source": 644, - "pc": [ - 2611 - ] - }, - { - "teal": 2671, - "source": 644, - "pc": [ - 2612, - 2613 - ] - }, - { - "teal": 2672, - "source": 644, - "pc": [ - 2614 - ] - }, - { - "teal": 2676, - "source": 603, - "pc": [ - 2615, - 2616 - ] - }, - { - "teal": 2679, - "source": 603, - "pc": [ - 2617, - 2618 - ] - }, - { - "teal": 2680, - "source": 603, - "pc": [ - 2619 - ] - }, - { - "teal": 2685, - "source": 663, - "pc": [ - 2620, - 2621, - 2622 - ] - }, - { - "teal": 2686, - "source": 663, - "pc": [ - 2623 - ] - }, - { - "teal": 2689, - "source": 662, - "pc": [ - 2624, - 2625, - 2626 - ] - }, - { - "teal": 2690, - "source": 662, - "pc": [ - 2627 - ] - }, - { - "teal": 2693, - "source": 661, - "pc": [ - 2628, - 2629, - 2630 - ] - }, - { - "teal": 2694, - "source": 661, - "pc": [ - 2631 - ] - }, - { - "teal": 2697, - "source": 660, - "pc": [ - 2632, - 2633, - 2634 - ] - }, - { - "teal": 2698, - "source": 660, - "pc": [ - 2635 - ] - }, - { - "teal": 2701, - "source": 659, - "pc": [ - 2636, - 2637, - 2638 - ] - }, - { - "teal": 2702, - "source": 659, - "pc": [ - 2639 - ] - }, - { - "teal": 2703, - "source": 659, - "pc": [ - 2640 - ] - }, - { - "teal": 2704, - "source": 659, - "pc": [ - 2641 - ] - }, - { - "teal": 2705, - "source": 659, - "pc": [ - 2642 - ] - }, - { - "teal": 2708, - "source": 659, - "errorMessage": "argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)", - "pc": [ - 2643 - ] - }, - { - "teal": 2711, - "source": 658, - "pc": [ - 2644, - 2645, - 2646 - ] - }, - { - "teal": 2712, - "source": 658, - "pc": [ - 2647 - ] - }, - { - "teal": 2713, - "source": 658, - "pc": [ - 2648 - ] - }, - { - "teal": 2727, - "source": 658, - "pc": [ - 2649, - 2650, - 2651 - ] - }, - { - "teal": 2731, - "source": 665, - "pc": [ - 2652, - 2653 - ] - }, - { - "teal": 2732, - "source": 665, - "pc": [ - 2654, - 2655, - 2656 - ] - }, - { - "teal": 2736, - "source": 668, - "pc": [ - 2657, - 2658 - ] - }, - { - "teal": 2737, - "source": 668, - "pc": [ - 2659, - 2660 - ] - }, - { - "teal": 2738, - "source": 668, - "pc": [ - 2661, - 2662, - 2663 - ] - }, - { - "teal": 2739, - "source": 668, - "pc": [ - 2664 - ] - }, - { - "teal": 2740, - "source": 668, - "pc": [ - 2665 - ] - }, - { - "teal": 2741, - "source": 668, - "pc": [ - 2666 - ] - }, - { - "teal": 2742, - "source": 668, - "pc": [ - 2667, - 2668 - ] - }, - { - "teal": 2743, - "source": 668, - "pc": [ - 2669 - ] - }, - { - "teal": 2744, - "source": 668, - "pc": [ - 2670 - ] - }, - { - "teal": 2745, - "source": 668, - "pc": [ - 2671, - 2672 - ] - }, - { - "teal": 2746, - "source": 668, - "pc": [ - 2673 - ] - }, - { - "teal": 2747, - "source": 668, - "pc": [ - 2674, - 2675 - ] - }, - { - "teal": 2748, - "source": 668, - "pc": [ - 2676, - 2677 - ] - }, - { - "teal": 2749, - "source": 668, - "pc": [ - 2678, - 2679, - 2680 - ] - }, - { - "teal": 2750, - "source": 668, - "pc": [ - 2681 - ] - }, - { - "teal": 2751, - "source": 668, - "pc": [ - 2682 - ] - }, - { - "teal": 2752, - "source": 668, - "pc": [ - 2683 - ] - }, - { - "teal": 2753, - "source": 668, - "pc": [ - 2684, - 2685 - ] - }, - { - "teal": 2754, - "source": 668, - "pc": [ - 2686 - ] - }, - { - "teal": 2755, - "source": 668, - "pc": [ - 2687 - ] - }, - { - "teal": 2756, - "source": 668, - "pc": [ - 2688, - 2689 - ] - }, - { - "teal": 2757, - "source": 668, - "pc": [ - 2690 - ] - }, - { - "teal": 2758, - "source": 668, - "pc": [ - 2691 - ] - }, - { - "teal": 2759, - "source": 668, - "pc": [ - 2692 - ] - }, - { - "teal": 2760, - "source": 668, - "pc": [ - 2693, - 2694 - ] - }, - { - "teal": 2761, - "source": 668, - "pc": [ - 2695, - 2696, - 2697 - ] - }, - { - "teal": 2762, - "source": 668, - "pc": [ - 2698 - ] - }, - { - "teal": 2763, - "source": 668, - "pc": [ - 2699 - ] - }, - { - "teal": 2764, - "source": 668, - "pc": [ - 2700 - ] - }, - { - "teal": 2765, - "source": 668, - "pc": [ - 2701, - 2702 - ] - }, - { - "teal": 2766, - "source": 668, - "pc": [ - 2703 - ] - }, - { - "teal": 2767, - "source": 668, - "pc": [ - 2704 - ] - }, - { - "teal": 2768, - "source": 668, - "pc": [ - 2705, - 2706 - ] - }, - { - "teal": 2769, - "source": 668, - "pc": [ - 2707 - ] - }, - { - "teal": 2770, - "source": 668, - "pc": [ - 2708 - ] - }, - { - "teal": 2771, - "source": 668, - "pc": [ - 2709 - ] - }, - { - "teal": 2772, - "source": 668, - "pc": [ - 2710, - 2711 - ] - }, - { - "teal": 2773, - "source": 668, - "pc": [ - 2712, - 2713, - 2714 - ] - }, - { - "teal": 2774, - "source": 668, - "pc": [ - 2715 - ] - }, - { - "teal": 2775, - "source": 668, - "pc": [ - 2716 - ] - }, - { - "teal": 2776, - "source": 668, - "pc": [ - 2717 - ] - }, - { - "teal": 2777, - "source": 668, - "pc": [ - 2718, - 2719 - ] - }, - { - "teal": 2778, - "source": 668, - "pc": [ - 2720 - ] - }, - { - "teal": 2782, - "source": 669, - "pc": [ - 2721, - 2722 - ] - }, - { - "teal": 2783, - "source": 669, - "pc": [ - 2723 - ] - }, - { - "teal": 2784, - "source": 669, - "pc": [ - 2724 - ] - }, - { - "teal": 2785, - "source": 669, - "pc": [ - 2725 - ] - }, - { - "teal": 2786, - "source": 669, - "pc": [ - 2726, - 2727 - ] - }, - { - "teal": 2787, - "source": 669, - "pc": [ - 2728, - 2729, - 2730 - ] - }, - { - "teal": 2788, - "source": 669, - "pc": [ - 2731 - ] - }, - { - "teal": 2789, - "source": 669, - "pc": [ - 2732 - ] - }, - { - "teal": 2790, - "source": 669, - "pc": [ - 2733 - ] - }, - { - "teal": 2791, - "source": 669, - "pc": [ - 2734, - 2735 - ] - }, - { - "teal": 2792, - "source": 669, - "pc": [ - 2736 - ] - }, - { - "teal": 2793, - "source": 669, - "pc": [ - 2737 - ] - }, - { - "teal": 2794, - "source": 669, - "pc": [ - 2738, - 2739 - ] - }, - { - "teal": 2795, - "source": 669, - "pc": [ - 2740 - ] - }, - { - "teal": 2796, - "source": 669, - "pc": [ - 2741 - ] - }, - { - "teal": 2797, - "source": 669, - "pc": [ - 2742 - ] - }, - { - "teal": 2798, - "source": 669, - "pc": [ - 2743, - 2744 - ] - }, - { - "teal": 2799, - "source": 669, - "pc": [ - 2745, - 2746, - 2747 - ] - }, - { - "teal": 2800, - "source": 669, - "pc": [ - 2748 - ] - }, - { - "teal": 2801, - "source": 669, - "pc": [ - 2749 - ] - }, - { - "teal": 2802, - "source": 669, - "pc": [ - 2750 - ] - }, - { - "teal": 2803, - "source": 669, - "pc": [ - 2751, - 2752 - ] - }, - { - "teal": 2804, - "source": 669, - "pc": [ - 2753 - ] - }, - { - "teal": 2808, - "source": 670, - "pc": [ - 2754, - 2755 - ] - }, - { - "teal": 2809, - "source": 670, - "pc": [ - 2756 - ] - }, - { - "teal": 2810, - "source": 670, - "pc": [ - 2757 - ] - }, - { - "teal": 2811, - "source": 670, - "pc": [ - 2758 - ] - }, - { - "teal": 2812, - "source": 670, - "pc": [ - 2759, - 2760 - ] - }, - { - "teal": 2813, - "source": 670, - "pc": [ - 2761, - 2762, - 2763 - ] - }, - { - "teal": 2814, - "source": 670, - "pc": [ - 2764 - ] - }, - { - "teal": 2815, - "source": 670, - "pc": [ - 2765 - ] - }, - { - "teal": 2816, - "source": 670, - "pc": [ - 2766 - ] - }, - { - "teal": 2817, - "source": 670, - "pc": [ - 2767, - 2768 - ] - }, - { - "teal": 2818, - "source": 670, - "pc": [ - 2769 - ] - }, - { - "teal": 2819, - "source": 670, - "pc": [ - 2770 - ] - }, - { - "teal": 2820, - "source": 670, - "pc": [ - 2771, - 2772 - ] - }, - { - "teal": 2821, - "source": 670, - "pc": [ - 2773 - ] - }, - { - "teal": 2822, - "source": 670, - "pc": [ - 2774 - ] - }, - { - "teal": 2823, - "source": 670, - "pc": [ - 2775 - ] - }, - { - "teal": 2824, - "source": 670, - "pc": [ - 2776, - 2777 - ] - }, - { - "teal": 2825, - "source": 670, - "pc": [ - 2778, - 2779, - 2780 - ] - }, - { - "teal": 2826, - "source": 670, - "pc": [ - 2781 - ] - }, - { - "teal": 2827, - "source": 670, - "pc": [ - 2782 - ] - }, - { - "teal": 2828, - "source": 670, - "pc": [ - 2783 - ] - }, - { - "teal": 2829, - "source": 670, - "pc": [ - 2784, - 2785 - ] - }, - { - "teal": 2830, - "source": 670, - "pc": [ - 2786 - ] - }, - { - "teal": 2834, - "source": 672, - "pc": [ - 2787, - 2788 - ] - }, - { - "teal": 2835, - "source": 672, - "pc": [ - 2789 - ] - }, - { - "teal": 2836, - "source": 672, - "pc": [ - 2790, - 2791 - ] - }, - { - "teal": 2837, - "source": 672, - "pc": [ - 2792 - ] - }, - { - "teal": 2838, - "source": 672, - "pc": [ - 2793, - 2794 - ] - }, - { - "teal": 2839, - "source": 672, - "pc": [ - 2795 - ] - }, - { - "teal": 2840, - "source": 672, - "pc": [ - 2796 - ] - }, - { - "teal": 2844, - "source": 675, - "pc": [ - 2797, - 2798 - ] - }, - { - "teal": 2845, - "source": 675, - "pc": [ - 2799, - 2800, - 2801 - ] - }, - { - "teal": 2846, - "source": 675, - "pc": [ - 2802 - ] - }, - { - "teal": 2847, - "source": 675, - "pc": [ - 2803, - 2804, - 2805 - ] - }, - { - "teal": 2859, - "source": 677, - "pc": [ - 2806, - 2807, - 2808, - 2809, - 2810, - 2811 - ] - }, - { - "teal": 2860, - "source": 678, - "pc": [ - 2812, - 2813 - ] - }, - { - "teal": 2861, - "source": 678, - "pc": [ - 2814, - 2815, - 2816 - ] - }, - { - "teal": 2862, - "source": 678, - "pc": [ - 2817 - ] - }, - { - "teal": 2863, - "source": 678, - "pc": [ - 2818 - ] - }, - { - "teal": 2864, - "source": 679, - "pc": [ - 2819, - 2820 - ] - }, - { - "teal": 2865, - "source": 679, - "pc": [ - 2821, - 2822, - 2823 - ] - }, - { - "teal": 2866, - "source": 679, - "pc": [ - 2824 - ] - }, - { - "teal": 2867, - "source": 679, - "pc": [ - 2825 - ] - }, - { - "teal": 2868, - "source": 679, - "pc": [ - 2826 - ] - }, - { - "teal": 2869, - "source": 679, - "pc": [ - 2827 - ] - }, - { - "teal": 2870, - "source": 679, - "pc": [ - 2828, - 2829 - ] - }, - { - "teal": 2871, - "source": 679, - "pc": [ - 2830 - ] - }, - { - "teal": 2874, - "source": 679, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", - "pc": [ - 2831 - ] - }, - { - "teal": 2875, - "source": 679, - "pc": [ - 2832, - 2833, - 2834 - ] - }, - { - "teal": 2876, - "source": 679, - "pc": [ - 2835 - ] - }, - { - "teal": 2877, - "source": 680, - "pc": [ - 2836, - 2837 - ] - }, - { - "teal": 2878, - "source": 680, - "pc": [ - 2838, - 2839, - 2840 - ] - }, - { - "teal": 2879, - "source": 680, - "pc": [ - 2841 - ] - }, - { - "teal": 2880, - "source": 680, - "pc": [ - 2842 - ] - }, - { - "teal": 2881, - "source": 680, - "pc": [ - 2843 - ] - }, - { - "teal": 2882, - "source": 684, - "pc": [ - 2844, - 2845 - ] - }, - { - "teal": 2883, - "source": 684, - "pc": [ - 2846 - ] - }, - { - "teal": 2884, - "source": 684, - "pc": [ - 2847 - ] - }, - { - "teal": 2885, - "source": 683, - "pc": [ - 2848, - 2849 - ] - }, - { - "teal": 2886, - "source": 683, - "pc": [ - 2850 - ] - }, - { - "teal": 2887, - "source": 683, - "pc": [ - 2851 - ] - }, - { - "teal": 2888, - "source": 681, - "pc": [ - 2852, - 2853 - ] - }, - { - "teal": 2889, - "source": 681, - "pc": [ - 2854 - ] - }, - { - "teal": 2890, - "source": 681, - "pc": [ - 2855 - ] - }, - { - "teal": 2891, - "source": 682, - "pc": [ - 2856, - 2857 - ] - }, - { - "teal": 2892, - "source": 682, - "pc": [ - 2858 - ] - }, - { - "teal": 2893, - "source": 682, - "pc": [ - 2859 - ] - }, - { - "teal": 2894, - "source": 677, - "pc": [ - 2860 - ] - }, - { - "teal": 2895, - "source": 677, - "pc": [ - 2861 - ] - }, - { - "teal": 2896, - "source": 658, - "pc": [ - 2862 - ] - }, - { - "teal": 2901, - "source": 705, - "pc": [ - 2863, - 2864, - 2865 - ] - }, - { - "teal": 2902, - "source": 705, - "pc": [ - 2866 - ] - }, - { - "teal": 2903, - "source": 705, - "pc": [ - 2867 - ] - }, - { - "teal": 2904, - "source": 705, - "pc": [ - 2868 - ] - }, - { - "teal": 2905, - "source": 705, - "pc": [ - 2869 - ] - }, - { - "teal": 2908, - "source": 705, - "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", - "pc": [ - 2870 - ] - }, - { - "teal": 2909, - "source": 705, - "pc": [ - 2871 - ] - }, - { - "teal": 2910, - "source": 705, - "pc": [ - 2872 - ] - }, - { - "teal": 2913, - "source": 704, - "pc": [ - 2873, - 2874, - 2875 - ] - }, - { - "teal": 2914, - "source": 704, - "pc": [ - 2876 - ] - }, - { - "teal": 2917, - "source": 703, - "pc": [ - 2877, - 2878, - 2879 - ] - }, - { - "teal": 2918, - "source": 703, - "pc": [ - 2880 - ] - }, - { - "teal": 2921, - "source": 702, - "pc": [ - 2881, - 2882, - 2883 - ] - }, - { - "teal": 2922, - "source": 702, - "pc": [ - 2884 - ] - }, - { - "teal": 2923, - "source": 702, - "pc": [ - 2885 - ] - }, - { - "teal": 2924, - "source": 702, - "pc": [ - 2886, - 2887 - ] - }, - { - "teal": 2925, - "source": 702, - "pc": [ - 2888 - ] - }, - { - "teal": 2928, - "source": 702, - "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", - "pc": [ - 2889 - ] - }, - { - "teal": 2931, - "source": 701, - "pc": [ - 2890, - 2891, - 2892 - ] - }, - { - "teal": 2932, - "source": 701, - "pc": [ - 2893 - ] - }, - { - "teal": 2933, - "source": 701, - "pc": [ - 2894 - ] - }, - { - "teal": 2934, - "source": 701, - "pc": [ - 2895 - ] - }, - { - "teal": 2935, - "source": 701, - "pc": [ - 2896 - ] - }, - { - "teal": 2938, - "source": 701, - "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", - "pc": [ - 2897 - ] - }, - { - "teal": 2941, - "source": 700, - "pc": [ - 2898, - 2899, - 2900 - ] - }, - { - "teal": 2942, - "source": 700, - "pc": [ - 2901 - ] - }, - { - "teal": 2943, - "source": 700, - "pc": [ - 2902 - ] - }, - { - "teal": 2958, - "source": 700, - "pc": [ - 2903, - 2904, - 2905 - ] - }, - { - "teal": 2961, - "source": 700, - "pc": [ - 2906 - ] - }, - { - "teal": 2962, - "source": 700, - "pc": [ - 2907, - 2908 - ] - }, - { - "teal": 2967, - "source": 707, - "pc": [ - 2909, - 2910 - ] - }, - { - "teal": 2968, - "source": 707, - "pc": [ - 2911, - 2912 - ] - }, - { - "teal": 2969, - "source": 707, - "pc": [ - 2913 - ] - }, - { - "teal": 2970, - "source": 707, - "pc": [ - 2914, - 2915, - 2916 - ] - }, - { - "teal": 2975, - "source": 708, - "pc": [ - 2917 - ] - }, - { - "teal": 2976, - "source": 708, - "pc": [ - 2918, - 2919 - ] - }, - { - "teal": 2977, - "source": 708, - "pc": [ - 2920, - 2921 - ] - }, - { - "teal": 2978, - "source": 708, - "pc": [ - 2922 - ] - }, - { - "teal": 2979, - "source": 708, - "pc": [ - 2923, - 2924 - ] - }, - { - "teal": 2980, - "source": 708, - "pc": [ - 2925, - 2926 - ] - }, - { - "teal": 2981, - "source": 708, - "pc": [ - 2927 - ] - }, - { - "teal": 2982, - "source": 708, - "pc": [ - 2928, - 2929 - ] - }, - { - "teal": 2983, - "source": 708, - "pc": [ - 2930, - 2931 - ] - }, - { - "teal": 2984, - "source": 708, - "pc": [ - 2932, - 2933 - ] - }, - { - "teal": 2985, - "source": 708, - "pc": [ - 2934, - 2935 - ] - }, - { - "teal": 2986, - "source": 708, - "pc": [ - 2936 - ] - }, - { - "teal": 2991, - "source": 710, - "pc": [ - 2937, - 2938 - ] - }, - { - "teal": 2992, - "source": 710, - "pc": [ - 2939, - 2940, - 2941 - ] - }, - { - "teal": 2996, - "source": 714, - "pc": [ - 2942, - 2943 - ] - }, - { - "teal": 2997, - "source": 714, - "pc": [ - 2944 - ] - }, - { - "teal": 2998, - "source": 714, - "pc": [ - 2945 - ] - }, - { - "teal": 2999, - "source": 714, - "pc": [ - 2946 - ] - }, - { - "teal": 3000, - "source": 714, - "pc": [ - 2947, - 2948, - 2949 - ] - }, - { - "teal": 3001, - "source": 714, - "pc": [ - 2950, - 2951 - ] - }, - { - "teal": 3002, - "source": 714, - "pc": [ - 2952 - ] - }, - { - "teal": 3003, - "source": 714, - "pc": [ - 2953 - ] - }, - { - "teal": 3004, - "source": 714, - "pc": [ - 2954 - ] - }, - { - "teal": 3008, - "source": 714, - "errorMessage": "should only be called if algo or reward was removed", - "pc": [ - 2955 - ] - }, - { - "teal": 3012, - "source": 717, - "pc": [ - 2956, - 2957 - ] - }, - { - "teal": 3013, - "source": 717, - "pc": [ - 2958, - 2959 - ] - }, - { - "teal": 3014, - "source": 717, - "pc": [ - 2960, - 2961, - 2962 - ] - }, - { - "teal": 3015, - "source": 717, - "pc": [ - 2963 - ] - }, - { - "teal": 3016, - "source": 717, - "pc": [ - 2964 - ] - }, - { - "teal": 3017, - "source": 717, - "pc": [ - 2965 - ] - }, - { - "teal": 3018, - "source": 717, - "pc": [ - 2966, - 2967 - ] - }, - { - "teal": 3019, - "source": 717, - "pc": [ - 2968 - ] - }, - { - "teal": 3020, - "source": 717, - "pc": [ - 2969 - ] - }, - { - "teal": 3021, - "source": 717, - "pc": [ - 2970, - 2971 - ] - }, - { - "teal": 3022, - "source": 717, - "pc": [ - 2972 - ] - }, - { - "teal": 3023, - "source": 717, - "pc": [ - 2973, - 2974 - ] - }, - { - "teal": 3024, - "source": 717, - "pc": [ - 2975, - 2976 - ] - }, - { - "teal": 3025, - "source": 717, - "pc": [ - 2977, - 2978, - 2979 - ] - }, - { - "teal": 3026, - "source": 717, - "pc": [ - 2980 - ] - }, - { - "teal": 3027, - "source": 717, - "pc": [ - 2981 - ] - }, - { - "teal": 3028, - "source": 717, - "pc": [ - 2982 - ] - }, - { - "teal": 3029, - "source": 717, - "pc": [ - 2983, - 2984 - ] - }, - { - "teal": 3030, - "source": 717, - "pc": [ - 2985 - ] - }, - { - "teal": 3031, - "source": 717, - "pc": [ - 2986 - ] - }, - { - "teal": 3032, - "source": 717, - "pc": [ - 2987, - 2988 - ] - }, - { - "teal": 3033, - "source": 717, - "pc": [ - 2989 - ] - }, - { - "teal": 3034, - "source": 717, - "pc": [ - 2990 - ] - }, - { - "teal": 3035, - "source": 717, - "pc": [ - 2991 - ] - }, - { - "teal": 3036, - "source": 717, - "pc": [ - 2992, - 2993 - ] - }, - { - "teal": 3037, - "source": 717, - "pc": [ - 2994, - 2995, - 2996 - ] - }, - { - "teal": 3038, - "source": 717, - "pc": [ - 2997 - ] - }, - { - "teal": 3039, - "source": 717, - "pc": [ - 2998 - ] - }, - { - "teal": 3040, - "source": 717, - "pc": [ - 2999 - ] - }, - { - "teal": 3041, - "source": 717, - "pc": [ - 3000, - 3001 - ] - }, - { - "teal": 3042, - "source": 717, - "pc": [ - 3002 - ] - }, - { - "teal": 3043, - "source": 717, - "pc": [ - 3003 - ] - }, - { - "teal": 3044, - "source": 717, - "pc": [ - 3004, - 3005 - ] - }, - { - "teal": 3045, - "source": 717, - "pc": [ - 3006 - ] - }, - { - "teal": 3046, - "source": 717, - "pc": [ - 3007 - ] - }, - { - "teal": 3047, - "source": 717, - "pc": [ - 3008 - ] - }, - { - "teal": 3048, - "source": 717, - "pc": [ - 3009, - 3010 - ] - }, - { - "teal": 3049, - "source": 717, - "pc": [ - 3011, - 3012, - 3013 - ] - }, - { - "teal": 3050, - "source": 717, - "pc": [ - 3014 - ] - }, - { - "teal": 3051, - "source": 717, - "pc": [ - 3015 - ] - }, - { - "teal": 3052, - "source": 717, - "pc": [ - 3016 - ] - }, - { - "teal": 3053, - "source": 717, - "pc": [ - 3017, - 3018 - ] - }, - { - "teal": 3054, - "source": 717, - "pc": [ - 3019 - ] - }, - { - "teal": 3058, - "source": 718, - "pc": [ - 3020, - 3021 - ] - }, - { - "teal": 3059, - "source": 718, - "pc": [ - 3022 - ] - }, - { - "teal": 3060, - "source": 718, - "pc": [ - 3023 - ] - }, - { - "teal": 3061, - "source": 718, - "pc": [ - 3024 - ] - }, - { - "teal": 3062, - "source": 718, - "pc": [ - 3025, - 3026 - ] - }, - { - "teal": 3063, - "source": 718, - "pc": [ - 3027, - 3028, - 3029 - ] - }, - { - "teal": 3064, - "source": 718, - "pc": [ - 3030 - ] - }, - { - "teal": 3065, - "source": 718, - "pc": [ - 3031 - ] - }, - { - "teal": 3066, - "source": 718, - "pc": [ - 3032 - ] - }, - { - "teal": 3067, - "source": 718, - "pc": [ - 3033, - 3034 - ] - }, - { - "teal": 3068, - "source": 718, - "pc": [ - 3035 - ] - }, - { - "teal": 3069, - "source": 718, - "pc": [ - 3036 - ] - }, - { - "teal": 3070, - "source": 718, - "pc": [ - 3037, - 3038 - ] - }, - { - "teal": 3071, - "source": 718, - "pc": [ - 3039 - ] - }, - { - "teal": 3072, - "source": 718, - "pc": [ - 3040 - ] - }, - { - "teal": 3073, - "source": 718, - "pc": [ - 3041 - ] - }, - { - "teal": 3074, - "source": 718, - "pc": [ - 3042, - 3043 - ] - }, - { - "teal": 3075, - "source": 718, - "pc": [ - 3044, - 3045, - 3046 - ] - }, - { - "teal": 3076, - "source": 718, - "pc": [ - 3047 - ] - }, - { - "teal": 3077, - "source": 718, - "pc": [ - 3048 - ] - }, - { - "teal": 3078, - "source": 718, - "pc": [ - 3049 - ] - }, - { - "teal": 3079, - "source": 718, - "pc": [ - 3050, - 3051 - ] - }, - { - "teal": 3080, - "source": 718, - "pc": [ - 3052 - ] - }, - { - "teal": 3084, - "source": 719, - "pc": [ - 3053, - 3054 - ] - }, - { - "teal": 3085, - "source": 719, - "pc": [ - 3055 - ] - }, - { - "teal": 3086, - "source": 719, - "pc": [ - 3056, - 3057 - ] - }, - { - "teal": 3087, - "source": 719, - "pc": [ - 3058 - ] - }, - { - "teal": 3088, - "source": 719, - "pc": [ - 3059, - 3060 - ] - }, - { - "teal": 3089, - "source": 719, - "pc": [ - 3061 - ] - }, - { - "teal": 3090, - "source": 719, - "pc": [ - 3062 - ] - }, - { - "teal": 3095, - "source": 721, - "pc": [ - 3063, - 3064 - ] - }, - { - "teal": 3096, - "source": 721, - "pc": [ - 3065 - ] - }, - { - "teal": 3097, - "source": 721, - "pc": [ - 3066 - ] - }, - { - "teal": 3098, - "source": 721, - "pc": [ - 3067, - 3068, - 3069 - ] - }, - { - "teal": 3103, - "source": 722, - "pc": [ - 3070, - 3071 - ] - }, - { - "teal": 3104, - "source": 722, - "pc": [ - 3072 - ] - }, - { - "teal": 3105, - "source": 722, - "pc": [ - 3073 - ] - }, - { - "teal": 3106, - "source": 722, - "pc": [ - 3074, - 3075 - ] - }, - { - "teal": 3107, - "source": 722, - "pc": [ - 3076, - 3077, - 3078 - ] - }, - { - "teal": 3108, - "source": 722, - "pc": [ - 3079 - ] - }, - { - "teal": 3109, - "source": 722, - "pc": [ - 3080 - ] - }, - { - "teal": 3110, - "source": 722, - "pc": [ - 3081 - ] - }, - { - "teal": 3111, - "source": 722, - "pc": [ - 3082, - 3083 - ] - }, - { - "teal": 3112, - "source": 722, - "pc": [ - 3084 - ] - }, - { - "teal": 3113, - "source": 722, - "pc": [ - 3085 - ] - }, - { - "teal": 3114, - "source": 722, - "pc": [ - 3086, - 3087 - ] - }, - { - "teal": 3118, - "source": 723, - "pc": [ - 3088, - 3089 - ] - }, - { - "teal": 3119, - "source": 723, - "pc": [ - 3090 - ] - }, - { - "teal": 3120, - "source": 723, - "pc": [ - 3091 - ] - }, - { - "teal": 3123, - "source": 723, - "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", - "pc": [ - 3092 - ] - }, - { - "teal": 3130, - "source": 725, - "pc": [ - 3093, - 3094 - ] - }, - { - "teal": 3131, - "source": 725, - "pc": [ - 3095 - ] - }, - { - "teal": 3132, - "source": 725, - "pc": [ - 3096 - ] - }, - { - "teal": 3133, - "source": 725, - "pc": [ - 3097, - 3098 - ] - }, - { - "teal": 3134, - "source": 725, - "pc": [ - 3099, - 3100, - 3101 - ] - }, - { - "teal": 3135, - "source": 725, - "pc": [ - 3102 - ] - }, - { - "teal": 3136, - "source": 725, - "pc": [ - 3103 - ] - }, - { - "teal": 3137, - "source": 725, - "pc": [ - 3104 - ] - }, - { - "teal": 3138, - "source": 725, - "pc": [ - 3105, - 3106 - ] - }, - { - "teal": 3139, - "source": 725, - "pc": [ - 3107 - ] - }, - { - "teal": 3140, - "source": 725, - "pc": [ - 3108 - ] - }, - { - "teal": 3141, - "source": 725, - "pc": [ - 3109, - 3110 - ] - }, - { - "teal": 3142, - "source": 725, - "pc": [ - 3111 - ] - }, - { - "teal": 3145, - "source": 724, - "errorMessage": "reward being removed must be covered by hold back amount", - "pc": [ - 3112 - ] - }, - { - "teal": 3149, - "source": 730, - "pc": [ - 3113, - 3114 - ] - }, - { - "teal": 3150, - "source": 730, - "pc": [ - 3115 - ] - }, - { - "teal": 3151, - "source": 730, - "pc": [ - 3116 - ] - }, - { - "teal": 3152, - "source": 730, - "pc": [ - 3117 - ] - }, - { - "teal": 3153, - "source": 730, - "pc": [ - 3118, - 3119 - ] - }, - { - "teal": 3154, - "source": 730, - "pc": [ - 3120, - 3121, - 3122 - ] - }, - { - "teal": 3155, - "source": 730, - "pc": [ - 3123 - ] - }, - { - "teal": 3156, - "source": 730, - "pc": [ - 3124 - ] - }, - { - "teal": 3157, - "source": 730, - "pc": [ - 3125 - ] - }, - { - "teal": 3158, - "source": 730, - "pc": [ - 3126, - 3127 - ] - }, - { - "teal": 3159, - "source": 730, - "pc": [ - 3128 - ] - }, - { - "teal": 3160, - "source": 730, - "pc": [ - 3129 - ] - }, - { - "teal": 3161, - "source": 730, - "pc": [ - 3130, - 3131 - ] - }, - { - "teal": 3162, - "source": 730, - "pc": [ - 3132 - ] - }, - { - "teal": 3163, - "source": 730, - "pc": [ - 3133 - ] - }, - { - "teal": 3164, - "source": 730, - "pc": [ - 3134 - ] - }, - { - "teal": 3165, - "source": 730, - "pc": [ - 3135, - 3136 - ] - }, - { - "teal": 3166, - "source": 730, - "pc": [ - 3137, - 3138, - 3139 - ] - }, - { - "teal": 3167, - "source": 730, - "pc": [ - 3140 - ] - }, - { - "teal": 3168, - "source": 730, - "pc": [ - 3141 - ] - }, - { - "teal": 3169, - "source": 730, - "pc": [ - 3142 - ] - }, - { - "teal": 3170, - "source": 730, - "pc": [ - 3143, - 3144 - ] - }, - { - "teal": 3171, - "source": 730, - "pc": [ - 3145 - ] - }, - { - "teal": 3176, - "source": 735, - "pc": [ - 3146, - 3147 - ] - }, - { - "teal": 3177, - "source": 735, - "pc": [ - 3148, - 3149, - 3150 - ] - }, - { - "teal": 3178, - "source": 735, - "pc": [ - 3151 - ] - }, - { - "teal": 3179, - "source": 735, - "pc": [ - 3152 - ] - }, - { - "teal": 3180, - "source": 735, - "pc": [ - 3153 - ] - }, - { - "teal": 3181, - "source": 735, - "pc": [ - 3154, - 3155, - 3156 - ] - }, - { - "teal": 3189, - "source": 736, - "pc": [ - 3157 - ] - }, - { - "teal": 3190, - "source": 736, - "pc": [ - 3158, - 3159 - ] - }, - { - "teal": 3191, - "source": 736, - "pc": [ - 3160, - 3161 - ] - }, - { - "teal": 3192, - "source": 736, - "pc": [ - 3162, - 3163 - ] - }, - { - "teal": 3193, - "source": 736, - "pc": [ - 3164, - 3165 - ] - }, - { - "teal": 3197, - "source": 737, - "pc": [ - 3166, - 3167 - ] - }, - { - "teal": 3198, - "source": 737, - "pc": [ - 3168 - ] - }, - { - "teal": 3199, - "source": 737, - "pc": [ - 3169 - ] - }, - { - "teal": 3200, - "source": 737, - "pc": [ - 3170, - 3171 - ] - }, - { - "teal": 3201, - "source": 737, - "pc": [ - 3172, - 3173, - 3174 - ] - }, - { - "teal": 3202, - "source": 737, - "pc": [ - 3175 - ] - }, - { - "teal": 3203, - "source": 737, - "pc": [ - 3176 - ] - }, - { - "teal": 3204, - "source": 737, - "pc": [ - 3177 - ] - }, - { - "teal": 3205, - "source": 737, - "pc": [ - 3178, - 3179 - ] - }, - { - "teal": 3206, - "source": 737, - "pc": [ - 3180 - ] - }, - { - "teal": 3207, - "source": 737, - "pc": [ - 3181 - ] - }, - { - "teal": 3208, - "source": 737, - "pc": [ - 3182, - 3183 - ] - }, - { - "teal": 3212, - "source": 738, - "pc": [ - 3184, - 3185 - ] - }, - { - "teal": 3213, - "source": 738, - "pc": [ - 3186, - 3187 - ] - }, - { - "teal": 3214, - "source": 738, - "pc": [ - 3188, - 3189 - ] - }, - { - "teal": 3215, - "source": 738, - "pc": [ - 3190 - ] - }, - { - "teal": 3216, - "source": 738, - "pc": [ - 3191, - 3192 - ] - }, - { - "teal": 3217, - "source": 738, - "pc": [ - 3193, - 3194 - ] - }, - { - "teal": 3218, - "source": 738, - "pc": [ - 3195 - ] - }, - { - "teal": 3219, - "source": 738, - "pc": [ - 3196, - 3197 - ] - }, - { - "teal": 3222, - "source": 736, - "pc": [ - 3198 - ] - }, - { - "teal": 3223, - "source": 736, - "pc": [ - 3199, - 3200 - ] - }, - { - "teal": 3226, - "source": 736, - "pc": [ - 3201 - ] - }, - { - "teal": 3239, - "source": 741, - "pc": [ - 3202, - 3203 - ] - }, - { - "teal": 3240, - "source": 742, - "pc": [ - 3204, - 3205 - ] - }, - { - "teal": 3241, - "source": 742, - "pc": [ - 3206, - 3207, - 3208 - ] - }, - { - "teal": 3242, - "source": 742, - "pc": [ - 3209 - ] - }, - { - "teal": 3243, - "source": 742, - "pc": [ - 3210 - ] - }, - { - "teal": 3244, - "source": 743, - "pc": [ - 3211, - 3212 - ] - }, - { - "teal": 3245, - "source": 743, - "pc": [ - 3213, - 3214, - 3215 - ] - }, - { - "teal": 3246, - "source": 743, - "pc": [ - 3216 - ] - }, - { - "teal": 3247, - "source": 743, - "pc": [ - 3217 - ] - }, - { - "teal": 3248, - "source": 743, - "pc": [ - 3218 - ] - }, - { - "teal": 3249, - "source": 743, - "pc": [ - 3219 - ] - }, - { - "teal": 3250, - "source": 743, - "pc": [ - 3220, - 3221 - ] - }, - { - "teal": 3251, - "source": 743, - "pc": [ - 3222 - ] - }, - { - "teal": 3254, - "source": 743, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", - "pc": [ - 3223 - ] - }, - { - "teal": 3255, - "source": 743, - "pc": [ - 3224, - 3225, - 3226 - ] - }, - { - "teal": 3256, - "source": 743, - "pc": [ - 3227 - ] - }, - { - "teal": 3257, - "source": 744, - "pc": [ - 3228, - 3229 - ] - }, - { - "teal": 3258, - "source": 744, - "pc": [ - 3230, - 3231, - 3232 - ] - }, - { - "teal": 3259, - "source": 744, - "pc": [ - 3233 - ] - }, - { - "teal": 3260, - "source": 744, - "pc": [ - 3234 - ] - }, - { - "teal": 3261, - "source": 744, - "pc": [ - 3235 - ] - }, - { - "teal": 3262, - "source": 745, - "pc": [ - 3236, - 3237 - ] - }, - { - "teal": 3263, - "source": 745, - "pc": [ - 3238 - ] - }, - { - "teal": 3264, - "source": 746, - "pc": [ - 3239, - 3240 - ] - }, - { - "teal": 3265, - "source": 746, - "pc": [ - 3241 - ] - }, - { - "teal": 3266, - "source": 746, - "pc": [ - 3242 - ] - }, - { - "teal": 3267, - "source": 748, - "pc": [ - 3243, - 3244 - ] - }, - { - "teal": 3268, - "source": 748, - "pc": [ - 3245 - ] - }, - { - "teal": 3269, - "source": 748, - "pc": [ - 3246 - ] - }, - { - "teal": 3270, - "source": 747, - "pc": [ - 3247, - 3248 - ] - }, - { - "teal": 3271, - "source": 747, - "pc": [ - 3249 - ] - }, - { - "teal": 3272, - "source": 747, - "pc": [ - 3250 - ] - }, - { - "teal": 3273, - "source": 741, - "pc": [ - 3251 - ] - }, - { - "teal": 3274, - "source": 741, - "pc": [ - 3252 - ] - }, - { - "teal": 3275, - "source": 721, - "pc": [ - 3253, - 3254, - 3255 - ] - }, - { - "teal": 3289, - "source": 751, - "pc": [ - 3256, - 3257 - ] - }, - { - "teal": 3290, - "source": 752, - "pc": [ - 3258, - 3259 - ] - }, - { - "teal": 3291, - "source": 752, - "pc": [ - 3260, - 3261, - 3262 - ] - }, - { - "teal": 3292, - "source": 752, - "pc": [ - 3263 - ] - }, - { - "teal": 3293, - "source": 752, - "pc": [ - 3264 - ] - }, - { - "teal": 3294, - "source": 753, - "pc": [ - 3265, - 3266 - ] - }, - { - "teal": 3295, - "source": 753, - "pc": [ - 3267, - 3268, - 3269 - ] - }, - { - "teal": 3296, - "source": 753, - "pc": [ - 3270 - ] - }, - { - "teal": 3297, - "source": 753, - "pc": [ - 3271 - ] - }, - { - "teal": 3298, - "source": 753, - "pc": [ - 3272 - ] - }, - { - "teal": 3299, - "source": 753, - "pc": [ - 3273 - ] - }, - { - "teal": 3300, - "source": 753, - "pc": [ - 3274, - 3275 - ] - }, - { - "teal": 3301, - "source": 753, - "pc": [ - 3276 - ] - }, - { - "teal": 3304, - "source": 753, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", - "pc": [ - 3277 - ] - }, - { - "teal": 3305, - "source": 753, - "pc": [ - 3278, - 3279, - 3280 - ] - }, - { - "teal": 3306, - "source": 753, - "pc": [ - 3281 - ] - }, - { - "teal": 3307, - "source": 754, - "pc": [ - 3282, - 3283 - ] - }, - { - "teal": 3308, - "source": 754, - "pc": [ - 3284, - 3285, - 3286 - ] - }, - { - "teal": 3309, - "source": 754, - "pc": [ - 3287 - ] - }, - { - "teal": 3310, - "source": 754, - "pc": [ - 3288 - ] - }, - { - "teal": 3311, - "source": 754, - "pc": [ - 3289 - ] - }, - { - "teal": 3312, - "source": 755, - "pc": [ - 3290, - 3291 - ] - }, - { - "teal": 3313, - "source": 755, - "pc": [ - 3292 - ] - }, - { - "teal": 3314, - "source": 756, - "pc": [ - 3293, - 3294 - ] - }, - { - "teal": 3315, - "source": 756, - "pc": [ - 3295 - ] - }, - { - "teal": 3316, - "source": 756, - "pc": [ - 3296 - ] - }, - { - "teal": 3317, - "source": 759, - "pc": [ - 3297, - 3298 - ] - }, - { - "teal": 3318, - "source": 759, - "pc": [ - 3299 - ] - }, - { - "teal": 3319, - "source": 758, - "pc": [ - 3300, - 3301 - ] - }, - { - "teal": 3320, - "source": 758, - "pc": [ - 3302 - ] - }, - { - "teal": 3321, - "source": 751, - "pc": [ - 3303 - ] - }, - { - "teal": 3322, - "source": 751, - "pc": [ - 3304 - ] - }, - { - "teal": 3328, - "source": 763, - "pc": [ - 3305, - 3306 - ] - }, - { - "teal": 3329, - "source": 763, - "pc": [ - 3307, - 3308, - 3309 - ] - }, - { - "teal": 3334, - "source": 765, - "pc": [ - 3310, - 3311 - ] - }, - { - "teal": 3335, - "source": 765, - "pc": [ - 3312, - 3313 - ] - }, - { - "teal": 3336, - "source": 765, - "pc": [ - 3314, - 3315, - 3316 - ] - }, - { - "teal": 3337, - "source": 765, - "pc": [ - 3317 - ] - }, - { - "teal": 3338, - "source": 765, - "pc": [ - 3318 - ] - }, - { - "teal": 3339, - "source": 765, - "pc": [ - 3319 - ] - }, - { - "teal": 3340, - "source": 765, - "pc": [ - 3320, - 3321 - ] - }, - { - "teal": 3341, - "source": 765, - "pc": [ - 3322 - ] - }, - { - "teal": 3342, - "source": 765, - "pc": [ - 3323 - ] - }, - { - "teal": 3343, - "source": 765, - "pc": [ - 3324 - ] - }, - { - "teal": 3344, - "source": 765, - "pc": [ - 3325 - ] - }, - { - "teal": 3345, - "source": 765, - "pc": [ - 3326, - 3327 - ] - }, - { - "teal": 3346, - "source": 765, - "pc": [ - 3328, - 3329 - ] - }, - { - "teal": 3347, - "source": 765, - "pc": [ - 3330, - 3331, - 3332 - ] - }, - { - "teal": 3348, - "source": 765, - "pc": [ - 3333 - ] - }, - { - "teal": 3349, - "source": 765, - "pc": [ - 3334 - ] - }, - { - "teal": 3350, - "source": 765, - "pc": [ - 3335 - ] - }, - { - "teal": 3351, - "source": 765, - "pc": [ - 3336, - 3337 - ] - }, - { - "teal": 3352, - "source": 765, - "pc": [ - 3338 - ] - }, - { - "teal": 3353, - "source": 765, - "pc": [ - 3339 - ] - }, - { - "teal": 3354, - "source": 765, - "pc": [ - 3340 - ] - }, - { - "teal": 3355, - "source": 765, - "pc": [ - 3341 - ] - }, - { - "teal": 3356, - "source": 765, - "pc": [ - 3342, - 3343 - ] - }, - { - "teal": 3357, - "source": 765, - "pc": [ - 3344 - ] - }, - { - "teal": 3358, - "source": 765, - "pc": [ - 3345, - 3346 - ] - }, - { - "teal": 3359, - "source": 765, - "pc": [ - 3347, - 3348, - 3349 - ] - }, - { - "teal": 3360, - "source": 765, - "pc": [ - 3350 - ] - }, - { - "teal": 3361, - "source": 765, - "pc": [ - 3351 - ] - }, - { - "teal": 3362, - "source": 765, - "pc": [ - 3352 - ] - }, - { - "teal": 3363, - "source": 765, - "pc": [ - 3353, - 3354 - ] - }, - { - "teal": 3364, - "source": 765, - "pc": [ - 3355 - ] - }, - { - "teal": 3365, - "source": 765, - "pc": [ - 3356 - ] - }, - { - "teal": 3366, - "source": 765, - "pc": [ - 3357 - ] - }, - { - "teal": 3367, - "source": 765, - "pc": [ - 3358 - ] - }, - { - "teal": 3368, - "source": 765, - "pc": [ - 3359 - ] - }, - { - "teal": 3369, - "source": 765, - "pc": [ - 3360, - 3361, - 3362 - ] - }, - { - "teal": 3370, - "source": 765, - "pc": [ - 3363 - ] - }, - { - "teal": 3371, - "source": 765, - "pc": [ - 3364, - 3365 - ] - }, - { - "teal": 3372, - "source": 765, - "pc": [ - 3366, - 3367, - 3368 - ] - }, - { - "teal": 3373, - "source": 765, - "pc": [ - 3369 - ] - }, - { - "teal": 3374, - "source": 765, - "pc": [ - 3370 - ] - }, - { - "teal": 3375, - "source": 765, - "pc": [ - 3371 - ] - }, - { - "teal": 3376, - "source": 765, - "pc": [ - 3372, - 3373 - ] - }, - { - "teal": 3377, - "source": 765, - "pc": [ - 3374 - ] - }, - { - "teal": 3385, - "source": 768, - "pc": [ - 3375, - 3376 - ] - }, - { - "teal": 3386, - "source": 768, - "pc": [ - 3377, - 3378, - 3379 - ] - }, - { - "teal": 3387, - "source": 768, - "pc": [ - 3380 - ] - }, - { - "teal": 3388, - "source": 768, - "pc": [ - 3381 - ] - }, - { - "teal": 3389, - "source": 769, - "pc": [ - 3382, - 3383 - ] - }, - { - "teal": 3390, - "source": 769, - "pc": [ - 3384, - 3385, - 3386 - ] - }, - { - "teal": 3391, - "source": 769, - "pc": [ - 3387 - ] - }, - { - "teal": 3392, - "source": 769, - "pc": [ - 3388 - ] - }, - { - "teal": 3393, - "source": 769, - "pc": [ - 3389 - ] - }, - { - "teal": 3394, - "source": 770, - "pc": [ - 3390, - 3391 - ] - }, - { - "teal": 3395, - "source": 770, - "pc": [ - 3392, - 3393, - 3394 - ] - }, - { - "teal": 3396, - "source": 770, - "pc": [ - 3395 - ] - }, - { - "teal": 3397, - "source": 770, - "pc": [ - 3396 - ] - }, - { - "teal": 3398, - "source": 770, - "pc": [ - 3397 - ] - }, - { - "teal": 3399, - "source": 767, - "pc": [ - 3398, - 3399 - ] - }, - { - "teal": 3400, - "source": 767, - "pc": [ - 3400, - 3401, - 3402 - ] - }, - { - "teal": 3401, - "source": 767, - "pc": [ - 3403, - 3404 - ] - }, - { - "teal": 3405, - "source": 772, - "pc": [ - 3405, - 3406 - ] - }, - { - "teal": 3406, - "source": 772, - "pc": [ - 3407, - 3408 - ] - }, - { - "teal": 3407, - "source": 772, - "pc": [ - 3409, - 3410 - ] - }, - { - "teal": 3408, - "source": 772, - "pc": [ - 3411 - ] - }, - { - "teal": 3409, - "source": 772, - "pc": [ - 3412 - ] - }, - { - "teal": 3410, - "source": 772, - "pc": [ - 3413, - 3414 - ] - }, - { - "teal": 3414, - "source": 773, - "pc": [ - 3415, - 3416 - ] - }, - { - "teal": 3415, - "source": 773, - "pc": [ - 3417, - 3418 - ] - }, - { - "teal": 3416, - "source": 773, - "pc": [ - 3419, - 3420 - ] - }, - { - "teal": 3417, - "source": 773, - "pc": [ - 3421 - ] - }, - { - "teal": 3418, - "source": 773, - "pc": [ - 3422 - ] - }, - { - "teal": 3419, - "source": 773, - "pc": [ - 3423, - 3424 - ] - }, - { - "teal": 3424, - "source": 775, - "pc": [ - 3425, - 3426 - ] - }, - { - "teal": 3425, - "source": 775, - "pc": [ - 3427, - 3428, - 3429 - ] - }, - { - "teal": 3430, - "source": 776, - "pc": [ - 3430, - 3431 - ] - }, - { - "teal": 3431, - "source": 776, - "pc": [ - 3432 - ] - }, - { - "teal": 3432, - "source": 776, - "pc": [ - 3433 - ] - }, - { - "teal": 3433, - "source": 776, - "pc": [ - 3434 - ] - }, - { - "teal": 3434, - "source": 776, - "pc": [ - 3435, - 3436 - ] - }, - { - "teal": 3435, - "source": 776, - "pc": [ - 3437, - 3438, - 3439 - ] - }, - { - "teal": 3436, - "source": 776, - "pc": [ - 3440 - ] - }, - { - "teal": 3437, - "source": 776, - "pc": [ - 3441 - ] - }, - { - "teal": 3438, - "source": 776, - "pc": [ - 3442 - ] - }, - { - "teal": 3439, - "source": 776, - "pc": [ - 3443, - 3444 - ] - }, - { - "teal": 3440, - "source": 776, - "pc": [ - 3445 - ] - }, - { - "teal": 3441, - "source": 776, - "pc": [ - 3446 - ] - }, - { - "teal": 3442, - "source": 776, - "pc": [ - 3447 - ] - }, - { - "teal": 3443, - "source": 776, - "pc": [ - 3448 - ] - }, - { - "teal": 3444, - "source": 776, - "pc": [ - 3449 - ] - }, - { - "teal": 3445, - "source": 776, - "pc": [ - 3450 - ] - }, - { - "teal": 3446, - "source": 776, - "pc": [ - 3451, - 3452 - ] - }, - { - "teal": 3447, - "source": 776, - "pc": [ - 3453, - 3454, - 3455 - ] - }, - { - "teal": 3448, - "source": 776, - "pc": [ - 3456 - ] - }, - { - "teal": 3449, - "source": 776, - "pc": [ - 3457 - ] - }, - { - "teal": 3450, - "source": 776, - "pc": [ - 3458 - ] - }, - { - "teal": 3451, - "source": 776, - "pc": [ - 3459, - 3460 - ] - }, - { - "teal": 3452, - "source": 776, - "pc": [ - 3461 - ] - }, - { - "teal": 3458, - "source": 779, - "pc": [ - 3462, - 3463 - ] - }, - { - "teal": 3459, - "source": 779, - "pc": [ - 3464, - 3465, - 3466 - ] - }, - { - "teal": 3464, - "source": 780, - "pc": [ - 3467, - 3468 - ] - }, - { - "teal": 3465, - "source": 780, - "pc": [ - 3469 - ] - }, - { - "teal": 3466, - "source": 780, - "pc": [ - 3470 - ] - }, - { - "teal": 3467, - "source": 780, - "pc": [ - 3471 - ] - }, - { - "teal": 3468, - "source": 780, - "pc": [ - 3472, - 3473 - ] - }, - { - "teal": 3469, - "source": 780, - "pc": [ - 3474 - ] - }, - { - "teal": 3470, - "source": 780, - "pc": [ - 3475 - ] - }, - { - "teal": 3475, - "source": 700, - "pc": [ - 3476 - ] - }, - { - "teal": 3480, - "source": 796, - "pc": [ - 3477 - ] - }, - { - "teal": 3483, - "source": 800, - "pc": [ - 3478, - 3479, - 3480 - ] - }, - { - "teal": 3484, - "source": 800, - "pc": [ - 3481 - ] - }, - { - "teal": 3487, - "source": 799, - "pc": [ - 3482, - 3483, - 3484 - ] - }, - { - "teal": 3488, - "source": 799, - "pc": [ - 3485 - ] - }, - { - "teal": 3489, - "source": 799, - "pc": [ - 3486 - ] - }, - { - "teal": 3490, - "source": 799, - "pc": [ - 3487, - 3488 - ] - }, - { - "teal": 3491, - "source": 799, - "pc": [ - 3489 - ] - }, - { - "teal": 3494, - "source": 799, - "errorMessage": "argument 1 (staker) for findPoolForStaker must be a address", - "pc": [ - 3490 - ] - }, - { - "teal": 3497, - "source": 798, - "pc": [ - 3491, - 3492, - 3493 - ] - }, - { - "teal": 3498, - "source": 798, - "pc": [ - 3494 - ] - }, - { - "teal": 3501, - "source": 796, - "pc": [ - 3495, - 3496, - 3497 - ] - }, - { - "teal": 3502, - "source": 796, - "pc": [ - 3498 - ] - }, - { - "teal": 3503, - "source": 796, - "pc": [ - 3499 - ] - }, - { - "teal": 3504, - "source": 796, - "pc": [ - 3500 - ] - }, - { - "teal": 3505, - "source": 796, - "pc": [ - 3501 - ] - }, - { - "teal": 3519, - "source": 796, - "pc": [ - 3502, - 3503, - 3504 - ] - }, - { - "teal": 3522, - "source": 796, - "pc": [ - 3505 - ] - }, - { - "teal": 3523, - "source": 796, - "pc": [ - 3506, - 3507 - ] - }, - { - "teal": 3527, - "source": 802, - "pc": [ - 3508 - ] - }, - { - "teal": 3528, - "source": 802, - "pc": [ - 3509, - 3510 - ] - }, - { - "teal": 3532, - "source": 803, - "pc": [ - 3511 - ] - }, - { - "teal": 3533, - "source": 803, - "pc": [ - 3512, - 3513 - ] - }, - { - "teal": 3537, - "source": 811, - "pc": [ - 3514, - 3515 - ] - }, - { - "teal": 3538, - "source": 811, - "pc": [ - 3516, - 3517, - 3518 - ] - }, - { - "teal": 3539, - "source": 811, - "pc": [ - 3519, - 3520 - ] - }, - { - "teal": 3544, - "source": 814, - "pc": [ - 3521 - ] - }, - { - "teal": 3545, - "source": 814, - "pc": [ - 3522, - 3523 - ] - }, - { - "teal": 3546, - "source": 814, - "pc": [ - 3524 - ] - }, - { - "teal": 3547, - "source": 814, - "pc": [ - 3525 - ] - }, - { - "teal": 3548, - "source": 814, - "pc": [ - 3526 - ] - }, - { - "teal": 3549, - "source": 814, - "pc": [ - 3527 - ] - }, - { - "teal": 3550, - "source": 814, - "pc": [ - 3528, - 3529, - 3530 - ] - }, - { - "teal": 3555, - "source": 815, - "pc": [ - 3531 - ] - }, - { - "teal": 3556, - "source": 815, - "pc": [ - 3532, - 3533 - ] - }, - { - "teal": 3557, - "source": 815, - "pc": [ - 3534 - ] - }, - { - "teal": 3558, - "source": 815, - "pc": [ - 3535 - ] - }, - { - "teal": 3561, - "source": 815, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", - "pc": [ - 3536 - ] - }, - { - "teal": 3562, - "source": 815, - "pc": [ - 3537, - 3538 - ] - }, - { - "teal": 3566, - "source": 816, - "pc": [ - 3539, - 3540 - ] - }, - { - "teal": 3567, - "source": 816, - "pc": [ - 3541 - ] - }, - { - "teal": 3568, - "source": 816, - "pc": [ - 3542 - ] - }, - { - "teal": 3569, - "source": 816, - "pc": [ - 3543 - ] - }, - { - "teal": 3573, - "source": 817, - "pc": [ - 3544 - ] - }, - { - "teal": 3574, - "source": 817, - "pc": [ - 3545, - 3546 - ] - }, - { - "teal": 3579, - "source": 817, - "pc": [ - 3547, - 3548 - ] - }, - { - "teal": 3580, - "source": 817, - "pc": [ - 3549, - 3550 - ] - }, - { - "teal": 3581, - "source": 817, - "pc": [ - 3551 - ] - }, - { - "teal": 3582, - "source": 817, - "pc": [ - 3552, - 3553, - 3554 - ] - }, - { - "teal": 3587, - "source": 818, - "pc": [ - 3555, - 3556 - ] - }, - { - "teal": 3588, - "source": 818, - "pc": [ - 3557, - 3558 - ] - }, - { - "teal": 3589, - "source": 818, - "pc": [ - 3559 - ] - }, - { - "teal": 3590, - "source": 818, - "pc": [ - 3560, - 3561, - 3562 - ] - }, - { - "teal": 3595, - "source": 819, - "pc": [ - 3563 - ] - }, - { - "teal": 3596, - "source": 819, - "pc": [ - 3564, - 3565 - ] - }, - { - "teal": 3597, - "source": 819, - "pc": [ - 3566, - 3567 - ] - }, - { - "teal": 3598, - "source": 819, - "pc": [ - 3568 - ] - }, - { - "teal": 3599, - "source": 819, - "pc": [ - 3569, - 3570 - ] - }, - { - "teal": 3600, - "source": 819, - "pc": [ - 3571, - 3572 - ] - }, - { - "teal": 3601, - "source": 819, - "pc": [ - 3573 - ] - }, - { - "teal": 3602, - "source": 819, - "pc": [ - 3574, - 3575 - ] - }, - { - "teal": 3603, - "source": 819, - "pc": [ - 3576, - 3577 - ] - }, - { - "teal": 3604, - "source": 819, - "pc": [ - 3578, - 3579 - ] - }, - { - "teal": 3605, - "source": 819, - "pc": [ - 3580, - 3581 - ] - }, - { - "teal": 3606, - "source": 819, - "pc": [ - 3582 - ] - }, - { - "teal": 3612, - "source": 821, - "pc": [ - 3583, - 3584 - ] - }, - { - "teal": 3613, - "source": 821, - "pc": [ - 3585, - 3586 - ] - }, - { - "teal": 3614, - "source": 821, - "pc": [ - 3587 - ] - }, - { - "teal": 3615, - "source": 821, - "pc": [ - 3588 - ] - }, - { - "teal": 3616, - "source": 821, - "pc": [ - 3589 - ] - }, - { - "teal": 3617, - "source": 821, - "pc": [ - 3590 - ] - }, - { - "teal": 3618, - "source": 821, - "pc": [ - 3591 - ] - }, - { - "teal": 3619, - "source": 821, - "pc": [ - 3592 - ] - }, - { - "teal": 3620, - "source": 821, - "pc": [ - 3593 - ] - }, - { - "teal": 3621, - "source": 821, - "pc": [ - 3594 - ] - }, - { - "teal": 3622, - "source": 821, - "pc": [ - 3595 - ] - }, - { - "teal": 3623, - "source": 821, - "pc": [ - 3596, - 3597, - 3598 - ] - }, - { - "teal": 3626, - "source": 822, - "pc": [ - 3599, - 3600, - 3601 - ] - }, - { - "teal": 3631, - "source": 824, - "pc": [ - 3602 - ] - }, - { - "teal": 3632, - "source": 824, - "pc": [ - 3603, - 3604 - ] - }, - { - "teal": 3637, - "source": 825, - "pc": [ - 3605, - 3606 - ] - }, - { - "teal": 3638, - "source": 825, - "pc": [ - 3607, - 3608 - ] - }, - { - "teal": 3639, - "source": 825, - "pc": [ - 3609 - ] - }, - { - "teal": 3640, - "source": 825, - "pc": [ - 3610 - ] - }, - { - "teal": 3641, - "source": 825, - "pc": [ - 3611 - ] - }, - { - "teal": 3642, - "source": 825, - "pc": [ - 3612 - ] - }, - { - "teal": 3643, - "source": 825, - "pc": [ - 3613 - ] - }, - { - "teal": 3644, - "source": 825, - "pc": [ - 3614 - ] - }, - { - "teal": 3645, - "source": 825, - "pc": [ - 3615 - ] - }, - { - "teal": 3646, - "source": 825, - "pc": [ - 3616, - 3617 - ] - }, - { - "teal": 3647, - "source": 825, - "pc": [ - 3618 - ] - }, - { - "teal": 3648, - "source": 825, - "pc": [ - 3619, - 3620, - 3621 - ] - }, - { - "teal": 3653, - "source": 827, - "pc": [ - 3622 - ] - }, - { - "teal": 3654, - "source": 827, - "pc": [ - 3623, - 3624 - ] - }, - { - "teal": 3661, - "source": 829, - "pc": [ - 3625, - 3626 - ] - }, - { - "teal": 3662, - "source": 829, - "pc": [ - 3627, - 3628 - ] - }, - { - "teal": 3663, - "source": 829, - "pc": [ - 3629, - 3630 - ] - }, - { - "teal": 3664, - "source": 829, - "pc": [ - 3631 - ] - }, - { - "teal": 3665, - "source": 829, - "pc": [ - 3632 - ] - }, - { - "teal": 3666, - "source": 829, - "pc": [ - 3633 - ] - }, - { - "teal": 3667, - "source": 829, - "pc": [ - 3634 - ] - }, - { - "teal": 3668, - "source": 829, - "pc": [ - 3635 - ] - }, - { - "teal": 3669, - "source": 829, - "pc": [ - 3636 - ] - }, - { - "teal": 3670, - "source": 829, - "pc": [ - 3637 - ] - }, - { - "teal": 3671, - "source": 829, - "pc": [ - 3638 - ] - }, - { - "teal": 3672, - "source": 829, - "pc": [ - 3639 - ] - }, - { - "teal": 3673, - "source": 829, - "pc": [ - 3640, - 3641 - ] - }, - { - "teal": 3674, - "source": 829, - "pc": [ - 3642 - ] - }, - { - "teal": 3675, - "source": 829, - "pc": [ - 3643 - ] - }, - { - "teal": 3676, - "source": 829, - "pc": [ - 3644, - 3645 - ] - }, - { - "teal": 3677, - "source": 829, - "pc": [ - 3646 - ] - }, - { - "teal": 3678, - "source": 829, - "pc": [ - 3647 - ] - }, - { - "teal": 3679, - "source": 829, - "pc": [ - 3648 - ] - }, - { - "teal": 3680, - "source": 829, - "pc": [ - 3649, - 3650 - ] - }, - { - "teal": 3681, - "source": 829, - "pc": [ - 3651 - ] - }, - { - "teal": 3682, - "source": 829, - "pc": [ - 3652 - ] - }, - { - "teal": 3683, - "source": 829, - "pc": [ - 3653, - 3654 - ] - }, - { - "teal": 3684, - "source": 829, - "pc": [ - 3655 - ] - }, - { - "teal": 3685, - "source": 829, - "pc": [ - 3656 - ] - }, - { - "teal": 3686, - "source": 830, - "pc": [ - 3657, - 3658 - ] - }, - { - "teal": 3687, - "source": 829, - "pc": [ - 3659 - ] - }, - { - "teal": 3688, - "source": 831, - "pc": [ - 3660, - 3661 - ] - }, - { - "teal": 3689, - "source": 830, - "pc": [ - 3662 - ] - }, - { - "teal": 3690, - "source": 828, - "pc": [ - 3663, - 3664, - 3665 - ] - }, - { - "teal": 3695, - "source": 833, - "pc": [ - 3666, - 3667 - ] - }, - { - "teal": 3696, - "source": 833, - "pc": [ - 3668, - 3669 - ] - }, - { - "teal": 3697, - "source": 833, - "pc": [ - 3670 - ] - }, - { - "teal": 3698, - "source": 833, - "pc": [ - 3671 - ] - }, - { - "teal": 3699, - "source": 833, - "pc": [ - 3672 - ] - }, - { - "teal": 3700, - "source": 833, - "pc": [ - 3673 - ] - }, - { - "teal": 3701, - "source": 833, - "pc": [ - 3674, - 3675 - ] - }, - { - "teal": 3702, - "source": 833, - "pc": [ - 3676 - ] - }, - { - "teal": 3703, - "source": 833, - "pc": [ - 3677, - 3678 - ] - }, - { - "teal": 3704, - "source": 833, - "pc": [ - 3679 - ] - }, - { - "teal": 3705, - "source": 833, - "pc": [ - 3680 - ] - }, - { - "teal": 3706, - "source": 833, - "pc": [ - 3681, - 3682 - ] - }, - { - "teal": 3707, - "source": 833, - "pc": [ - 3683 - ] - }, - { - "teal": 3708, - "source": 833, - "pc": [ - 3684 - ] - }, - { - "teal": 3709, - "source": 833, - "pc": [ - 3685, - 3686, - 3687 - ] - }, - { - "teal": 3718, - "source": 817, - "pc": [ - 3688, - 3689 - ] - }, - { - "teal": 3719, - "source": 817, - "pc": [ - 3690 - ] - }, - { - "teal": 3720, - "source": 817, - "pc": [ - 3691 - ] - }, - { - "teal": 3721, - "source": 817, - "pc": [ - 3692, - 3693 - ] - }, - { - "teal": 3722, - "source": 817, - "pc": [ - 3694, - 3695, - 3696 - ] - }, - { - "teal": 3732, - "source": 841, - "pc": [ - 3697, - 3698 - ] - }, - { - "teal": 3733, - "source": 841, - "pc": [ - 3699, - 3700 - ] - }, - { - "teal": 3734, - "source": 841, - "pc": [ - 3701 - ] - }, - { - "teal": 3735, - "source": 841, - "pc": [ - 3702 - ] - }, - { - "teal": 3736, - "source": 841, - "pc": [ - 3703, - 3704 - ] - }, - { - "teal": 3737, - "source": 841, - "pc": [ - 3705 - ] - }, - { - "teal": 3738, - "source": 841, - "pc": [ - 3706 - ] - }, - { - "teal": 3739, - "source": 841, - "pc": [ - 3707, - 3708 - ] - }, - { - "teal": 3740, - "source": 841, - "pc": [ - 3709 - ] - }, - { - "teal": 3741, - "source": 841, - "pc": [ - 3710 - ] - }, - { - "teal": 3742, - "source": 841, - "pc": [ - 3711 - ] - }, - { - "teal": 3745, - "source": 840, - "errorMessage": "must stake at least the minimum for this pool", - "pc": [ - 3712 - ] - }, - { - "teal": 3749, - "source": 846, - "pc": [ - 3713, - 3714 - ] - }, - { - "teal": 3750, - "source": 846, - "pc": [ - 3715, - 3716 - ] - }, - { - "teal": 3751, - "source": 846, - "pc": [ - 3717 - ] - }, - { - "teal": 3752, - "source": 846, - "pc": [ - 3718, - 3719 - ] - }, - { - "teal": 3753, - "source": 846, - "pc": [ - 3720 - ] - }, - { - "teal": 3754, - "source": 846, - "pc": [ - 3721 - ] - }, - { - "teal": 3755, - "source": 846, - "pc": [ - 3722, - 3723 - ] - }, - { - "teal": 3756, - "source": 846, - "pc": [ - 3724 - ] - }, - { - "teal": 3757, - "source": 846, - "pc": [ - 3725, - 3726 - ] - }, - { - "teal": 3761, - "source": 847, - "pc": [ - 3727, - 3728 - ] - }, - { - "teal": 3762, - "source": 847, - "pc": [ - 3729, - 3730 - ] - }, - { - "teal": 3763, - "source": 847, - "pc": [ - 3731 - ] - }, - { - "teal": 3764, - "source": 847, - "pc": [ - 3732, - 3733 - ] - }, - { - "teal": 3765, - "source": 847, - "pc": [ - 3734 - ] - }, - { - "teal": 3766, - "source": 847, - "pc": [ - 3735 - ] - }, - { - "teal": 3767, - "source": 847, - "pc": [ - 3736, - 3737 - ] - }, - { - "teal": 3768, - "source": 847, - "pc": [ - 3738 - ] - }, - { - "teal": 3769, - "source": 847, - "pc": [ - 3739 - ] - }, - { - "teal": 3770, - "source": 847, - "pc": [ - 3740, - 3741 - ] - }, - { - "teal": 3774, - "source": 848, - "pc": [ - 3742 - ] - }, - { - "teal": 3775, - "source": 848, - "pc": [ - 3743, - 3744 - ] - }, - { - "teal": 3780, - "source": 848, - "pc": [ - 3745, - 3746 - ] - }, - { - "teal": 3781, - "source": 848, - "pc": [ - 3747, - 3748 - ] - }, - { - "teal": 3782, - "source": 848, - "pc": [ - 3749 - ] - }, - { - "teal": 3783, - "source": 848, - "pc": [ - 3750, - 3751, - 3752 - ] - }, - { - "teal": 3788, - "source": 849, - "pc": [ - 3753, - 3754 - ] - }, - { - "teal": 3789, - "source": 849, - "pc": [ - 3755, - 3756 - ] - }, - { - "teal": 3790, - "source": 849, - "pc": [ - 3757, - 3758 - ] - }, - { - "teal": 3791, - "source": 849, - "pc": [ - 3759 - ] - }, - { - "teal": 3792, - "source": 849, - "pc": [ - 3760, - 3761 - ] - }, - { - "teal": 3793, - "source": 849, - "pc": [ - 3762 - ] - }, - { - "teal": 3794, - "source": 849, - "pc": [ - 3763 - ] - }, - { - "teal": 3795, - "source": 849, - "pc": [ - 3764 - ] - }, - { - "teal": 3796, - "source": 849, - "pc": [ - 3765 - ] - }, - { - "teal": 3797, - "source": 849, - "pc": [ - 3766, - 3767 - ] - }, - { - "teal": 3798, - "source": 849, - "pc": [ - 3768 - ] - }, - { - "teal": 3799, - "source": 849, - "pc": [ - 3769, - 3770 - ] - }, - { - "teal": 3800, - "source": 849, - "pc": [ - 3771 - ] - }, - { - "teal": 3801, - "source": 849, - "pc": [ - 3772, - 3773, - 3774 - ] - }, - { - "teal": 3810, - "source": 851, - "pc": [ - 3775, - 3776 - ] - }, - { - "teal": 3811, - "source": 851, - "pc": [ - 3777 - ] - }, - { - "teal": 3812, - "source": 851, - "pc": [ - 3778, - 3779 - ] - }, - { - "teal": 3813, - "source": 851, - "pc": [ - 3780 - ] - }, - { - "teal": 3814, - "source": 851, - "pc": [ - 3781 - ] - }, - { - "teal": 3815, - "source": 851, - "pc": [ - 3782 - ] - }, - { - "teal": 3816, - "source": 851, - "pc": [ - 3783 - ] - }, - { - "teal": 3817, - "source": 851, - "pc": [ - 3784, - 3785 - ] - }, - { - "teal": 3818, - "source": 851, - "pc": [ - 3786, - 3787 - ] - }, - { - "teal": 3819, - "source": 851, - "pc": [ - 3788, - 3789 - ] - }, - { - "teal": 3820, - "source": 851, - "pc": [ - 3790 - ] - }, - { - "teal": 3821, - "source": 851, - "pc": [ - 3791 - ] - }, - { - "teal": 3822, - "source": 851, - "pc": [ - 3792 - ] - }, - { - "teal": 3823, - "source": 851, - "pc": [ - 3793 - ] - }, - { - "teal": 3824, - "source": 851, - "pc": [ - 3794 - ] - }, - { - "teal": 3825, - "source": 851, - "pc": [ - 3795 - ] - }, - { - "teal": 3826, - "source": 851, - "pc": [ - 3796 - ] - }, - { - "teal": 3827, - "source": 851, - "pc": [ - 3797 - ] - }, - { - "teal": 3828, - "source": 852, - "pc": [ - 3798, - 3799 - ] - }, - { - "teal": 3829, - "source": 852, - "pc": [ - 3800 - ] - }, - { - "teal": 3830, - "source": 852, - "pc": [ - 3801, - 3802 - ] - }, - { - "teal": 3831, - "source": 852, - "pc": [ - 3803 - ] - }, - { - "teal": 3832, - "source": 853, - "pc": [ - 3804 - ] - }, - { - "teal": 3833, - "source": 853, - "pc": [ - 3805, - 3806 - ] - }, - { - "teal": 3834, - "source": 853, - "pc": [ - 3807 - ] - }, - { - "teal": 3835, - "source": 850, - "pc": [ - 3808 - ] - }, - { - "teal": 3836, - "source": 850, - "pc": [ - 3809, - 3810, - 3811 - ] - }, - { - "teal": 3843, - "source": 848, - "pc": [ - 3812, - 3813 - ] - }, - { - "teal": 3844, - "source": 848, - "pc": [ - 3814 - ] - }, - { - "teal": 3845, - "source": 848, - "pc": [ - 3815 - ] - }, - { - "teal": 3846, - "source": 848, - "pc": [ - 3816, - 3817 - ] - }, - { - "teal": 3847, - "source": 848, - "pc": [ - 3818, - 3819, - 3820 - ] - }, - { - "teal": 3852, - "source": 858, - "pc": [ - 3821, - 3822 - ] - }, - { - "teal": 3853, - "source": 858, - "pc": [ - 3823 - ] - }, - { - "teal": 3854, - "source": 858, - "pc": [ - 3824, - 3825 - ] - }, - { - "teal": 3855, - "source": 858, - "pc": [ - 3826 - ] - }, - { - "teal": 3856, - "source": 858, - "pc": [ - 3827, - 3828 - ] - }, - { - "teal": 3857, - "source": 858, - "pc": [ - 3829 - ] - }, - { - "teal": 3858, - "source": 858, - "pc": [ - 3830, - 3831 - ] - }, - { - "teal": 3859, - "source": 858, - "pc": [ - 3832 - ] - }, - { - "teal": 3860, - "source": 858, - "pc": [ - 3833, - 3834 - ] - }, - { - "teal": 3861, - "source": 858, - "pc": [ - 3835 - ] - }, - { - "teal": 3862, - "source": 858, - "pc": [ - 3836 - ] - }, - { - "teal": 3863, - "source": 858, - "pc": [ - 3837, - 3838 - ] - }, - { - "teal": 3864, - "source": 858, - "pc": [ - 3839 - ] - }, - { - "teal": 3865, - "source": 858, - "pc": [ - 3840 - ] - }, - { - "teal": 3869, - "source": 796, - "pc": [ - 3841, - 3842 - ] - }, - { - "teal": 3872, - "source": 796, - "pc": [ - 3843, - 3844 - ] - }, - { - "teal": 3873, - "source": 796, - "pc": [ - 3845 - ] - }, - { - "teal": 3878, - "source": 872, - "pc": [ - 3846, - 3847, - 3848 - ] - }, - { - "teal": 3879, - "source": 872, - "pc": [ - 3849 - ] - }, - { - "teal": 3882, - "source": 872, - "pc": [ - 3850, - 3851, - 3852 - ] - }, - { - "teal": 3883, - "source": 872, - "pc": [ - 3853 - ] - }, - { - "teal": 3886, - "source": 872, - "pc": [ - 3854, - 3855, - 3856 - ] - }, - { - "teal": 3887, - "source": 872, - "pc": [ - 3857 - ] - }, - { - "teal": 3890, - "source": 872, - "pc": [ - 3858, - 3859, - 3860 - ] - }, - { - "teal": 3891, - "source": 872, - "pc": [ - 3861 - ] - }, - { - "teal": 3892, - "source": 872, - "pc": [ - 3862 - ] - }, - { - "teal": 3906, - "source": 872, - "pc": [ - 3863, - 3864, - 3865 - ] - }, - { - "teal": 3909, - "source": 872, - "pc": [ - 3866 - ] - }, - { - "teal": 3910, - "source": 872, - "pc": [ - 3867, - 3868 - ] - }, - { - "teal": 3914, - "source": 873, - "pc": [ - 3869, - 3870 - ] - }, - { - "teal": 3915, - "source": 873, - "pc": [ - 3871, - 3872, - 3873 - ] - }, - { - "teal": 3919, - "source": 875, - "pc": [ - 3874, - 3875 - ] - }, - { - "teal": 3920, - "source": 875, - "pc": [ - 3876, - 3877 - ] - }, - { - "teal": 3921, - "source": 875, - "pc": [ - 3878 - ] - }, - { - "teal": 3922, - "source": 875, - "pc": [ - 3879, - 3880 - ] - }, - { - "teal": 3923, - "source": 875, - "pc": [ - 3881 - ] - }, - { - "teal": 3924, - "source": 875, - "pc": [ - 3882 - ] - }, - { - "teal": 3925, - "source": 875, - "pc": [ - 3883, - 3884 - ] - }, - { - "teal": 3926, - "source": 875, - "pc": [ - 3885 - ] - }, - { - "teal": 3927, - "source": 875, - "pc": [ - 3886, - 3887 - ] - }, - { - "teal": 3931, - "source": 876, - "pc": [ - 3888, - 3889 - ] - }, - { - "teal": 3932, - "source": 876, - "pc": [ - 3890 - ] - }, - { - "teal": 3933, - "source": 876, - "pc": [ - 3891 - ] - }, - { - "teal": 3934, - "source": 876, - "pc": [ - 3892 - ] - }, - { - "teal": 3935, - "source": 876, - "pc": [ - 3893, - 3894, - 3895 - ] - }, - { - "teal": 3936, - "source": 876, - "pc": [ - 3896, - 3897 - ] - }, - { - "teal": 3937, - "source": 876, - "pc": [ - 3898 - ] - }, - { - "teal": 3938, - "source": 876, - "pc": [ - 3899 - ] - }, - { - "teal": 3939, - "source": 876, - "pc": [ - 3900 - ] - }, - { - "teal": 3943, - "source": 876, - "errorMessage": "node number out of allowable range", - "pc": [ - 3901 - ] - }, - { - "teal": 3947, - "source": 878, - "pc": [ - 3902 - ] - }, - { - "teal": 3948, - "source": 878, - "pc": [ - 3903, - 3904 - ] - }, - { - "teal": 3953, - "source": 878, - "pc": [ - 3905, - 3906 - ] - }, - { - "teal": 3954, - "source": 878, - "pc": [ - 3907 - ] - }, - { - "teal": 3955, - "source": 878, - "pc": [ - 3908 - ] - }, - { - "teal": 3956, - "source": 878, - "pc": [ - 3909, - 3910, - 3911 - ] - }, - { - "teal": 3960, - "source": 879, - "pc": [ - 3912 - ] - }, - { - "teal": 3961, - "source": 879, - "pc": [ - 3913, - 3914 - ] - }, - { - "teal": 3966, - "source": 879, - "pc": [ - 3915, - 3916 - ] - }, - { - "teal": 3967, - "source": 879, - "pc": [ - 3917, - 3918 - ] - }, - { - "teal": 3968, - "source": 879, - "pc": [ - 3919 - ] - }, - { - "teal": 3969, - "source": 879, - "pc": [ - 3920, - 3921, - 3922 - ] - }, - { - "teal": 3974, - "source": 880, - "pc": [ - 3923, - 3924 - ] - }, - { - "teal": 3975, - "source": 880, - "pc": [ - 3925 - ] - }, - { - "teal": 3976, - "source": 880, - "pc": [ - 3926, - 3927 - ] - }, - { - "teal": 3977, - "source": 880, - "pc": [ - 3928 - ] - }, - { - "teal": 3978, - "source": 880, - "pc": [ - 3929 - ] - }, - { - "teal": 3979, - "source": 880, - "pc": [ - 3930 - ] - }, - { - "teal": 3980, - "source": 880, - "pc": [ - 3931 - ] - }, - { - "teal": 3981, - "source": 880, - "pc": [ - 3932 - ] - }, - { - "teal": 3982, - "source": 880, - "pc": [ - 3933, - 3934 - ] - }, - { - "teal": 3983, - "source": 880, - "pc": [ - 3935 - ] - }, - { - "teal": 3984, - "source": 880, - "pc": [ - 3936 - ] - }, - { - "teal": 3985, - "source": 880, - "pc": [ - 3937 - ] - }, - { - "teal": 3986, - "source": 880, - "pc": [ - 3938 - ] - }, - { - "teal": 3987, - "source": 880, - "pc": [ - 3939 - ] - }, - { - "teal": 3988, - "source": 880, - "pc": [ - 3940 - ] - }, - { - "teal": 3989, - "source": 880, - "pc": [ - 3941, - 3942 - ] - }, - { - "teal": 3990, - "source": 880, - "pc": [ - 3943 - ] - }, - { - "teal": 3991, - "source": 880, - "pc": [ - 3944, - 3945, - 3946 - ] - }, - { - "teal": 3996, - "source": 881, - "pc": [ - 3947, - 3948 - ] - }, - { - "teal": 3997, - "source": 881, - "pc": [ - 3949 - ] - }, - { - "teal": 3998, - "source": 881, - "pc": [ - 3950 - ] - }, - { - "teal": 3999, - "source": 881, - "pc": [ - 3951, - 3952 - ] - }, - { - "teal": 4000, - "source": 881, - "pc": [ - 3953 - ] - }, - { - "teal": 4003, - "source": 881, - "errorMessage": "can't move to same node", - "pc": [ - 3954 - ] - }, - { - "teal": 4007, - "source": 883, - "pc": [ - 3955, - 3956 - ] - }, - { - "teal": 4008, - "source": 883, - "pc": [ - 3957, - 3958 - ] - }, - { - "teal": 4009, - "source": 883, - "pc": [ - 3959 - ] - }, - { - "teal": 4010, - "source": 883, - "pc": [ - 3960 - ] - }, - { - "teal": 4011, - "source": 883, - "pc": [ - 3961 - ] - }, - { - "teal": 4012, - "source": 883, - "pc": [ - 3962 - ] - }, - { - "teal": 4013, - "source": 883, - "pc": [ - 3963 - ] - }, - { - "teal": 4014, - "source": 883, - "pc": [ - 3964, - 3965 - ] - }, - { - "teal": 4015, - "source": 883, - "pc": [ - 3966 - ] - }, - { - "teal": 4016, - "source": 883, - "pc": [ - 3967 - ] - }, - { - "teal": 4017, - "source": 883, - "pc": [ - 3968 - ] - }, - { - "teal": 4018, - "source": 883, - "pc": [ - 3969, - 3970 - ] - }, - { - "teal": 4019, - "source": 883, - "pc": [ - 3971 - ] - }, - { - "teal": 4020, - "source": 883, - "pc": [ - 3972, - 3973 - ] - }, - { - "teal": 4021, - "source": 883, - "pc": [ - 3974 - ] - }, - { - "teal": 4022, - "source": 883, - "pc": [ - 3975 - ] - }, - { - "teal": 4023, - "source": 883, - "pc": [ - 3976, - 3977 - ] - }, - { - "teal": 4024, - "source": 883, - "pc": [ - 3978 - ] - }, - { - "teal": 4030, - "source": 886, - "pc": [ - 3979 - ] - }, - { - "teal": 4031, - "source": 886, - "pc": [ - 3980, - 3981 - ] - }, - { - "teal": 4032, - "source": 886, - "pc": [ - 3982, - 3983 - ] - }, - { - "teal": 4033, - "source": 886, - "pc": [ - 3984, - 3985, - 3986, - 3987, - 3988, - 3989 - ] - }, - { - "teal": 4034, - "source": 886, - "pc": [ - 3990, - 3991 - ] - }, - { - "teal": 4038, - "source": 887, - "pc": [ - 3992, - 3993 - ] - }, - { - "teal": 4039, - "source": 887, - "pc": [ - 3994, - 3995 - ] - }, - { - "teal": 4042, - "source": 886, - "pc": [ - 3996 - ] - }, - { - "teal": 4043, - "source": 886, - "pc": [ - 3997, - 3998 - ] - }, - { - "teal": 4046, - "source": 886, - "pc": [ - 3999 - ] - }, - { - "teal": 4050, - "source": 891, - "pc": [ - 4000, - 4001 - ] - }, - { - "teal": 4051, - "source": 891, - "pc": [ - 4002, - 4003 - ] - }, - { - "teal": 4052, - "source": 891, - "pc": [ - 4004, - 4005 - ] - }, - { - "teal": 4053, - "source": 891, - "pc": [ - 4006, - 4007, - 4008 - ] - }, - { - "teal": 4057, - "source": 892, - "pc": [ - 4009 - ] - }, - { - "teal": 4064, - "source": 879, - "pc": [ - 4010, - 4011 - ] - }, - { - "teal": 4065, - "source": 879, - "pc": [ - 4012 - ] - }, - { - "teal": 4066, - "source": 879, - "pc": [ - 4013 - ] - }, - { - "teal": 4067, - "source": 879, - "pc": [ - 4014, - 4015 - ] - }, - { - "teal": 4068, - "source": 879, - "pc": [ - 4016, - 4017, - 4018 - ] - }, - { - "teal": 4075, - "source": 878, - "pc": [ - 4019, - 4020 - ] - }, - { - "teal": 4076, - "source": 878, - "pc": [ - 4021 - ] - }, - { - "teal": 4077, - "source": 878, - "pc": [ - 4022 - ] - }, - { - "teal": 4078, - "source": 878, - "pc": [ - 4023, - 4024 - ] - }, - { - "teal": 4079, - "source": 878, - "pc": [ - 4025, - 4026, - 4027 - ] - }, - { - "teal": 4083, - "source": 896, - "errorMessage": "couldn't find pool app id in nodes to move", - "pc": [ - 4028 - ] - }, - { - "teal": 4084, - "source": 872, - "pc": [ - 4029 - ] - }, - { - "teal": 4089, - "source": 910, - "pc": [ - 4030 - ] - }, - { - "teal": 4092, - "source": 910, - "pc": [ - 4031, - 4032, - 4033 - ] - }, - { - "teal": 4093, - "source": 910, - "pc": [ - 4034 - ] - }, - { - "teal": 4094, - "source": 910, - "pc": [ - 4035 - ] - }, - { - "teal": 4095, - "source": 910, - "pc": [ - 4036, - 4037 - ] - }, - { - "teal": 4096, - "source": 910, - "pc": [ - 4038 - ] - }, - { - "teal": 4099, - "source": 910, - "errorMessage": "argument 0 (receiver) for emptyTokenRewards must be a address", - "pc": [ - 4039 - ] - }, - { - "teal": 4102, - "source": 910, - "pc": [ - 4040, - 4041, - 4042 - ] - }, - { - "teal": 4103, - "source": 910, - "pc": [ - 4043 - ] - }, - { - "teal": 4106, - "source": 910, - "pc": [ - 4044, - 4045, - 4046 - ] - }, - { - "teal": 4107, - "source": 910, - "pc": [ - 4047 - ] - }, - { - "teal": 4108, - "source": 910, - "pc": [ - 4048 - ] - }, - { - "teal": 4109, - "source": 910, - "pc": [ - 4049 - ] - }, - { - "teal": 4110, - "source": 910, - "pc": [ - 4050 - ] - }, - { - "teal": 4111, - "source": 910, - "pc": [ - 4051 - ] - }, - { - "teal": 4125, - "source": 910, - "pc": [ - 4052, - 4053, - 4054 - ] - }, - { - "teal": 4128, - "source": 910, - "pc": [ - 4055 - ] - }, - { - "teal": 4129, - "source": 910, - "pc": [ - 4056, - 4057 - ] - }, - { - "teal": 4133, - "source": 911, - "pc": [ - 4058, - 4059 - ] - }, - { - "teal": 4134, - "source": 911, - "pc": [ - 4060, - 4061, - 4062 - ] - }, - { - "teal": 4138, - "source": 912, - "pc": [ - 4063, - 4064 - ] - }, - { - "teal": 4139, - "source": 912, - "pc": [ - 4065 - ] - }, - { - "teal": 4140, - "source": 912, - "pc": [ - 4066 - ] - }, - { - "teal": 4141, - "source": 912, - "pc": [ - 4067, - 4068 - ] - }, - { - "teal": 4142, - "source": 912, - "pc": [ - 4069 - ] - }, - { - "teal": 4143, - "source": 912, - "pc": [ - 4070 - ] - }, - { - "teal": 4144, - "source": 912, - "pc": [ - 4071, - 4072 - ] - }, - { - "teal": 4145, - "source": 912, - "pc": [ - 4073 - ] - }, - { - "teal": 4146, - "source": 912, - "pc": [ - 4074 - ] - }, - { - "teal": 4147, - "source": 912, - "pc": [ - 4075, - 4076 - ] - }, - { - "teal": 4151, - "source": 913, - "pc": [ - 4077, - 4078 - ] - }, - { - "teal": 4152, - "source": 913, - "pc": [ - 4079 - ] - }, - { - "teal": 4153, - "source": 913, - "pc": [ - 4080 - ] - }, - { - "teal": 4154, - "source": 913, - "pc": [ - 4081, - 4082 - ] - }, - { - "teal": 4155, - "source": 913, - "pc": [ - 4083 - ] - }, - { - "teal": 4156, - "source": 913, - "pc": [ - 4084 - ] - }, - { - "teal": 4157, - "source": 913, - "pc": [ - 4085, - 4086 - ] - }, - { - "teal": 4158, - "source": 913, - "pc": [ - 4087 - ] - }, - { - "teal": 4159, - "source": 913, - "pc": [ - 4088 - ] - }, - { - "teal": 4160, - "source": 913, - "pc": [ - 4089, - 4090 - ] - }, - { - "teal": 4164, - "source": 914, - "pc": [ - 4091, - 4092 - ] - }, - { - "teal": 4165, - "source": 914, - "pc": [ - 4093 - ] - }, - { - "teal": 4166, - "source": 914, - "pc": [ - 4094 - ] - }, - { - "teal": 4169, - "source": 914, - "errorMessage": "this validator doesn't have a reward token defined", - "pc": [ - 4095 - ] - }, - { - "teal": 4173, - "source": 915, - "pc": [ - 4096, - 4097 - ] - }, - { - "teal": 4174, - "source": 915, - "pc": [ - 4098 - ] - }, - { - "teal": 4175, - "source": 915, - "pc": [ - 4099 - ] - }, - { - "teal": 4176, - "source": 915, - "pc": [ - 4100, - 4101 - ] - }, - { - "teal": 4177, - "source": 915, - "pc": [ - 4102 - ] - }, - { - "teal": 4178, - "source": 915, - "pc": [ - 4103 - ] - }, - { - "teal": 4179, - "source": 915, - "pc": [ - 4104, - 4105 - ] - }, - { - "teal": 4180, - "source": 915, - "pc": [ - 4106 - ] - }, - { - "teal": 4181, - "source": 915, - "pc": [ - 4107 - ] - }, - { - "teal": 4182, - "source": 915, - "pc": [ - 4108, - 4109 - ] - }, - { - "teal": 4187, - "source": 918, - "pc": [ - 4110, - 4111 - ] - }, - { - "teal": 4188, - "source": 918, - "pc": [ - 4112, - 4113 - ] - }, - { - "teal": 4189, - "source": 918, - "pc": [ - 4114 - ] - }, - { - "teal": 4190, - "source": 918, - "pc": [ - 4115, - 4116 - ] - }, - { - "teal": 4191, - "source": 918, - "pc": [ - 4117, - 4118 - ] - }, - { - "teal": 4192, - "source": 918, - "pc": [ - 4119 - ] - }, - { - "teal": 4193, - "source": 918, - "pc": [ - 4120, - 4121 - ] - }, - { - "teal": 4194, - "source": 918, - "pc": [ - 4122 - ] - }, - { - "teal": 4195, - "source": 917, - "pc": [ - 4123, - 4124 - ] - }, - { - "teal": 4202, - "source": 921, - "pc": [ - 4125 - ] - }, - { - "teal": 4203, - "source": 921, - "pc": [ - 4126, - 4127 - ] - }, - { - "teal": 4204, - "source": 921, - "pc": [ - 4128, - 4129 - ] - }, - { - "teal": 4205, - "source": 921, - "pc": [ - 4130, - 4131 - ] - }, - { - "teal": 4206, - "source": 921, - "pc": [ - 4132, - 4133 - ] - }, - { - "teal": 4210, - "source": 922, - "pc": [ - 4134, - 4135 - ] - }, - { - "teal": 4211, - "source": 922, - "pc": [ - 4136, - 4137 - ] - }, - { - "teal": 4215, - "source": 923, - "pc": [ - 4138, - 4139 - ] - }, - { - "teal": 4216, - "source": 923, - "pc": [ - 4140, - 4141 - ] - }, - { - "teal": 4217, - "source": 923, - "pc": [ - 4142, - 4143 - ] - }, - { - "teal": 4218, - "source": 923, - "pc": [ - 4144 - ] - }, - { - "teal": 4219, - "source": 923, - "pc": [ - 4145, - 4146 - ] - }, - { - "teal": 4220, - "source": 923, - "pc": [ - 4147, - 4148 - ] - }, - { - "teal": 4221, - "source": 923, - "pc": [ - 4149 - ] - }, - { - "teal": 4222, - "source": 923, - "pc": [ - 4150, - 4151 - ] - }, - { - "teal": 4225, - "source": 921, - "pc": [ - 4152 - ] - }, - { - "teal": 4226, - "source": 921, - "pc": [ - 4153, - 4154 - ] - }, - { - "teal": 4229, - "source": 921, - "pc": [ - 4155 - ] - }, - { - "teal": 4236, - "source": 926, - "pc": [ - 4156, - 4157 - ] - }, - { - "teal": 4237, - "source": 926, - "pc": [ - 4158, - 4159 - ] - }, - { - "teal": 4238, - "source": 926, - "pc": [ - 4160 - ] - }, - { - "teal": 4239, - "source": 926, - "pc": [ - 4161, - 4162 - ] - }, - { - "teal": 4240, - "source": 926, - "pc": [ - 4163, - 4164 - ] - }, - { - "teal": 4241, - "source": 926, - "pc": [ - 4165 - ] - }, - { - "teal": 4242, - "source": 926, - "pc": [ - 4166, - 4167 - ] - }, - { - "teal": 4243, - "source": 926, - "pc": [ - 4168 - ] - }, - { - "teal": 4246, - "source": 925, - "errorMessage": "balance of remaining reward tokens should match the held back amount", - "pc": [ - 4169 - ] - }, - { - "teal": 4250, - "source": 929, - "pc": [ - 4170, - 4171 - ] - }, - { - "teal": 4253, - "source": 910, - "pc": [ - 4172, - 4173 - ] - }, - { - "teal": 4256, - "source": 910, - "pc": [ - 4174, - 4175 - ] - }, - { - "teal": 4257, - "source": 910, - "pc": [ - 4176 - ] - }, - { - "teal": 4261, - "source": 1021, - "pc": [ - 4177, - 4178, - 4179 - ] - }, - { - "teal": 4268, - "source": 1023, - "pc": [ - 4180, - 4181 - ] - }, - { - "teal": 4269, - "source": 1023, - "pc": [ - 4182 - ] - }, - { - "teal": 4270, - "source": 1023, - "pc": [ - 4183, - 4184 - ] - }, - { - "teal": 4271, - "source": 1023, - "pc": [ - 4185 - ] - }, - { - "teal": 4272, - "source": 1023, - "pc": [ - 4186, - 4187 - ] - }, - { - "teal": 4273, - "source": 1023, - "pc": [ - 4188 - ] - }, - { - "teal": 4274, - "source": 1023, - "pc": [ - 4189 - ] - }, - { - "teal": 4275, - "source": 1023, - "pc": [ - 4190, - 4191 - ] - }, - { - "teal": 4276, - "source": 1023, - "pc": [ - 4192 - ] - }, - { - "teal": 4277, - "source": 1023, - "pc": [ - 4193 - ] - }, - { - "teal": 4280, - "source": 1022, - "errorMessage": "can only be called by validator owner", - "pc": [ - 4194 - ] - }, - { - "teal": 4281, - "source": 1021, - "pc": [ - 4195 - ] - }, - { - "teal": 4285, - "source": 1028, - "pc": [ - 4196, - 4197, - 4198 - ] - }, - { - "teal": 4293, - "source": 1030, - "pc": [ - 4199, - 4200 - ] - }, - { - "teal": 4294, - "source": 1030, - "pc": [ - 4201 - ] - }, - { - "teal": 4295, - "source": 1030, - "pc": [ - 4202, - 4203 - ] - }, - { - "teal": 4296, - "source": 1030, - "pc": [ - 4204 - ] - }, - { - "teal": 4297, - "source": 1030, - "pc": [ - 4205, - 4206 - ] - }, - { - "teal": 4298, - "source": 1030, - "pc": [ - 4207 - ] - }, - { - "teal": 4299, - "source": 1030, - "pc": [ - 4208 - ] - }, - { - "teal": 4300, - "source": 1030, - "pc": [ - 4209, - 4210 - ] - }, - { - "teal": 4301, - "source": 1030, - "pc": [ - 4211 - ] - }, - { - "teal": 4302, - "source": 1030, - "pc": [ - 4212 - ] - }, - { - "teal": 4303, - "source": 1030, - "pc": [ - 4213 - ] - }, - { - "teal": 4304, - "source": 1030, - "pc": [ - 4214, - 4215, - 4216 - ] - }, - { - "teal": 4305, - "source": 1031, - "pc": [ - 4217, - 4218 - ] - }, - { - "teal": 4306, - "source": 1031, - "pc": [ - 4219, - 4220 - ] - }, - { - "teal": 4307, - "source": 1031, - "pc": [ - 4221, - 4222 - ] - }, - { - "teal": 4308, - "source": 1031, - "pc": [ - 4223 - ] - }, - { - "teal": 4309, - "source": 1031, - "pc": [ - 4224, - 4225 - ] - }, - { - "teal": 4310, - "source": 1031, - "pc": [ - 4226 - ] - }, - { - "teal": 4311, - "source": 1031, - "pc": [ - 4227 - ] - }, - { - "teal": 4312, - "source": 1031, - "pc": [ - 4228, - 4229 - ] - }, - { - "teal": 4313, - "source": 1031, - "pc": [ - 4230 - ] - }, - { - "teal": 4314, - "source": 1031, - "pc": [ - 4231 - ] - }, - { - "teal": 4315, - "source": 1030, - "pc": [ - 4232 - ] - }, - { - "teal": 4319, - "source": 1029, - "errorMessage": "can only be called by owner or manager of validator", - "pc": [ - 4233 - ] - }, - { - "teal": 4320, - "source": 1028, - "pc": [ - 4234 - ] - }, - { - "teal": 4328, - "source": 1041, - "pc": [ - 4235, - 4236, - 4237 - ] - }, - { - "teal": 4332, - "source": 1042, - "pc": [ - 4238 - ] - }, - { - "teal": 4333, - "source": 1042, - "pc": [ - 4239, - 4240 - ] - }, - { - "teal": 4334, - "source": 1042, - "pc": [ - 4241, - 4242, - 4243 - ] - }, - { - "teal": 4335, - "source": 1042, - "pc": [ - 4244 - ] - }, - { - "teal": 4336, - "source": 1042, - "pc": [ - 4245 - ] - }, - { - "teal": 4337, - "source": 1042, - "pc": [ - 4246 - ] - }, - { - "teal": 4338, - "source": 1042, - "pc": [ - 4247 - ] - }, - { - "teal": 4339, - "source": 1042, - "pc": [ - 4248 - ] - }, - { - "teal": 4340, - "source": 1042, - "pc": [ - 4249 - ] - }, - { - "teal": 4343, - "source": 1042, - "errorMessage": "the specified validator id isn't valid", - "pc": [ - 4250 - ] - }, - { - "teal": 4347, - "source": 1043, - "pc": [ - 4251, - 4252 - ] - }, - { - "teal": 4348, - "source": 1043, - "pc": [ - 4253, - 4254, - 4255 - ] - }, - { - "teal": 4349, - "source": 1043, - "pc": [ - 4256 - ] - }, - { - "teal": 4350, - "source": 58, - "pc": [ - 4257 - ] - }, - { - "teal": 4351, - "source": 1043, - "pc": [ - 4258 - ] - }, - { - "teal": 4354, - "source": 1043, - "errorMessage": "pool id not in valid range", - "pc": [ - 4259 - ] - }, - { - "teal": 4361, - "source": 1045, - "pc": [ - 4260, - 4261 - ] - }, - { - "teal": 4362, - "source": 1045, - "pc": [ - 4262, - 4263, - 4264 - ] - }, - { - "teal": 4363, - "source": 1045, - "pc": [ - 4265 - ] - }, - { - "teal": 4364, - "source": 1045, - "pc": [ - 4266 - ] - }, - { - "teal": 4365, - "source": 1045, - "pc": [ - 4267 - ] - }, - { - "teal": 4366, - "source": 1045, - "pc": [ - 4268 - ] - }, - { - "teal": 4367, - "source": 1045, - "pc": [ - 4269, - 4270, - 4271 - ] - }, - { - "teal": 4368, - "source": 1045, - "pc": [ - 4272, - 4273 - ] - }, - { - "teal": 4369, - "source": 1045, - "pc": [ - 4274, - 4275, - 4276 - ] - }, - { - "teal": 4370, - "source": 1045, - "pc": [ - 4277 - ] - }, - { - "teal": 4371, - "source": 1045, - "pc": [ - 4278, - 4279 - ] - }, - { - "teal": 4372, - "source": 1045, - "pc": [ - 4280, - 4281 - ] - }, - { - "teal": 4373, - "source": 1045, - "pc": [ - 4282 - ] - }, - { - "teal": 4374, - "source": 1045, - "pc": [ - 4283, - 4284 - ] - }, - { - "teal": 4375, - "source": 1045, - "pc": [ - 4285, - 4286, - 4287 - ] - }, - { - "teal": 4376, - "source": 1045, - "pc": [ - 4288 - ] - }, - { - "teal": 4377, - "source": 1045, - "pc": [ - 4289 - ] - }, - { - "teal": 4378, - "source": 1045, - "pc": [ - 4290 - ] - }, - { - "teal": 4379, - "source": 1045, - "pc": [ - 4291, - 4292 - ] - }, - { - "teal": 4380, - "source": 1045, - "pc": [ - 4293 - ] - }, - { - "teal": 4381, - "source": 1045, - "pc": [ - 4294 - ] - }, - { - "teal": 4382, - "source": 1045, - "pc": [ - 4295 - ] - }, - { - "teal": 4383, - "source": 1045, - "pc": [ - 4296 - ] - }, - { - "teal": 4387, - "source": 1044, - "errorMessage": "pool id outside of range of pools created for this validator", - "pc": [ - 4297 - ] - }, - { - "teal": 4394, - "source": 1051, - "pc": [ - 4298, - 4299 - ] - }, - { - "teal": 4395, - "source": 1051, - "pc": [ - 4300, - 4301, - 4302 - ] - }, - { - "teal": 4396, - "source": 1051, - "pc": [ - 4303 - ] - }, - { - "teal": 4397, - "source": 1051, - "pc": [ - 4304, - 4305 - ] - }, - { - "teal": 4398, - "source": 1051, - "pc": [ - 4306, - 4307 - ] - }, - { - "teal": 4399, - "source": 1051, - "pc": [ - 4308, - 4309, - 4310 - ] - }, - { - "teal": 4400, - "source": 1051, - "pc": [ - 4311 - ] - }, - { - "teal": 4401, - "source": 1051, - "pc": [ - 4312 - ] - }, - { - "teal": 4402, - "source": 1051, - "pc": [ - 4313 - ] - }, - { - "teal": 4403, - "source": 1051, - "pc": [ - 4314, - 4315 - ] - }, - { - "teal": 4404, - "source": 1051, - "pc": [ - 4316 - ] - }, - { - "teal": 4405, - "source": 1051, - "pc": [ - 4317 - ] - }, - { - "teal": 4406, - "source": 1051, - "pc": [ - 4318 - ] - }, - { - "teal": 4407, - "source": 1051, - "pc": [ - 4319 - ] - }, - { - "teal": 4408, - "source": 1051, - "pc": [ - 4320 - ] - }, - { - "teal": 4409, - "source": 1051, - "pc": [ - 4321 - ] - }, - { - "teal": 4410, - "source": 1051, - "pc": [ - 4322, - 4323 - ] - }, - { - "teal": 4411, - "source": 1051, - "pc": [ - 4324, - 4325, - 4326 - ] - }, - { - "teal": 4412, - "source": 1051, - "pc": [ - 4327 - ] - }, - { - "teal": 4413, - "source": 1051, - "pc": [ - 4328 - ] - }, - { - "teal": 4414, - "source": 1051, - "pc": [ - 4329 - ] - }, - { - "teal": 4415, - "source": 1051, - "pc": [ - 4330, - 4331 - ] - }, - { - "teal": 4416, - "source": 1051, - "pc": [ - 4332 - ] - }, - { - "teal": 4417, - "source": 1051, - "pc": [ - 4333 - ] - }, - { - "teal": 4418, - "source": 1051, - "pc": [ - 4334 - ] - }, - { - "teal": 4421, - "source": 1050, - "errorMessage": "The passed in app id doesn't match the passed in ids", - "pc": [ - 4335 - ] - }, - { - "teal": 4425, - "source": 1055, - "pc": [ - 4336, - 4337 - ] - }, - { - "teal": 4426, - "source": 1055, - "pc": [ - 4338, - 4339 - ] - }, - { - "teal": 4427, - "source": 1055, - "pc": [ - 4340, - 4341, - 4342 - ] - }, - { - "teal": 4428, - "source": 1055, - "pc": [ - 4343 - ] - }, - { - "teal": 4429, - "source": 1055, - "pc": [ - 4344, - 4345 - ] - }, - { - "teal": 4430, - "source": 1055, - "pc": [ - 4346 - ] - }, - { - "teal": 4431, - "source": 1055, - "pc": [ - 4347 - ] - }, - { - "teal": 4432, - "source": 1055, - "pc": [ - 4348 - ] - }, - { - "teal": 4436, - "source": 1057, - "pc": [ - 4349, - 4350 - ] - }, - { - "teal": 4437, - "source": 1057, - "pc": [ - 4351, - 4352, - 4353 - ] - }, - { - "teal": 4438, - "source": 1057, - "pc": [ - 4354 - ] - }, - { - "teal": 4439, - "source": 1057, - "pc": [ - 4355, - 4356 - ] - }, - { - "teal": 4440, - "source": 1057, - "pc": [ - 4357, - 4358, - 4359 - ] - }, - { - "teal": 4441, - "source": 1057, - "pc": [ - 4360 - ] - }, - { - "teal": 4442, - "source": 1057, - "pc": [ - 4361, - 4362, - 4363, - 4364, - 4365, - 4366, - 4367, - 4368, - 4369, - 4370, - 4371, - 4372, - 4373 - ] - }, - { - "teal": 4443, - "source": 1057, - "pc": [ - 4374 - ] - }, - { - "teal": 4446, - "source": 1057, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')", - "pc": [ - 4375 - ] - }, - { - "teal": 4447, - "source": 1057, - "pc": [ - 4376 - ] - }, - { - "teal": 4448, - "source": 1057, - "pc": [ - 4377 - ] - }, - { - "teal": 4452, - "source": 1058, - "pc": [ - 4378, - 4379 - ] - }, - { - "teal": 4453, - "source": 1058, - "pc": [ - 4380, - 4381, - 4382 - ] - }, - { - "teal": 4454, - "source": 1058, - "pc": [ - 4383 - ] - }, - { - "teal": 4455, - "source": 1058, - "pc": [ - 4384, - 4385 - ] - }, - { - "teal": 4456, - "source": 1058, - "pc": [ - 4386, - 4387, - 4388 - ] - }, - { - "teal": 4457, - "source": 1058, - "pc": [ - 4389 - ] - }, - { - "teal": 4458, - "source": 1058, - "pc": [ - 4390, - 4391, - 4392, - 4393, - 4394, - 4395, - 4396, - 4397 - ] - }, - { - "teal": 4459, - "source": 1058, - "pc": [ - 4398 - ] - }, - { - "teal": 4462, - "source": 1058, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')", - "pc": [ - 4399 - ] - }, - { - "teal": 4463, - "source": 1058, - "pc": [ - 4400 - ] - }, - { - "teal": 4464, - "source": 1058, - "pc": [ - 4401 - ] - }, - { - "teal": 4465, - "source": 1041, - "pc": [ - 4402 - ] - }, - { - "teal": 4474, - "source": 1067, - "pc": [ - 4403, - 4404, - 4405 - ] - }, - { - "teal": 4477, - "source": 1067, - "pc": [ - 4406 - ] - }, - { - "teal": 4478, - "source": 1067, - "pc": [ - 4407 - ] - }, - { - "teal": 4482, - "source": 1068, - "pc": [ - 4408 - ] - }, - { - "teal": 4483, - "source": 1068, - "pc": [ - 4409, - 4410 - ] - }, - { - "teal": 4484, - "source": 1068, - "pc": [ - 4411 - ] - }, - { - "teal": 4485, - "source": 1068, - "pc": [ - 4412 - ] - }, - { - "teal": 4486, - "source": 1068, - "pc": [ - 4413, - 4414 - ] - }, - { - "teal": 4491, - "source": 1069, - "pc": [ - 4415, - 4416 - ] - }, - { - "teal": 4492, - "source": 1069, - "pc": [ - 4417 - ] - }, - { - "teal": 4493, - "source": 1068, - "pc": [ - 4418 - ] - }, - { - "teal": 4494, - "source": 1068, - "pc": [ - 4419, - 4420 - ] - }, - { - "teal": 4495, - "source": 1068, - "pc": [ - 4421 - ] - }, - { - "teal": 4496, - "source": 1068, - "pc": [ - 4422 - ] - }, - { - "teal": 4497, - "source": 1068, - "pc": [ - 4423, - 4424 - ] - }, - { - "teal": 4498, - "source": 1068, - "pc": [ - 4425 - ] - }, - { - "teal": 4499, - "source": 1069, - "pc": [ - 4426 - ] - }, - { - "teal": 4500, - "source": 1069, - "pc": [ - 4427 - ] - }, - { - "teal": 4501, - "source": 1069, - "pc": [ - 4428 - ] - }, - { - "teal": 4502, - "source": 1069, - "pc": [ - 4429, - 4430, - 4431 - ] - }, - { - "teal": 4507, - "source": 1072, - "pc": [ - 4432, - 4433 - ] - }, - { - "teal": 4508, - "source": 1072, - "pc": [ - 4434 - ] - }, - { - "teal": 4509, - "source": 1068, - "pc": [ - 4435 - ] - }, - { - "teal": 4510, - "source": 1068, - "pc": [ - 4436, - 4437 - ] - }, - { - "teal": 4511, - "source": 1068, - "pc": [ - 4438 - ] - }, - { - "teal": 4512, - "source": 1068, - "pc": [ - 4439 - ] - }, - { - "teal": 4513, - "source": 1068, - "pc": [ - 4440, - 4441 - ] - }, - { - "teal": 4514, - "source": 1068, - "pc": [ - 4442 - ] - }, - { - "teal": 4515, - "source": 1072, - "pc": [ - 4443 - ] - }, - { - "teal": 4516, - "source": 1072, - "pc": [ - 4444, - 4445 - ] - }, - { - "teal": 4517, - "source": 1072, - "pc": [ - 4446 - ] - }, - { - "teal": 4520, - "source": 1072, - "errorMessage": "global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')", - "pc": [ - 4447 - ] - }, - { - "teal": 4521, - "source": 1072, - "pc": [ - 4448, - 4449 - ] - }, - { - "teal": 4526, - "source": 1074, - "pc": [ - 4450 - ] - }, - { - "teal": 4527, - "source": 1074, - "pc": [ - 4451, - 4452 - ] - }, - { - "teal": 4528, - "source": 1068, - "pc": [ - 4453 - ] - }, - { - "teal": 4529, - "source": 1068, - "pc": [ - 4454, - 4455 - ] - }, - { - "teal": 4530, - "source": 1068, - "pc": [ - 4456 - ] - }, - { - "teal": 4531, - "source": 1068, - "pc": [ - 4457 - ] - }, - { - "teal": 4532, - "source": 1068, - "pc": [ - 4458, - 4459 - ] - }, - { - "teal": 4533, - "source": 1068, - "pc": [ - 4460 - ] - }, - { - "teal": 4534, - "source": 1074, - "pc": [ - 4461, - 4462 - ] - }, - { - "teal": 4535, - "source": 1074, - "pc": [ - 4463 - ] - }, - { - "teal": 4536, - "source": 1074, - "pc": [ - 4464 - ] - }, - { - "teal": 4537, - "source": 1074, - "pc": [ - 4465, - 4466, - 4467 - ] - }, - { - "teal": 4538, - "source": 1074, - "pc": [ - 4468, - 4469 - ] - }, - { - "teal": 4539, - "source": 1074, - "pc": [ - 4470, - 4471 - ] - }, - { - "teal": 4540, - "source": 1068, - "pc": [ - 4472 - ] - }, - { - "teal": 4541, - "source": 1068, - "pc": [ - 4473, - 4474 - ] - }, - { - "teal": 4542, - "source": 1068, - "pc": [ - 4475 - ] - }, - { - "teal": 4543, - "source": 1068, - "pc": [ - 4476 - ] - }, - { - "teal": 4544, - "source": 1068, - "pc": [ - 4477, - 4478 - ] - }, - { - "teal": 4545, - "source": 1068, - "pc": [ - 4479 - ] - }, - { - "teal": 4546, - "source": 1074, - "pc": [ - 4480, - 4481 - ] - }, - { - "teal": 4547, - "source": 1074, - "pc": [ - 4482 - ] - }, - { - "teal": 4548, - "source": 1074, - "pc": [ - 4483 - ] - }, - { - "teal": 4551, - "source": 1074, - "pc": [ - 4484, - 4485, - 4486 - ] - }, - { - "teal": 4556, - "source": 1076, - "pc": [ - 4487, - 4488 - ] - }, - { - "teal": 4557, - "source": 1076, - "pc": [ - 4489, - 4490 - ] - }, - { - "teal": 4558, - "source": 1076, - "pc": [ - 4491 - ] - }, - { - "teal": 4559, - "source": 1076, - "pc": [ - 4492, - 4493 - ] - }, - { - "teal": 4560, - "source": 1076, - "pc": [ - 4494 - ] - }, - { - "teal": 4561, - "source": 1076, - "pc": [ - 4495 - ] - }, - { - "teal": 4562, - "source": 1076, - "pc": [ - 4496, - 4497 - ] - }, - { - "teal": 4563, - "source": 1076, - "pc": [ - 4498 - ] - }, - { - "teal": 4568, - "source": 1067, - "pc": [ - 4499 - ] - }, - { - "teal": 4572, - "source": 1081, - "pc": [ - 4500, - 4501, - 4502 - ] - }, - { - "teal": 4576, - "source": 1083, - "pc": [ - 4503, - 4504 - ] - }, - { - "teal": 4577, - "source": 1083, - "pc": [ - 4505, - 4506, - 4507 - ] - }, - { - "teal": 4578, - "source": 1083, - "pc": [ - 4508, - 4509 - ] - }, - { - "teal": 4579, - "source": 1083, - "pc": [ - 4510 - ] - }, - { - "teal": 4580, - "source": 1083, - "pc": [ - 4511 - ] - }, - { - "teal": 4584, - "source": 1084, - "pc": [ - 4512, - 4513 - ] - }, - { - "teal": 4585, - "source": 1084, - "pc": [ - 4514, - 4515, - 4516 - ] - }, - { - "teal": 4586, - "source": 1084, - "pc": [ - 4517, - 4518 - ] - }, - { - "teal": 4587, - "source": 1084, - "pc": [ - 4519 - ] - }, - { - "teal": 4588, - "source": 1084, - "pc": [ - 4520 - ] - }, - { - "teal": 4592, - "source": 1085, - "pc": [ - 4521, - 4522 - ] - }, - { - "teal": 4593, - "source": 1085, - "pc": [ - 4523, - 4524 - ] - }, - { - "teal": 4594, - "source": 1085, - "pc": [ - 4525, - 4526, - 4527 - ] - }, - { - "teal": 4595, - "source": 1085, - "pc": [ - 4528 - ] - }, - { - "teal": 4598, - "source": 1085, - "errorMessage": "sender must be owner to add new validator", - "pc": [ - 4529 - ] - }, - { - "teal": 4605, - "source": 1088, - "pc": [ - 4530, - 4531 - ] - }, - { - "teal": 4606, - "source": 1088, - "pc": [ - 4532, - 4533, - 4534 - ] - }, - { - "teal": 4607, - "source": 1088, - "pc": [ - 4535 - ] - }, - { - "teal": 4608, - "source": 1088, - "pc": [ - 4536 - ] - }, - { - "teal": 4609, - "source": 1088, - "pc": [ - 4537 - ] - }, - { - "teal": 4610, - "source": 1088, - "pc": [ - 4538 - ] - }, - { - "teal": 4611, - "source": 1088, - "pc": [ - 4539, - 4540, - 4541 - ] - }, - { - "teal": 4612, - "source": 1088, - "pc": [ - 4542, - 4543 - ] - }, - { - "teal": 4613, - "source": 1088, - "pc": [ - 4544, - 4545, - 4546 - ] - }, - { - "teal": 4614, - "source": 1088, - "pc": [ - 4547 - ] - }, - { - "teal": 4615, - "source": 1088, - "pc": [ - 4548, - 4549 - ] - }, - { - "teal": 4616, - "source": 1088, - "pc": [ - 4550 - ] - }, - { - "teal": 4617, - "source": 1088, - "pc": [ - 4551 - ] - }, - { - "teal": 4621, - "source": 1087, - "errorMessage": "gating type not valid", - "pc": [ - 4552 - ] - }, - { - "teal": 4628, - "source": 1092, - "pc": [ - 4553, - 4554 - ] - }, - { - "teal": 4629, - "source": 1092, - "pc": [ - 4555, - 4556, - 4557 - ] - }, - { - "teal": 4630, - "source": 1092, - "pc": [ - 4558 - ] - }, - { - "teal": 4631, - "source": 1092, - "pc": [ - 4559 - ] - }, - { - "teal": 4632, - "source": 1092, - "pc": [ - 4560 - ] - }, - { - "teal": 4633, - "source": 1092, - "pc": [ - 4561 - ] - }, - { - "teal": 4634, - "source": 1092, - "pc": [ - 4562, - 4563, - 4564 - ] - }, - { - "teal": 4635, - "source": 1092, - "pc": [ - 4565, - 4566 - ] - }, - { - "teal": 4636, - "source": 1092, - "pc": [ - 4567, - 4568, - 4569 - ] - }, - { - "teal": 4637, - "source": 1092, - "pc": [ - 4570 - ] - }, - { - "teal": 4638, - "source": 1092, - "pc": [ - 4571, - 4572 - ] - }, - { - "teal": 4639, - "source": 1092, - "pc": [ - 4573 - ] - }, - { - "teal": 4640, - "source": 1092, - "pc": [ - 4574 - ] - }, - { - "teal": 4644, - "source": 1091, - "errorMessage": "epoch length not in allowable range", - "pc": [ - 4575 - ] - }, - { - "teal": 4651, - "source": 1096, - "pc": [ - 4576, - 4577 - ] - }, - { - "teal": 4652, - "source": 1096, - "pc": [ - 4578, - 4579, - 4580 - ] - }, - { - "teal": 4653, - "source": 1096, - "pc": [ - 4581 - ] - }, - { - "teal": 4654, - "source": 1096, - "pc": [ - 4582 - ] - }, - { - "teal": 4655, - "source": 1096, - "pc": [ - 4583 - ] - }, - { - "teal": 4656, - "source": 1096, - "pc": [ - 4584 - ] - }, - { - "teal": 4657, - "source": 1096, - "pc": [ - 4585, - 4586, - 4587 - ] - }, - { - "teal": 4658, - "source": 1096, - "pc": [ - 4588, - 4589 - ] - }, - { - "teal": 4659, - "source": 1096, - "pc": [ - 4590, - 4591, - 4592 - ] - }, - { - "teal": 4660, - "source": 1096, - "pc": [ - 4593 - ] - }, - { - "teal": 4661, - "source": 1096, - "pc": [ - 4594, - 4595 - ] - }, - { - "teal": 4662, - "source": 1096, - "pc": [ - 4596 - ] - }, - { - "teal": 4663, - "source": 1096, - "pc": [ - 4597 - ] - }, - { - "teal": 4667, - "source": 1095, - "errorMessage": "commission percentage not valid", - "pc": [ - 4598 - ] - }, - { - "teal": 4672, - "source": 1099, - "pc": [ - 4599, - 4600 - ] - }, - { - "teal": 4673, - "source": 1099, - "pc": [ - 4601, - 4602, - 4603 - ] - }, - { - "teal": 4674, - "source": 1099, - "pc": [ - 4604 - ] - }, - { - "teal": 4675, - "source": 1099, - "pc": [ - 4605 - ] - }, - { - "teal": 4676, - "source": 1099, - "pc": [ - 4606 - ] - }, - { - "teal": 4677, - "source": 1099, - "pc": [ - 4607, - 4608, - 4609 - ] - }, - { - "teal": 4685, - "source": 1101, - "pc": [ - 4610, - 4611 - ] - }, - { - "teal": 4686, - "source": 1101, - "pc": [ - 4612, - 4613, - 4614 - ] - }, - { - "teal": 4687, - "source": 1101, - "pc": [ - 4615, - 4616 - ] - }, - { - "teal": 4688, - "source": 1101, - "pc": [ - 4617 - ] - }, - { - "teal": 4691, - "source": 1100, - "errorMessage": "validatorCommissionAddress must be set if percent to validator is not 0", - "pc": [ - 4618 - ] - }, - { - "teal": 4696, - "source": 1105, - "pc": [ - 4619, - 4620 - ] - }, - { - "teal": 4697, - "source": 1105, - "pc": [ - 4621, - 4622, - 4623 - ] - }, - { - "teal": 4698, - "source": 1105, - "pc": [ - 4624 - ] - }, - { - "teal": 4699, - "source": 1105, - "pc": [ - 4625, - 4626 - ] - }, - { - "teal": 4700, - "source": 1105, - "pc": [ - 4627 - ] - }, - { - "teal": 4703, - "source": 1105, - "errorMessage": "staking pool must have minimum entry of 1 algo", - "pc": [ - 4628 - ] - }, - { - "teal": 4710, - "source": 1108, - "pc": [ - 4629, - 4630 - ] - }, - { - "teal": 4711, - "source": 1108, - "pc": [ - 4631, - 4632, - 4633 - ] - }, - { - "teal": 4712, - "source": 1108, - "pc": [ - 4634 - ] - }, - { - "teal": 4713, - "source": 1108, - "pc": [ - 4635 - ] - }, - { - "teal": 4714, - "source": 1108, - "pc": [ - 4636 - ] - }, - { - "teal": 4715, - "source": 1108, - "pc": [ - 4637 - ] - }, - { - "teal": 4716, - "source": 1108, - "pc": [ - 4638, - 4639, - 4640 - ] - }, - { - "teal": 4717, - "source": 1108, - "pc": [ - 4641, - 4642 - ] - }, - { - "teal": 4718, - "source": 1108, - "pc": [ - 4643, - 4644, - 4645 - ] - }, - { - "teal": 4719, - "source": 1108, - "pc": [ - 4646 - ] - }, - { - "teal": 4720, - "source": 1108, - "pc": [ - 4647, - 4648 - ] - }, - { - "teal": 4721, - "source": 1108, - "pc": [ - 4649 - ] - }, - { - "teal": 4722, - "source": 1108, - "pc": [ - 4650 - ] - }, - { - "teal": 4726, - "source": 1107, - "errorMessage": "number of pools per node must be be between 1 and the maximum allowed number", - "pc": [ - 4651 - ] - }, - { - "teal": 4731, - "source": 1111, - "pc": [ - 4652, - 4653 - ] - }, - { - "teal": 4732, - "source": 1111, - "pc": [ - 4654, - 4655, - 4656 - ] - }, - { - "teal": 4733, - "source": 1111, - "pc": [ - 4657 - ] - }, - { - "teal": 4734, - "source": 1111, - "pc": [ - 4658 - ] - }, - { - "teal": 4735, - "source": 1111, - "pc": [ - 4659 - ] - }, - { - "teal": 4736, - "source": 1111, - "pc": [ - 4660, - 4661, - 4662 - ] - }, - { - "teal": 4741, - "source": 1112, - "pc": [ - 4663, - 4664 - ] - }, - { - "teal": 4742, - "source": 1112, - "pc": [ - 4665, - 4666, - 4667 - ] - }, - { - "teal": 4743, - "source": 1112, - "pc": [ - 4668 - ] - }, - { - "teal": 4744, - "source": 1112, - "pc": [ - 4669, - 4670 - ] - }, - { - "teal": 4745, - "source": 1112, - "pc": [ - 4671 - ] - }, - { - "teal": 4748, - "source": 1112, - "errorMessage": "sunsettingOn must be later than now if set", - "pc": [ - 4672 - ] - }, - { - "teal": 4751, - "source": 1081, - "pc": [ - 4673 - ] - }, - { - "teal": 4765, - "source": 1127, - "pc": [ - 4674, - 4675, - 4676 - ] - }, - { - "teal": 4768, - "source": 1127, - "pc": [ - 4677 - ] - }, - { - "teal": 4769, - "source": 1127, - "pc": [ - 4678, - 4679 - ] - }, - { - "teal": 4773, - "source": 1134, - "pc": [ - 4680, - 4681 - ] - }, - { - "teal": 4774, - "source": 1134, - "pc": [ - 4682, - 4683 - ] - }, - { - "teal": 4775, - "source": 1134, - "pc": [ - 4684, - 4685, - 4686 - ] - }, - { - "teal": 4776, - "source": 1134, - "pc": [ - 4687 - ] - }, - { - "teal": 4777, - "source": 1134, - "pc": [ - 4688 - ] - }, - { - "teal": 4778, - "source": 1134, - "pc": [ - 4689 - ] - }, - { - "teal": 4779, - "source": 1134, - "pc": [ - 4690, - 4691 - ] - }, - { - "teal": 4780, - "source": 1134, - "pc": [ - 4692 - ] - }, - { - "teal": 4781, - "source": 1134, - "pc": [ - 4693 - ] - }, - { - "teal": 4782, - "source": 1134, - "pc": [ - 4694 - ] - }, - { - "teal": 4783, - "source": 1134, - "pc": [ - 4695 - ] - }, - { - "teal": 4784, - "source": 1134, - "pc": [ - 4696 - ] - }, - { - "teal": 4785, - "source": 1134, - "pc": [ - 4697 - ] - }, - { - "teal": 4786, - "source": 1134, - "pc": [ - 4698, - 4699 - ] - }, - { - "teal": 4787, - "source": 1134, - "pc": [ - 4700, - 4701, - 4702 - ] - }, - { - "teal": 4788, - "source": 1134, - "pc": [ - 4703 - ] - }, - { - "teal": 4789, - "source": 1134, - "pc": [ - 4704 - ] - }, - { - "teal": 4790, - "source": 1134, - "pc": [ - 4705 - ] - }, - { - "teal": 4791, - "source": 1134, - "pc": [ - 4706, - 4707 - ] - }, - { - "teal": 4792, - "source": 1134, - "pc": [ - 4708 - ] - }, - { - "teal": 4793, - "source": 1134, - "pc": [ - 4709 - ] - }, - { - "teal": 4794, - "source": 1134, - "pc": [ - 4710, - 4711 - ] - }, - { - "teal": 4807, - "source": 1143, - "pc": [ - 4712 - ] - }, - { - "teal": 4808, - "source": 1143, - "pc": [ - 4713 - ] - }, - { - "teal": 4809, - "source": 1143, - "pc": [ - 4714, - 4715 - ] - }, - { - "teal": 4813, - "source": 1143, - "pc": [ - 4716, - 4717 - ] - }, - { - "teal": 4814, - "source": 1143, - "pc": [ - 4718, - 4719 - ] - }, - { - "teal": 4815, - "source": 1143, - "pc": [ - 4720, - 4721 - ] - }, - { - "teal": 4816, - "source": 1143, - "pc": [ - 4722 - ] - }, - { - "teal": 4817, - "source": 1143, - "pc": [ - 4723, - 4724 - ] - }, - { - "teal": 4821, - "source": 1143, - "pc": [ - 4725, - 4726 - ] - }, - { - "teal": 4822, - "source": 1143, - "pc": [ - 4727, - 4728 - ] - }, - { - "teal": 4823, - "source": 1143, - "pc": [ - 4729 - ] - }, - { - "teal": 4824, - "source": 1143, - "pc": [ - 4730, - 4731 - ] - }, - { - "teal": 4827, - "source": 1143, - "pc": [ - 4732 - ] - }, - { - "teal": 4828, - "source": 1143, - "pc": [ - 4733, - 4734 - ] - }, - { - "teal": 4829, - "source": 1138, - "pc": [ - 4735 - ] - }, - { - "teal": 4830, - "source": 1138, - "pc": [ - 4736, - 4737 - ] - }, - { - "teal": 4831, - "source": 1138, - "pc": [ - 4738, - 4739 - ] - }, - { - "teal": 4832, - "source": 1138, - "pc": [ - 4740, - 4741, - 4742, - 4743, - 4744, - 4745 - ] - }, - { - "teal": 4833, - "source": 1138, - "pc": [ - 4746, - 4747 - ] - }, - { - "teal": 4837, - "source": 1139, - "pc": [ - 4748, - 4749 - ] - }, - { - "teal": 4838, - "source": 1139, - "pc": [ - 4750, - 4751 - ] - }, - { - "teal": 4848, - "source": 1145, - "pc": [ - 4752, - 4753 - ] - }, - { - "teal": 4849, - "source": 1145, - "pc": [ - 4754, - 4755 - ] - }, - { - "teal": 4850, - "source": 1145, - "pc": [ - 4756, - 4757 - ] - }, - { - "teal": 4853, - "source": 1138, - "pc": [ - 4758 - ] - }, - { - "teal": 4854, - "source": 1138, - "pc": [ - 4759, - 4760 - ] - }, - { - "teal": 4857, - "source": 1138, - "pc": [ - 4761 - ] - }, - { - "teal": 4858, - "source": 1138, - "pc": [ - 4762, - 4763 - ] - }, - { - "teal": 4859, - "source": 1138, - "pc": [ - 4764 - ] - }, - { - "teal": 4860, - "source": 1138, - "pc": [ - 4765 - ] - }, - { - "teal": 4861, - "source": 1138, - "pc": [ - 4766, - 4767 - ] - }, - { - "teal": 4862, - "source": 1138, - "pc": [ - 4768, - 4769, - 4770 - ] - }, - { - "teal": 4863, - "source": 1138, - "pc": [ - 4771 - ] - }, - { - "teal": 4868, - "source": 1148, - "pc": [ - 4772, - 4773 - ] - }, - { - "teal": 4869, - "source": 1148, - "pc": [ - 4774, - 4775, - 4776 - ] - }, - { - "teal": 4870, - "source": 1148, - "pc": [ - 4777 - ] - }, - { - "teal": 4871, - "source": 1148, - "pc": [ - 4778, - 4779, - 4780 - ] - }, - { - "teal": 4876, - "source": 1149, - "pc": [ - 4781 - ] - }, - { - "teal": 4877, - "source": 1149, - "pc": [ - 4782, - 4783 - ] - }, - { - "teal": 4878, - "source": 1149, - "pc": [ - 4784, - 4785 - ] - }, - { - "teal": 4879, - "source": 1149, - "pc": [ - 4786 - ] - }, - { - "teal": 4880, - "source": 1149, - "pc": [ - 4787, - 4788 - ] - }, - { - "teal": 4881, - "source": 1149, - "pc": [ - 4789, - 4790 - ] - }, - { - "teal": 4882, - "source": 1149, - "pc": [ - 4791 - ] - }, - { - "teal": 4883, - "source": 1149, - "pc": [ - 4792, - 4793 - ] - }, - { - "teal": 4884, - "source": 1149, - "pc": [ - 4794, - 4795 - ] - }, - { - "teal": 4885, - "source": 1149, - "pc": [ - 4796, - 4797 - ] - }, - { - "teal": 4886, - "source": 1149, - "pc": [ - 4798, - 4799 - ] - }, - { - "teal": 4887, - "source": 1149, - "pc": [ - 4800 - ] - }, - { - "teal": 4892, - "source": 1153, - "pc": [ - 4801, - 4802 - ] - }, - { - "teal": 4893, - "source": 1153, - "pc": [ - 4803, - 4804 - ] - }, - { - "teal": 4894, - "source": 1153, - "pc": [ - 4805 - ] - }, - { - "teal": 4897, - "source": 1153, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')", - "pc": [ - 4806 - ] - }, - { - "teal": 4898, - "source": 1153, - "pc": [ - 4807, - 4808 - ] - }, - { - "teal": 4902, - "source": 1154, - "pc": [ - 4809, - 4810 - ] - }, - { - "teal": 4903, - "source": 1154, - "pc": [ - 4811, - 4812 - ] - }, - { - "teal": 4904, - "source": 1154, - "pc": [ - 4813 - ] - }, - { - "teal": 4907, - "source": 1154, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')", - "pc": [ - 4814 - ] - }, - { - "teal": 4908, - "source": 1154, - "pc": [ - 4815, - 4816 - ] - }, - { - "teal": 4912, - "source": 1155, - "pc": [ - 4817, - 4818 - ] - }, - { - "teal": 4913, - "source": 1155, - "pc": [ - 4819, - 4820 - ] - }, - { - "teal": 4914, - "source": 1155, - "pc": [ - 4821, - 4822, - 4823 - ] - }, - { - "teal": 4915, - "source": 1155, - "pc": [ - 4824 - ] - }, - { - "teal": 4916, - "source": 1155, - "pc": [ - 4825 - ] - }, - { - "teal": 4917, - "source": 1155, - "pc": [ - 4826 - ] - }, - { - "teal": 4918, - "source": 1155, - "pc": [ - 4827, - 4828 - ] - }, - { - "teal": 4919, - "source": 1155, - "pc": [ - 4829 - ] - }, - { - "teal": 4920, - "source": 1155, - "pc": [ - 4830 - ] - }, - { - "teal": 4921, - "source": 1155, - "pc": [ - 4831 - ] - }, - { - "teal": 4922, - "source": 1155, - "pc": [ - 4832 - ] - }, - { - "teal": 4923, - "source": 1155, - "pc": [ - 4833, - 4834 - ] - }, - { - "teal": 4924, - "source": 1155, - "pc": [ - 4835 - ] - }, - { - "teal": 4925, - "source": 1155, - "pc": [ - 4836, - 4837, - 4838 - ] - }, - { - "teal": 4926, - "source": 1155, - "pc": [ - 4839 - ] - }, - { - "teal": 4927, - "source": 1155, - "pc": [ - 4840, - 4841 - ] - }, - { - "teal": 4928, - "source": 1155, - "pc": [ - 4842, - 4843, - 4844 - ] - }, - { - "teal": 4929, - "source": 1155, - "pc": [ - 4845 - ] - }, - { - "teal": 4930, - "source": 1155, - "pc": [ - 4846 - ] - }, - { - "teal": 4931, - "source": 1155, - "pc": [ - 4847 - ] - }, - { - "teal": 4932, - "source": 1155, - "pc": [ - 4848, - 4849 - ] - }, - { - "teal": 4933, - "source": 1155, - "pc": [ - 4850 - ] - }, - { - "teal": 4937, - "source": 1156, - "pc": [ - 4851, - 4852 - ] - }, - { - "teal": 4938, - "source": 1156, - "pc": [ - 4853, - 4854 - ] - }, - { - "teal": 4939, - "source": 1156, - "pc": [ - 4855, - 4856, - 4857 - ] - }, - { - "teal": 4940, - "source": 1156, - "pc": [ - 4858 - ] - }, - { - "teal": 4941, - "source": 1156, - "pc": [ - 4859 - ] - }, - { - "teal": 4942, - "source": 1156, - "pc": [ - 4860 - ] - }, - { - "teal": 4943, - "source": 1156, - "pc": [ - 4861, - 4862 - ] - }, - { - "teal": 4944, - "source": 1156, - "pc": [ - 4863 - ] - }, - { - "teal": 4945, - "source": 1156, - "pc": [ - 4864 - ] - }, - { - "teal": 4946, - "source": 1156, - "pc": [ - 4865, - 4866 - ] - }, - { - "teal": 4947, - "source": 1156, - "pc": [ - 4867 - ] - }, - { - "teal": 4948, - "source": 1156, - "pc": [ - 4868, - 4869 - ] - }, - { - "teal": 4949, - "source": 1156, - "pc": [ - 4870 - ] - }, - { - "teal": 4950, - "source": 1156, - "pc": [ - 4871 - ] - }, - { - "teal": 4951, - "source": 1156, - "pc": [ - 4872, - 4873 - ] - }, - { - "teal": 4952, - "source": 1156, - "pc": [ - 4874, - 4875, - 4876 - ] - }, - { - "teal": 4953, - "source": 1156, - "pc": [ - 4877 - ] - }, - { - "teal": 4954, - "source": 1156, - "pc": [ - 4878 - ] - }, - { - "teal": 4955, - "source": 1156, - "pc": [ - 4879 - ] - }, - { - "teal": 4956, - "source": 1156, - "pc": [ - 4880, - 4881 - ] - }, - { - "teal": 4957, - "source": 1156, - "pc": [ - 4882 - ] - }, - { - "teal": 4962, - "source": 1159, - "pc": [ - 4883, - 4884 - ] - }, - { - "teal": 4963, - "source": 1159, - "pc": [ - 4885, - 4886, - 4887 - ] - }, - { - "teal": 4968, - "source": 1160, - "pc": [ - 4888, - 4889 - ] - }, - { - "teal": 4969, - "source": 1160, - "pc": [ - 4890 - ] - }, - { - "teal": 4970, - "source": 1160, - "pc": [ - 4891 - ] - }, - { - "teal": 4971, - "source": 1160, - "pc": [ - 4892 - ] - }, - { - "teal": 4972, - "source": 1160, - "pc": [ - 4893, - 4894 - ] - }, - { - "teal": 4973, - "source": 1160, - "pc": [ - 4895, - 4896, - 4897 - ] - }, - { - "teal": 4974, - "source": 1160, - "pc": [ - 4898 - ] - }, - { - "teal": 4975, - "source": 1160, - "pc": [ - 4899 - ] - }, - { - "teal": 4976, - "source": 1160, - "pc": [ - 4900 - ] - }, - { - "teal": 4977, - "source": 1160, - "pc": [ - 4901, - 4902 - ] - }, - { - "teal": 4978, - "source": 1160, - "pc": [ - 4903 - ] - }, - { - "teal": 4979, - "source": 1160, - "pc": [ - 4904 - ] - }, - { - "teal": 4980, - "source": 1160, - "pc": [ - 4905 - ] - }, - { - "teal": 4981, - "source": 1160, - "pc": [ - 4906 - ] - }, - { - "teal": 4982, - "source": 1160, - "pc": [ - 4907 - ] - }, - { - "teal": 4983, - "source": 1160, - "pc": [ - 4908 - ] - }, - { - "teal": 4984, - "source": 1160, - "pc": [ - 4909, - 4910 - ] - }, - { - "teal": 4985, - "source": 1160, - "pc": [ - 4911, - 4912, - 4913 - ] - }, - { - "teal": 4986, - "source": 1160, - "pc": [ - 4914 - ] - }, - { - "teal": 4987, - "source": 1160, - "pc": [ - 4915 - ] - }, - { - "teal": 4988, - "source": 1160, - "pc": [ - 4916 - ] - }, - { - "teal": 4989, - "source": 1160, - "pc": [ - 4917, - 4918 - ] - }, - { - "teal": 4990, - "source": 1160, - "pc": [ - 4919 - ] - }, - { - "teal": 4996, - "source": 1162, - "pc": [ - 4920, - 4921 - ] - }, - { - "teal": 4997, - "source": 1162, - "pc": [ - 4922, - 4923, - 4924 - ] - }, - { - "teal": 5002, - "source": 1163, - "pc": [ - 4925, - 4926 - ] - }, - { - "teal": 5003, - "source": 1163, - "pc": [ - 4927 - ] - }, - { - "teal": 5004, - "source": 1163, - "pc": [ - 4928 - ] - }, - { - "teal": 5005, - "source": 1163, - "pc": [ - 4929 - ] - }, - { - "teal": 5006, - "source": 1163, - "pc": [ - 4930, - 4931 - ] - }, - { - "teal": 5007, - "source": 1163, - "pc": [ - 4932 - ] - }, - { - "teal": 5008, - "source": 1163, - "pc": [ - 4933 - ] - }, - { - "teal": 5013, - "source": 1165, - "pc": [ - 4934, - 4935 - ] - }, - { - "teal": 5014, - "source": 1165, - "pc": [ - 4936 - ] - }, - { - "teal": 5015, - "source": 1165, - "pc": [ - 4937 - ] - }, - { - "teal": 5016, - "source": 1165, - "pc": [ - 4938 - ] - }, - { - "teal": 5017, - "source": 1165, - "pc": [ - 4939, - 4940 - ] - }, - { - "teal": 5018, - "source": 1165, - "pc": [ - 4941, - 4942, - 4943 - ] - }, - { - "teal": 5019, - "source": 1165, - "pc": [ - 4944 - ] - }, - { - "teal": 5020, - "source": 1165, - "pc": [ - 4945 - ] - }, - { - "teal": 5021, - "source": 1165, - "pc": [ - 4946 - ] - }, - { - "teal": 5022, - "source": 1165, - "pc": [ - 4947, - 4948 - ] - }, - { - "teal": 5023, - "source": 1165, - "pc": [ - 4949 - ] - }, - { - "teal": 5024, - "source": 1165, - "pc": [ - 4950 - ] - }, - { - "teal": 5025, - "source": 1165, - "pc": [ - 4951, - 4952 - ] - }, - { - "teal": 5026, - "source": 1165, - "pc": [ - 4953, - 4954 - ] - }, - { - "teal": 5027, - "source": 1165, - "pc": [ - 4955, - 4956 - ] - }, - { - "teal": 5028, - "source": 1165, - "pc": [ - 4957 - ] - }, - { - "teal": 5029, - "source": 1165, - "pc": [ - 4958 - ] - }, - { - "teal": 5030, - "source": 1165, - "pc": [ - 4959 - ] - }, - { - "teal": 5031, - "source": 1165, - "pc": [ - 4960 - ] - }, - { - "teal": 5032, - "source": 1165, - "pc": [ - 4961, - 4962 - ] - }, - { - "teal": 5033, - "source": 1165, - "pc": [ - 4963, - 4964, - 4965 - ] - }, - { - "teal": 5034, - "source": 1165, - "pc": [ - 4966 - ] - }, - { - "teal": 5035, - "source": 1165, - "pc": [ - 4967 - ] - }, - { - "teal": 5036, - "source": 1165, - "pc": [ - 4968 - ] - }, - { - "teal": 5037, - "source": 1165, - "pc": [ - 4969, - 4970 - ] - }, - { - "teal": 5038, - "source": 1165, - "pc": [ - 4971 - ] - }, - { - "teal": 5042, - "source": 1166, - "pc": [ - 4972, - 4973 - ] - }, - { - "teal": 5043, - "source": 1166, - "pc": [ - 4974 - ] - }, - { - "teal": 5044, - "source": 1166, - "pc": [ - 4975, - 4976 - ] - }, - { - "teal": 5045, - "source": 1166, - "pc": [ - 4977, - 4978 - ] - }, - { - "teal": 5046, - "source": 1166, - "pc": [ - 4979, - 4980 - ] - }, - { - "teal": 5047, - "source": 1166, - "pc": [ - 4981 - ] - }, - { - "teal": 5048, - "source": 1166, - "pc": [ - 4982 - ] - }, - { - "teal": 5049, - "source": 1166, - "pc": [ - 4983, - 4984 - ] - }, - { - "teal": 5050, - "source": 1166, - "pc": [ - 4985 - ] - }, - { - "teal": 5051, - "source": 1166, - "pc": [ - 4986 - ] - }, - { - "teal": 5052, - "source": 1127, - "pc": [ - 4987 - ] - }, - { - "teal": 5056, - "source": 1169, - "pc": [ - 4988, - 4989, - 4990 - ] - }, - { - "teal": 5059, - "source": 1169, - "pc": [ - 4991 - ] - }, - { - "teal": 5060, - "source": 1169, - "pc": [ - 4992, - 4993 - ] - }, - { - "teal": 5064, - "source": 1170, - "pc": [ - 4994 - ] - }, - { - "teal": 5065, - "source": 1170, - "pc": [ - 4995, - 4996 - ] - }, - { - "teal": 5066, - "source": 1170, - "pc": [ - 4997 - ] - }, - { - "teal": 5067, - "source": 1170, - "pc": [ - 4998 - ] - }, - { - "teal": 5068, - "source": 1170, - "pc": [ - 4999 - ] - }, - { - "teal": 5069, - "source": 1170, - "pc": [ - 5000 - ] - }, - { - "teal": 5070, - "source": 1170, - "pc": [ - 5001 - ] - }, - { - "teal": 5074, - "source": 1172, - "pc": [ - 5002 - ] - }, - { - "teal": 5075, - "source": 1172, - "pc": [ - 5003, - 5004 - ] - }, - { - "teal": 5076, - "source": 1172, - "pc": [ - 5005 - ] - }, - { - "teal": 5077, - "source": 1172, - "pc": [ - 5006 - ] - }, - { - "teal": 5080, - "source": 1172, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", - "pc": [ - 5007 - ] - }, - { - "teal": 5081, - "source": 1172, - "pc": [ - 5008, - 5009 - ] - }, - { - "teal": 5085, - "source": 1173, - "pc": [ - 5010 - ] - }, - { - "teal": 5086, - "source": 1173, - "pc": [ - 5011, - 5012 - ] - }, - { - "teal": 5090, - "source": 1174, - "pc": [ - 5013 - ] - }, - { - "teal": 5091, - "source": 1174, - "pc": [ - 5014, - 5015 - ] - }, - { - "teal": 5096, - "source": 1174, - "pc": [ - 5016, - 5017 - ] - }, - { - "teal": 5097, - "source": 1174, - "pc": [ - 5018, - 5019 - ] - }, - { - "teal": 5098, - "source": 1174, - "pc": [ - 5020 - ] - }, - { - "teal": 5099, - "source": 1174, - "pc": [ - 5021, - 5022, - 5023 - ] - }, - { - "teal": 5104, - "source": 1175, - "pc": [ - 5024, - 5025 - ] - }, - { - "teal": 5105, - "source": 1175, - "pc": [ - 5026, - 5027 - ] - }, - { - "teal": 5106, - "source": 1175, - "pc": [ - 5028 - ] - }, - { - "teal": 5107, - "source": 1175, - "pc": [ - 5029 - ] - }, - { - "teal": 5108, - "source": 1175, - "pc": [ - 5030 - ] - }, - { - "teal": 5109, - "source": 1175, - "pc": [ - 5031 - ] - }, - { - "teal": 5110, - "source": 1175, - "pc": [ - 5032, - 5033 - ] - }, - { - "teal": 5111, - "source": 1175, - "pc": [ - 5034 - ] - }, - { - "teal": 5112, - "source": 1175, - "pc": [ - 5035, - 5036, - 5037 - ] - }, - { - "teal": 5117, - "source": 1177, - "pc": [ - 5038 - ] - }, - { - "teal": 5123, - "source": 1179, - "pc": [ - 5039, - 5040 - ] - }, - { - "teal": 5124, - "source": 1179, - "pc": [ - 5041 - ] - }, - { - "teal": 5125, - "source": 1179, - "pc": [ - 5042 - ] - }, - { - "teal": 5126, - "source": 1179, - "pc": [ - 5043 - ] - }, - { - "teal": 5127, - "source": 1179, - "pc": [ - 5044, - 5045, - 5046 - ] - }, - { - "teal": 5128, - "source": 1179, - "pc": [ - 5047, - 5048 - ] - }, - { - "teal": 5129, - "source": 1179, - "pc": [ - 5049, - 5050 - ] - }, - { - "teal": 5130, - "source": 1179, - "pc": [ - 5051 - ] - }, - { - "teal": 5131, - "source": 1179, - "pc": [ - 5052 - ] - }, - { - "teal": 5132, - "source": 1179, - "pc": [ - 5053 - ] - }, - { - "teal": 5133, - "source": 1179, - "pc": [ - 5054 - ] - }, - { - "teal": 5134, - "source": 1179, - "pc": [ - 5055 - ] - }, - { - "teal": 5135, - "source": 1179, - "pc": [ - 5056 - ] - }, - { - "teal": 5136, - "source": 1179, - "pc": [ - 5057 - ] - }, - { - "teal": 5137, - "source": 1179, - "pc": [ - 5058 - ] - }, - { - "teal": 5138, - "source": 1179, - "pc": [ - 5059 - ] - }, - { - "teal": 5139, - "source": 1179, - "pc": [ - 5060 - ] - }, - { - "teal": 5142, - "source": 1179, - "pc": [ - 5061, - 5062, - 5063 - ] - }, - { - "teal": 5147, - "source": 1180, - "pc": [ - 5064, - 5065 - ] - }, - { - "teal": 5148, - "source": 1180, - "pc": [ - 5066 - ] - }, - { - "teal": 5149, - "source": 1180, - "pc": [ - 5067 - ] - }, - { - "teal": 5150, - "source": 1180, - "pc": [ - 5068, - 5069 - ] - }, - { - "teal": 5157, - "source": 1174, - "pc": [ - 5070, - 5071 - ] - }, - { - "teal": 5158, - "source": 1174, - "pc": [ - 5072 - ] - }, - { - "teal": 5159, - "source": 1174, - "pc": [ - 5073 - ] - }, - { - "teal": 5160, - "source": 1174, - "pc": [ - 5074, - 5075 - ] - }, - { - "teal": 5161, - "source": 1174, - "pc": [ - 5076, - 5077, - 5078 - ] - }, - { - "teal": 5167, - "source": 1183, - "pc": [ - 5079, - 5080 - ] - }, - { - "teal": 5168, - "source": 1183, - "pc": [ - 5081 - ] - }, - { - "teal": 5169, - "source": 1183, - "pc": [ - 5082 - ] - }, - { - "teal": 5170, - "source": 1183, - "pc": [ - 5083, - 5084, - 5085 - ] - }, - { - "teal": 5174, - "source": 1184, - "errorMessage": "No empty slot available in the staker pool set", - "pc": [ - 5086 - ] - }, - { - "teal": 5179, - "source": 1186, - "pc": [ - 5087, - 5088 - ] - }, - { - "teal": 5180, - "source": 1186, - "pc": [ - 5089 - ] - }, - { - "teal": 5181, - "source": 1186, - "pc": [ - 5090 - ] - }, - { - "teal": 5182, - "source": 1186, - "pc": [ - 5091 - ] - }, - { - "teal": 5183, - "source": 1186, - "pc": [ - 5092 - ] - }, - { - "teal": 5184, - "source": 1186, - "pc": [ - 5093, - 5094 - ] - }, - { - "teal": 5185, - "source": 1186, - "pc": [ - 5095 - ] - }, - { - "teal": 5186, - "source": 1186, - "pc": [ - 5096, - 5097 - ] - }, - { - "teal": 5187, - "source": 1186, - "pc": [ - 5098 - ] - }, - { - "teal": 5188, - "source": 1186, - "pc": [ - 5099, - 5100 - ] - }, - { - "teal": 5189, - "source": 1186, - "pc": [ - 5101 - ] - }, - { - "teal": 5190, - "source": 1169, - "pc": [ - 5102 - ] - }, - { - "teal": 5201, - "source": 1197, - "pc": [ - 5103, - 5104, - 5105 - ] - }, - { - "teal": 5204, - "source": 1197, - "pc": [ - 5106 - ] - }, - { - "teal": 5205, - "source": 1197, - "pc": [ - 5107, - 5108 - ] - }, - { - "teal": 5209, - "source": 1199, - "pc": [ - 5109 - ] - }, - { - "teal": 5210, - "source": 1199, - "pc": [ - 5110, - 5111 - ] - }, - { - "teal": 5214, - "source": 1200, - "pc": [ - 5112 - ] - }, - { - "teal": 5215, - "source": 1200, - "pc": [ - 5113, - 5114 - ] - }, - { - "teal": 5219, - "source": 1201, - "pc": [ - 5115 - ] - }, - { - "teal": 5220, - "source": 1201, - "pc": [ - 5116, - 5117 - ] - }, - { - "teal": 5224, - "source": 1203, - "pc": [ - 5118 - ] - }, - { - "teal": 5225, - "source": 1203, - "pc": [ - 5119, - 5120 - ] - }, - { - "teal": 5226, - "source": 1203, - "pc": [ - 5121 - ] - }, - { - "teal": 5227, - "source": 1203, - "pc": [ - 5122 - ] - }, - { - "teal": 5230, - "source": 1203, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", - "pc": [ - 5123 - ] - }, - { - "teal": 5231, - "source": 1203, - "pc": [ - 5124, - 5125 - ] - }, - { - "teal": 5235, - "source": 1204, - "pc": [ - 5126 - ] - }, - { - "teal": 5236, - "source": 1204, - "pc": [ - 5127, - 5128 - ] - }, - { - "teal": 5241, - "source": 1204, - "pc": [ - 5129, - 5130 - ] - }, - { - "teal": 5242, - "source": 1204, - "pc": [ - 5131, - 5132 - ] - }, - { - "teal": 5243, - "source": 1204, - "pc": [ - 5133 - ] - }, - { - "teal": 5244, - "source": 1204, - "pc": [ - 5134, - 5135, - 5136 - ] - }, - { - "teal": 5249, - "source": 1205, - "pc": [ - 5137, - 5138 - ] - }, - { - "teal": 5250, - "source": 1205, - "pc": [ - 5139, - 5140 - ] - }, - { - "teal": 5251, - "source": 1205, - "pc": [ - 5141 - ] - }, - { - "teal": 5252, - "source": 1205, - "pc": [ - 5142 - ] - }, - { - "teal": 5253, - "source": 1205, - "pc": [ - 5143 - ] - }, - { - "teal": 5254, - "source": 1205, - "pc": [ - 5144 - ] - }, - { - "teal": 5255, - "source": 1205, - "pc": [ - 5145 - ] - }, - { - "teal": 5256, - "source": 1205, - "pc": [ - 5146 - ] - }, - { - "teal": 5257, - "source": 1205, - "pc": [ - 5147 - ] - }, - { - "teal": 5258, - "source": 1205, - "pc": [ - 5148 - ] - }, - { - "teal": 5259, - "source": 1205, - "pc": [ - 5149 - ] - }, - { - "teal": 5260, - "source": 1205, - "pc": [ - 5150, - 5151, - 5152 - ] - }, - { - "teal": 5263, - "source": 1206, - "pc": [ - 5153, - 5154, - 5155 - ] - }, - { - "teal": 5268, - "source": 1208, - "pc": [ - 5156, - 5157 - ] - }, - { - "teal": 5269, - "source": 1208, - "pc": [ - 5158 - ] - }, - { - "teal": 5270, - "source": 1208, - "pc": [ - 5159 - ] - }, - { - "teal": 5271, - "source": 1208, - "pc": [ - 5160, - 5161 - ] - }, - { - "teal": 5276, - "source": 1209, - "pc": [ - 5162, - 5163 - ] - }, - { - "teal": 5277, - "source": 1209, - "pc": [ - 5164, - 5165 - ] - }, - { - "teal": 5278, - "source": 1209, - "pc": [ - 5166 - ] - }, - { - "teal": 5279, - "source": 1209, - "pc": [ - 5167 - ] - }, - { - "teal": 5280, - "source": 1209, - "pc": [ - 5168 - ] - }, - { - "teal": 5281, - "source": 1209, - "pc": [ - 5169 - ] - }, - { - "teal": 5282, - "source": 1209, - "pc": [ - 5170 - ] - }, - { - "teal": 5283, - "source": 1209, - "pc": [ - 5171 - ] - }, - { - "teal": 5284, - "source": 1209, - "pc": [ - 5172 - ] - }, - { - "teal": 5285, - "source": 1209, - "pc": [ - 5173, - 5174 - ] - }, - { - "teal": 5286, - "source": 1209, - "pc": [ - 5175, - 5176, - 5177 - ] - }, - { - "teal": 5287, - "source": 1209, - "pc": [ - 5178 - ] - }, - { - "teal": 5288, - "source": 1209, - "pc": [ - 5179 - ] - }, - { - "teal": 5289, - "source": 1209, - "pc": [ - 5180, - 5181, - 5182 - ] - }, - { - "teal": 5295, - "source": 1210, - "pc": [ - 5183, - 5184 - ] - }, - { - "teal": 5296, - "source": 1210, - "pc": [ - 5185, - 5186 - ] - }, - { - "teal": 5297, - "source": 1210, - "pc": [ - 5187 - ] - }, - { - "teal": 5298, - "source": 1210, - "pc": [ - 5188 - ] - }, - { - "teal": 5299, - "source": 1210, - "pc": [ - 5189 - ] - }, - { - "teal": 5300, - "source": 1210, - "pc": [ - 5190 - ] - }, - { - "teal": 5301, - "source": 1210, - "pc": [ - 5191, - 5192 - ] - }, - { - "teal": 5302, - "source": 1210, - "pc": [ - 5193 - ] - }, - { - "teal": 5303, - "source": 1210, - "pc": [ - 5194, - 5195, - 5196 - ] - }, - { - "teal": 5308, - "source": 1211, - "pc": [ - 5197 - ] - }, - { - "teal": 5309, - "source": 1211, - "pc": [ - 5198, - 5199 - ] - }, - { - "teal": 5313, - "source": 1213, - "pc": [ - 5200, - 5201 - ] - }, - { - "teal": 5314, - "source": 1213, - "pc": [ - 5202 - ] - }, - { - "teal": 5315, - "source": 1213, - "pc": [ - 5203 - ] - }, - { - "teal": 5316, - "source": 1213, - "pc": [ - 5204, - 5205, - 5206, - 5207, - 5208, - 5209, - 5210, - 5211, - 5212, - 5213, - 5214, - 5215, - 5216, - 5217, - 5218, - 5219, - 5220, - 5221, - 5222, - 5223, - 5224, - 5225, - 5226, - 5227, - 5228, - 5229 - ] - }, - { - "teal": 5317, - "source": 1213, - "pc": [ - 5230 - ] - }, - { - "teal": 5318, - "source": 1213, - "pc": [ - 5231, - 5232 - ] - }, - { - "teal": 5319, - "source": 1213, - "pc": [ - 5233 - ] - }, - { - "teal": 5320, - "source": 1213, - "pc": [ - 5234, - 5235 - ] - }, - { - "teal": 5321, - "source": 1213, - "pc": [ - 5236 - ] - }, - { - "teal": 5322, - "source": 1210, - "pc": [ - 5237, - 5238, - 5239 - ] - }, - { - "teal": 5327, - "source": 1215, - "pc": [ - 5240, - 5241 - ] - }, - { - "teal": 5328, - "source": 1215, - "pc": [ - 5242 - ] - }, - { - "teal": 5329, - "source": 1215, - "pc": [ - 5243 - ] - }, - { - "teal": 5330, - "source": 1215, - "pc": [ - 5244, - 5245 - ] - }, - { - "teal": 5339, - "source": 1204, - "pc": [ - 5246, - 5247 - ] - }, - { - "teal": 5340, - "source": 1204, - "pc": [ - 5248 - ] - }, - { - "teal": 5341, - "source": 1204, - "pc": [ - 5249 - ] - }, - { - "teal": 5342, - "source": 1204, - "pc": [ - 5250, - 5251 - ] - }, - { - "teal": 5343, - "source": 1204, - "pc": [ - 5252, - 5253, - 5254 - ] - }, - { - "teal": 5349, - "source": 1219, - "pc": [ - 5255, - 5256 - ] - }, - { - "teal": 5350, - "source": 1219, - "pc": [ - 5257 - ] - }, - { - "teal": 5351, - "source": 1219, - "pc": [ - 5258, - 5259, - 5260 - ] - }, - { - "teal": 5355, - "source": 1220, - "errorMessage": "No matching slot found when told to remove a pool from the stakers set", - "pc": [ - 5261 - ] - }, - { - "teal": 5360, - "source": 1223, - "pc": [ - 5262, - 5263 - ] - }, - { - "teal": 5361, - "source": 1223, - "pc": [ - 5264 - ] - }, - { - "teal": 5362, - "source": 1223, - "pc": [ - 5265, - 5266 - ] - }, - { - "teal": 5363, - "source": 1223, - "pc": [ - 5267 - ] - }, - { - "teal": 5364, - "source": 1223, - "pc": [ - 5268 - ] - }, - { - "teal": 5365, - "source": 1223, - "pc": [ - 5269 - ] - }, - { - "teal": 5366, - "source": 1223, - "pc": [ - 5270 - ] - }, - { - "teal": 5367, - "source": 1223, - "pc": [ - 5271, - 5272 - ] - }, - { - "teal": 5368, - "source": 1223, - "pc": [ - 5273 - ] - }, - { - "teal": 5369, - "source": 1223, - "pc": [ - 5274 - ] - }, - { - "teal": 5370, - "source": 1223, - "pc": [ - 5275 - ] - }, - { - "teal": 5373, - "source": 1197, - "pc": [ - 5276, - 5277 - ] - }, - { - "teal": 5376, - "source": 1197, - "pc": [ - 5278, - 5279 - ] - }, - { - "teal": 5377, - "source": 1197, - "pc": [ - 5280 - ] - }, - { - "teal": 5381, - "source": 1226, - "pc": [ - 5281, - 5282, - 5283 - ] - }, - { - "teal": 5384, - "source": 1226, - "pc": [ - 5284 - ] - }, - { - "teal": 5385, - "source": 1226, - "pc": [ - 5285, - 5286 - ] - }, - { - "teal": 5389, - "source": 1227, - "pc": [ - 5287, - 5288 - ] - }, - { - "teal": 5390, - "source": 1227, - "pc": [ - 5289, - 5290 - ] - }, - { - "teal": 5391, - "source": 1227, - "pc": [ - 5291 - ] - }, - { - "teal": 5392, - "source": 1227, - "pc": [ - 5292, - 5293 - ] - }, - { - "teal": 5393, - "source": 1227, - "pc": [ - 5294 - ] - }, - { - "teal": 5394, - "source": 1227, - "pc": [ - 5295 - ] - }, - { - "teal": 5395, - "source": 1227, - "pc": [ - 5296, - 5297 - ] - }, - { - "teal": 5396, - "source": 1227, - "pc": [ - 5298 - ] - }, - { - "teal": 5397, - "source": 1227, - "pc": [ - 5299, - 5300 - ] - }, - { - "teal": 5401, - "source": 1228, - "pc": [ - 5301, - 5302, - 5303 - ] - }, - { - "teal": 5402, - "source": 1228, - "pc": [ - 5304 - ] - }, - { - "teal": 5403, - "source": 1228, - "pc": [ - 5305 - ] - }, - { - "teal": 5404, - "source": 1228, - "pc": [ - 5306, - 5307 - ] - }, - { - "teal": 5405, - "source": 1228, - "pc": [ - 5308 - ] - }, - { - "teal": 5406, - "source": 1228, - "pc": [ - 5309 - ] - }, - { - "teal": 5407, - "source": 1228, - "pc": [ - 5310, - 5311 - ] - }, - { - "teal": 5408, - "source": 1228, - "pc": [ - 5312 - ] - }, - { - "teal": 5409, - "source": 1228, - "pc": [ - 5313 - ] - }, - { - "teal": 5410, - "source": 1228, - "pc": [ - 5314, - 5315 - ] - }, - { - "teal": 5414, - "source": 1230, - "pc": [ - 5316, - 5317 - ] - }, - { - "teal": 5415, - "source": 1230, - "pc": [ - 5318 - ] - }, - { - "teal": 5416, - "source": 1230, - "pc": [ - 5319 - ] - }, - { - "teal": 5417, - "source": 1230, - "pc": [ - 5320 - ] - }, - { - "teal": 5418, - "source": 1230, - "pc": [ - 5321, - 5322, - 5323 - ] - }, - { - "teal": 5419, - "source": 1230, - "pc": [ - 5324, - 5325 - ] - }, - { - "teal": 5420, - "source": 1230, - "pc": [ - 5326 - ] - }, - { - "teal": 5421, - "source": 1230, - "pc": [ - 5327 - ] - }, - { - "teal": 5422, - "source": 1230, - "pc": [ - 5328 - ] - }, - { - "teal": 5426, - "source": 1230, - "errorMessage": "node number not in valid range", - "pc": [ - 5329 - ] - }, - { - "teal": 5430, - "source": 1232, - "pc": [ - 5330 - ] - }, - { - "teal": 5431, - "source": 1232, - "pc": [ - 5331, - 5332 - ] - }, - { - "teal": 5436, - "source": 1232, - "pc": [ - 5333, - 5334 - ] - }, - { - "teal": 5437, - "source": 1232, - "pc": [ - 5335, - 5336 - ] - }, - { - "teal": 5438, - "source": 1232, - "pc": [ - 5337 - ] - }, - { - "teal": 5439, - "source": 1232, - "pc": [ - 5338, - 5339, - 5340 - ] - }, - { - "teal": 5444, - "source": 1233, - "pc": [ - 5341, - 5342 - ] - }, - { - "teal": 5445, - "source": 1233, - "pc": [ - 5343 - ] - }, - { - "teal": 5446, - "source": 1233, - "pc": [ - 5344, - 5345 - ] - }, - { - "teal": 5447, - "source": 1233, - "pc": [ - 5346 - ] - }, - { - "teal": 5448, - "source": 1233, - "pc": [ - 5347 - ] - }, - { - "teal": 5449, - "source": 1233, - "pc": [ - 5348 - ] - }, - { - "teal": 5450, - "source": 1233, - "pc": [ - 5349 - ] - }, - { - "teal": 5451, - "source": 1233, - "pc": [ - 5350 - ] - }, - { - "teal": 5452, - "source": 1233, - "pc": [ - 5351 - ] - }, - { - "teal": 5453, - "source": 1233, - "pc": [ - 5352 - ] - }, - { - "teal": 5454, - "source": 1233, - "pc": [ - 5353, - 5354 - ] - }, - { - "teal": 5455, - "source": 1233, - "pc": [ - 5355 - ] - }, - { - "teal": 5456, - "source": 1233, - "pc": [ - 5356 - ] - }, - { - "teal": 5457, - "source": 1233, - "pc": [ - 5357 - ] - }, - { - "teal": 5458, - "source": 1233, - "pc": [ - 5358 - ] - }, - { - "teal": 5459, - "source": 1233, - "pc": [ - 5359 - ] - }, - { - "teal": 5460, - "source": 1233, - "pc": [ - 5360 - ] - }, - { - "teal": 5461, - "source": 1233, - "pc": [ - 5361 - ] - }, - { - "teal": 5462, - "source": 1233, - "pc": [ - 5362 - ] - }, - { - "teal": 5463, - "source": 1233, - "pc": [ - 5363, - 5364, - 5365 - ] - }, - { - "teal": 5468, - "source": 1235, - "pc": [ - 5366, - 5367 - ] - }, - { - "teal": 5469, - "source": 1235, - "pc": [ - 5368, - 5369 - ] - }, - { - "teal": 5470, - "source": 1235, - "pc": [ - 5370 - ] - }, - { - "teal": 5471, - "source": 1235, - "pc": [ - 5371 - ] - }, - { - "teal": 5472, - "source": 1235, - "pc": [ - 5372 - ] - }, - { - "teal": 5473, - "source": 1235, - "pc": [ - 5373 - ] - }, - { - "teal": 5474, - "source": 1235, - "pc": [ - 5374 - ] - }, - { - "teal": 5475, - "source": 1235, - "pc": [ - 5375 - ] - }, - { - "teal": 5476, - "source": 1235, - "pc": [ - 5376 - ] - }, - { - "teal": 5477, - "source": 1235, - "pc": [ - 5377, - 5378 - ] - }, - { - "teal": 5478, - "source": 1235, - "pc": [ - 5379 - ] - }, - { - "teal": 5479, - "source": 1235, - "pc": [ - 5380 - ] - }, - { - "teal": 5480, - "source": 1235, - "pc": [ - 5381 - ] - }, - { - "teal": 5481, - "source": 1235, - "pc": [ - 5382, - 5383 - ] - }, - { - "teal": 5482, - "source": 1235, - "pc": [ - 5384 - ] - }, - { - "teal": 5483, - "source": 1235, - "pc": [ - 5385 - ] - }, - { - "teal": 5484, - "source": 1235, - "pc": [ - 5386, - 5387 - ] - }, - { - "teal": 5485, - "source": 1235, - "pc": [ - 5388 - ] - }, - { - "teal": 5486, - "source": 1235, - "pc": [ - 5389 - ] - }, - { - "teal": 5487, - "source": 1235, - "pc": [ - 5390, - 5391 - ] - }, - { - "teal": 5488, - "source": 1235, - "pc": [ - 5392 - ] - }, - { - "teal": 5492, - "source": 1236, - "pc": [ - 5393 - ] - }, - { - "teal": 5499, - "source": 1232, - "pc": [ - 5394, - 5395 - ] - }, - { - "teal": 5500, - "source": 1232, - "pc": [ - 5396 - ] - }, - { - "teal": 5501, - "source": 1232, - "pc": [ - 5397 - ] - }, - { - "teal": 5502, - "source": 1232, - "pc": [ - 5398, - 5399 - ] - }, - { - "teal": 5503, - "source": 1232, - "pc": [ - 5400, - 5401, - 5402 - ] - }, - { - "teal": 5507, - "source": 1239, - "errorMessage": "no available space in specified node for this pool", - "pc": [ - 5403 - ] - }, - { - "teal": 5508, - "source": 1226, - "pc": [ - 5404 - ] - }, - { - "teal": 5518, - "source": 1249, - "pc": [ - 5405, - 5406, - 5407 - ] - }, - { - "teal": 5521, - "source": 1249, - "pc": [ - 5408 - ] - }, - { - "teal": 5522, - "source": 1249, - "pc": [ - 5409, - 5410 - ] - }, - { - "teal": 5526, - "source": 1250, - "pc": [ - 5411, - 5412 - ] - }, - { - "teal": 5527, - "source": 1250, - "pc": [ - 5413 - ] - }, - { - "teal": 5528, - "source": 1250, - "pc": [ - 5414 - ] - }, - { - "teal": 5529, - "source": 1250, - "pc": [ - 5415, - 5416 - ] - }, - { - "teal": 5530, - "source": 1250, - "pc": [ - 5417 - ] - }, - { - "teal": 5531, - "source": 1250, - "pc": [ - 5418 - ] - }, - { - "teal": 5532, - "source": 1250, - "pc": [ - 5419, - 5420 - ] - }, - { - "teal": 5533, - "source": 1250, - "pc": [ - 5421 - ] - }, - { - "teal": 5534, - "source": 1250, - "pc": [ - 5422 - ] - }, - { - "teal": 5535, - "source": 1250, - "pc": [ - 5423, - 5424 - ] - }, - { - "teal": 5540, - "source": 1251, - "pc": [ - 5425, - 5426 - ] - }, - { - "teal": 5541, - "source": 1251, - "pc": [ - 5427 - ] - }, - { - "teal": 5542, - "source": 1251, - "pc": [ - 5428 - ] - }, - { - "teal": 5543, - "source": 1251, - "pc": [ - 5429, - 5430, - 5431 - ] - }, - { - "teal": 5548, - "source": 1252, - "pc": [ - 5432 - ] - }, - { - "teal": 5553, - "source": 1254, - "pc": [ - 5433, - 5434 - ] - }, - { - "teal": 5554, - "source": 1254, - "pc": [ - 5435, - 5436 - ] - }, - { - "teal": 5558, - "source": 1255, - "pc": [ - 5437 - ] - }, - { - "teal": 5559, - "source": 1255, - "pc": [ - 5438, - 5439 - ] - }, - { - "teal": 5560, - "source": 1255, - "pc": [ - 5440 - ] - }, - { - "teal": 5561, - "source": 1255, - "pc": [ - 5441, - 5442 - ] - }, - { - "teal": 5562, - "source": 1255, - "pc": [ - 5443 - ] - }, - { - "teal": 5563, - "source": 1255, - "pc": [ - 5444 - ] - }, - { - "teal": 5564, - "source": 1255, - "pc": [ - 5445, - 5446 - ] - }, - { - "teal": 5565, - "source": 1255, - "pc": [ - 5447 - ] - }, - { - "teal": 5566, - "source": 1255, - "pc": [ - 5448, - 5449 - ] - }, - { - "teal": 5573, - "source": 1259, - "pc": [ - 5450, - 5451 - ] - }, - { - "teal": 5574, - "source": 1259, - "pc": [ - 5452 - ] - }, - { - "teal": 5575, - "source": 1259, - "pc": [ - 5453 - ] - }, - { - "teal": 5576, - "source": 1259, - "pc": [ - 5454 - ] - }, - { - "teal": 5577, - "source": 1259, - "pc": [ - 5455, - 5456, - 5457 - ] - }, - { - "teal": 5578, - "source": 1260, - "pc": [ - 5458, - 5459 - ] - }, - { - "teal": 5579, - "source": 1260, - "pc": [ - 5460, - 5461 - ] - }, - { - "teal": 5580, - "source": 1260, - "pc": [ - 5462 - ] - }, - { - "teal": 5581, - "source": 1259, - "pc": [ - 5463 - ] - }, - { - "teal": 5584, - "source": 1260, - "pc": [ - 5464 - ] - }, - { - "teal": 5585, - "source": 1260, - "pc": [ - 5465, - 5466, - 5467 - ] - }, - { - "teal": 5586, - "source": 1261, - "pc": [ - 5468, - 5469 - ] - }, - { - "teal": 5587, - "source": 1261, - "pc": [ - 5470, - 5471 - ] - }, - { - "teal": 5588, - "source": 1261, - "pc": [ - 5472 - ] - }, - { - "teal": 5589, - "source": 1260, - "pc": [ - 5473 - ] - }, - { - "teal": 5592, - "source": 1258, - "pc": [ - 5474, - 5475, - 5476 - ] - }, - { - "teal": 5597, - "source": 1263, - "pc": [ - 5477, - 5478 - ] - }, - { - "teal": 5598, - "source": 1263, - "pc": [ - 5479 - ] - }, - { - "teal": 5599, - "source": 1263, - "pc": [ - 5480 - ] - }, - { - "teal": 5600, - "source": 1263, - "pc": [ - 5481 - ] - }, - { - "teal": 5604, - "source": 1264, - "pc": [ - 5482, - 5483 - ] - }, - { - "teal": 5605, - "source": 1264, - "pc": [ - 5484 - ] - }, - { - "teal": 5606, - "source": 1264, - "pc": [ - 5485 - ] - }, - { - "teal": 5607, - "source": 1264, - "pc": [ - 5486, - 5487 - ] - }, - { - "teal": 5608, - "source": 1264, - "pc": [ - 5488 - ] - }, - { - "teal": 5609, - "source": 1264, - "pc": [ - 5489 - ] - }, - { - "teal": 5610, - "source": 1264, - "pc": [ - 5490, - 5491 - ] - }, - { - "teal": 5611, - "source": 1264, - "pc": [ - 5492 - ] - }, - { - "teal": 5612, - "source": 1264, - "pc": [ - 5493 - ] - }, - { - "teal": 5613, - "source": 1264, - "pc": [ - 5494, - 5495 - ] - }, - { - "teal": 5618, - "source": 1265, - "pc": [ - 5496, - 5497 - ] - }, - { - "teal": 5619, - "source": 1265, - "pc": [ - 5498 - ] - }, - { - "teal": 5620, - "source": 1265, - "pc": [ - 5499 - ] - }, - { - "teal": 5621, - "source": 1265, - "pc": [ - 5500, - 5501, - 5502 - ] - }, - { - "teal": 5626, - "source": 1266, - "pc": [ - 5503 - ] - }, - { - "teal": 5627, - "source": 1266, - "pc": [ - 5504, - 5505 - ] - }, - { - "teal": 5635, - "source": 1269, - "pc": [ - 5506, - 5507 - ] - }, - { - "teal": 5636, - "source": 1269, - "pc": [ - 5508, - 5509 - ] - }, - { - "teal": 5637, - "source": 1269, - "pc": [ - 5510, - 5511 - ] - }, - { - "teal": 5638, - "source": 1269, - "pc": [ - 5512 - ] - }, - { - "teal": 5639, - "source": 1269, - "pc": [ - 5513, - 5514 - ] - }, - { - "teal": 5640, - "source": 1269, - "pc": [ - 5515 - ] - }, - { - "teal": 5643, - "source": 1268, - "errorMessage": "must have required minimum balance of validator defined token to add stake", - "pc": [ - 5516 - ] - }, - { - "teal": 5649, - "source": 1273, - "pc": [ - 5517, - 5518 - ] - }, - { - "teal": 5650, - "source": 1273, - "pc": [ - 5519 - ] - }, - { - "teal": 5651, - "source": 1273, - "pc": [ - 5520 - ] - }, - { - "teal": 5652, - "source": 1273, - "pc": [ - 5521, - 5522, - 5523 - ] - }, - { - "teal": 5660, - "source": 1275, - "pc": [ - 5524, - 5525 - ] - }, - { - "teal": 5661, - "source": 1275, - "pc": [ - 5526, - 5527 - ] - }, - { - "teal": 5662, - "source": 1275, - "pc": [ - 5528 - ] - }, - { - "teal": 5663, - "source": 1275, - "pc": [ - 5529, - 5530 - ] - }, - { - "teal": 5664, - "source": 1275, - "pc": [ - 5531, - 5532, - 5533 - ] - }, - { - "teal": 5665, - "source": 1275, - "pc": [ - 5534 - ] - }, - { - "teal": 5668, - "source": 1274, - "errorMessage": "specified asset must be created by creator that the validator defined as a requirement to stake", - "pc": [ - 5535 - ] - }, - { - "teal": 5674, - "source": 1279, - "pc": [ - 5536, - 5537 - ] - }, - { - "teal": 5675, - "source": 1279, - "pc": [ - 5538, - 5539 - ] - }, - { - "teal": 5676, - "source": 1279, - "pc": [ - 5540 - ] - }, - { - "teal": 5677, - "source": 1279, - "pc": [ - 5541, - 5542, - 5543 - ] - }, - { - "teal": 5682, - "source": 1280, - "pc": [ - 5544 - ] - }, - { - "teal": 5683, - "source": 1280, - "pc": [ - 5545, - 5546 - ] - }, - { - "teal": 5687, - "source": 1281, - "pc": [ - 5547, - 5548 - ] - }, - { - "teal": 5688, - "source": 1281, - "pc": [ - 5549, - 5550, - 5551 - ] - }, - { - "teal": 5689, - "source": 1281, - "pc": [ - 5552 - ] - }, - { - "teal": 5690, - "source": 1281, - "pc": [ - 5553, - 5554 - ] - }, - { - "teal": 5691, - "source": 1281, - "pc": [ - 5555, - 5556, - 5557 - ] - }, - { - "teal": 5692, - "source": 1281, - "pc": [ - 5558 - ] - }, - { - "teal": 5693, - "source": 1281, - "pc": [ - 5559, - 5560 - ] - }, - { - "teal": 5694, - "source": 1281, - "pc": [ - 5561 - ] - }, - { - "teal": 5695, - "source": 1281, - "pc": [ - 5562, - 5563 - ] - }, - { - "teal": 5701, - "source": 1282, - "pc": [ - 5564, - 5565 - ] - }, - { - "teal": 5702, - "source": 1282, - "pc": [ - 5566, - 5567 - ] - }, - { - "teal": 5703, - "source": 1282, - "pc": [ - 5568 - ] - }, - { - "teal": 5704, - "source": 1282, - "pc": [ - 5569, - 5570, - 5571 - ] - }, - { - "teal": 5709, - "source": 1283, - "pc": [ - 5572 - ] - }, - { - "teal": 5710, - "source": 1283, - "pc": [ - 5573, - 5574 - ] - }, - { - "teal": 5711, - "source": 1284, - "pc": [ - 5575, - 5576, - 5577 - ] - }, - { - "teal": 5717, - "source": 1281, - "pc": [ - 5578, - 5579 - ] - }, - { - "teal": 5718, - "source": 1281, - "pc": [ - 5580 - ] - }, - { - "teal": 5719, - "source": 1281, - "pc": [ - 5581 - ] - }, - { - "teal": 5720, - "source": 1281, - "pc": [ - 5582 - ] - }, - { - "teal": 5721, - "source": 1281, - "pc": [ - 5583, - 5584 - ] - }, - { - "teal": 5722, - "source": 1281, - "pc": [ - 5585 - ] - }, - { - "teal": 5723, - "source": 1281, - "pc": [ - 5586, - 5587, - 5588 - ] - }, - { - "teal": 5724, - "source": 1281, - "pc": [ - 5589, - 5590 - ] - }, - { - "teal": 5725, - "source": 1281, - "pc": [ - 5591, - 5592 - ] - }, - { - "teal": 5726, - "source": 1281, - "pc": [ - 5593, - 5594 - ] - }, - { - "teal": 5727, - "source": 1281, - "pc": [ - 5595 - ] - }, - { - "teal": 5728, - "source": 1281, - "pc": [ - 5596 - ] - }, - { - "teal": 5729, - "source": 1281, - "pc": [ - 5597 - ] - }, - { - "teal": 5730, - "source": 1281, - "pc": [ - 5598, - 5599 - ] - }, - { - "teal": 5731, - "source": 1281, - "pc": [ - 5600, - 5601, - 5602 - ] - }, - { - "teal": 5736, - "source": 1287, - "pc": [ - 5603, - 5604 - ] - }, - { - "teal": 5739, - "source": 1287, - "errorMessage": "specified asset must be identical to the asset id defined as a requirement to stake", - "pc": [ - 5605 - ] - }, - { - "teal": 5745, - "source": 1289, - "pc": [ - 5606, - 5607 - ] - }, - { - "teal": 5746, - "source": 1289, - "pc": [ - 5608, - 5609 - ] - }, - { - "teal": 5747, - "source": 1289, - "pc": [ - 5610 - ] - }, - { - "teal": 5748, - "source": 1289, - "pc": [ - 5611, - 5612, - 5613 - ] - }, - { - "teal": 5756, - "source": 1293, - "pc": [ - 5614, - 5615 - ] - }, - { - "teal": 5757, - "source": 1293, - "pc": [ - 5616, - 5617 - ] - }, - { - "teal": 5758, - "source": 1293, - "pc": [ - 5618 - ] - }, - { - "teal": 5759, - "source": 1293, - "pc": [ - 5619, - 5620 - ] - }, - { - "teal": 5760, - "source": 1293, - "pc": [ - 5621, - 5622, - 5623 - ] - }, - { - "teal": 5761, - "source": 1293, - "pc": [ - 5624 - ] - }, - { - "teal": 5762, - "source": 1293, - "pc": [ - 5625, - 5626, - 5627 - ] - }, - { - "teal": 5765, - "source": 1292, - "errorMessage": "specified asset must be created by creator that is one of the linked addresses in an nfd", - "pc": [ - 5628 - ] - }, - { - "teal": 5771, - "source": 1297, - "pc": [ - 5629, - 5630 - ] - }, - { - "teal": 5772, - "source": 1297, - "pc": [ - 5631, - 5632 - ] - }, - { - "teal": 5773, - "source": 1297, - "pc": [ - 5633 - ] - }, - { - "teal": 5774, - "source": 1297, - "pc": [ - 5634, - 5635, - 5636 - ] - }, - { - "teal": 5779, - "source": 1299, - "pc": [ - 5637, - 5638 - ] - }, - { - "teal": 5780, - "source": 1299, - "pc": [ - 5639, - 5640 - ] - }, - { - "teal": 5784, - "source": 1300, - "pc": [ - 5641, - 5642 - ] - }, - { - "teal": 5785, - "source": 1300, - "pc": [ - 5643, - 5644, - 5645 - ] - }, - { - "teal": 5788, - "source": 1300, - "errorMessage": "provided NFD must be valid", - "pc": [ - 5646 - ] - }, - { - "teal": 5796, - "source": 1304, - "pc": [ - 5647, - 5648 - ] - }, - { - "teal": 5797, - "source": 1304, - "pc": [ - 5649, - 5650 - ] - }, - { - "teal": 5798, - "source": 1304, - "pc": [ - 5651 - ] - }, - { - "teal": 5801, - "source": 1304, - "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')", - "pc": [ - 5652 - ] - }, - { - "teal": 5802, - "source": 1305, - "pc": [ - 5653, - 5654 - ] - }, - { - "teal": 5803, - "source": 1304, - "pc": [ - 5655 - ] - }, - { - "teal": 5804, - "source": 1305, - "pc": [ - 5656 - ] - }, - { - "teal": 5805, - "source": 1305, - "pc": [ - 5657, - 5658, - 5659 - ] - }, - { - "teal": 5806, - "source": 1305, - "pc": [ - 5660, - 5661 - ] - }, - { - "teal": 5807, - "source": 1305, - "pc": [ - 5662, - 5663 - ] - }, - { - "teal": 5808, - "source": 1305, - "pc": [ - 5664, - 5665, - 5666 - ] - }, - { - "teal": 5809, - "source": 1305, - "pc": [ - 5667 - ] - }, - { - "teal": 5813, - "source": 1303, - "errorMessage": "provided nfd for entry isn't owned or linked to the staker", - "pc": [ - 5668 - ] - }, - { - "teal": 5821, - "source": 1311, - "pc": [ - 5669, - 5670 - ] - }, - { - "teal": 5822, - "source": 1311, - "pc": [ - 5671, - 5672, - 5673, - 5674, - 5675, - 5676, - 5677, - 5678, - 5679, - 5680, - 5681, - 5682, - 5683, - 5684, - 5685 - ] - }, - { - "teal": 5823, - "source": 1311, - "pc": [ - 5686 - ] - }, - { - "teal": 5826, - "source": 1311, - "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')", - "pc": [ - 5687 - ] - }, - { - "teal": 5827, - "source": 1311, - "pc": [ - 5688 - ] - }, - { - "teal": 5828, - "source": 1312, - "pc": [ - 5689, - 5690 - ] - }, - { - "teal": 5829, - "source": 1312, - "pc": [ - 5691, - 5692, - 5693 - ] - }, - { - "teal": 5830, - "source": 1312, - "pc": [ - 5694 - ] - }, - { - "teal": 5831, - "source": 1311, - "pc": [ - 5695 - ] - }, - { - "teal": 5834, - "source": 1310, - "errorMessage": "specified nfd must be a segment of the nfd the validator specified as a requirement", - "pc": [ - 5696 - ] - }, - { - "teal": 5837, - "source": 1249, - "pc": [ - 5697 - ] - }, - { - "teal": 5849, - "source": 1327, - "pc": [ - 5698, - 5699, - 5700 - ] - }, - { - "teal": 5852, - "source": 1327, - "pc": [ - 5701 - ] - }, - { - "teal": 5856, - "source": 1329, - "pc": [ - 5702, - 5703 - ] - }, - { - "teal": 5857, - "source": 1329, - "pc": [ - 5704, - 5705, - 5706, - 5707, - 5708, - 5709, - 5710, - 5711 - ] - }, - { - "teal": 5858, - "source": 1329, - "pc": [ - 5712 - ] - }, - { - "teal": 5861, - "source": 1329, - "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')", - "pc": [ - 5713 - ] - }, - { - "teal": 5862, - "source": 1329, - "pc": [ - 5714, - 5715 - ] - }, - { - "teal": 5870, - "source": 1331, - "pc": [ - 5716 - ] - }, - { - "teal": 5871, - "source": 1331, - "pc": [ - 5717, - 5718 - ] - }, - { - "teal": 5872, - "source": 1331, - "pc": [ - 5719, - 5720 - ] - }, - { - "teal": 5873, - "source": 1333, - "pc": [ - 5721, - 5722, - 5723, - 5724, - 5725, - 5726 - ] - }, - { - "teal": 5874, - "source": 1333, - "pc": [ - 5727, - 5728 - ] - }, - { - "teal": 5878, - "source": 1332, - "pc": [ - 5729, - 5730 - ] - }, - { - "teal": 5879, - "source": 1332, - "pc": [ - 5731, - 5732 - ] - }, - { - "teal": 5883, - "source": 1334, - "pc": [ - 5733, - 5734 - ] - }, - { - "teal": 5884, - "source": 1334, - "pc": [ - 5735 - ] - }, - { - "teal": 5885, - "source": 1334, - "pc": [ - 5736 - ] - }, - { - "teal": 5886, - "source": 1334, - "pc": [ - 5737 - ] - }, - { - "teal": 5887, - "source": 1334, - "pc": [ - 5738, - 5739, - 5740 - ] - }, - { - "teal": 5888, - "source": 1334, - "pc": [ - 5741 - ] - }, - { - "teal": 5889, - "source": 1334, - "pc": [ - 5742 - ] - }, - { - "teal": 5890, - "source": 1334, - "pc": [ - 5743, - 5744 - ] - }, - { - "teal": 5891, - "source": 1334, - "pc": [ - 5745, - 5746 - ] - }, - { - "teal": 5892, - "source": 1334, - "pc": [ - 5747 - ] - }, - { - "teal": 5893, - "source": 1334, - "pc": [ - 5748, - 5749 - ] - }, - { - "teal": 5896, - "source": 1331, - "pc": [ - 5750 - ] - }, - { - "teal": 5897, - "source": 1331, - "pc": [ - 5751, - 5752 - ] - }, - { - "teal": 5900, - "source": 1331, - "pc": [ - 5753 - ] - }, - { - "teal": 5901, - "source": 1331, - "pc": [ - 5754, - 5755 - ] - }, - { - "teal": 5902, - "source": 1331, - "pc": [ - 5756 - ] - }, - { - "teal": 5903, - "source": 1331, - "pc": [ - 5757 - ] - }, - { - "teal": 5904, - "source": 1331, - "pc": [ - 5758, - 5759 - ] - }, - { - "teal": 5905, - "source": 1331, - "pc": [ - 5760, - 5761, - 5762 - ] - }, - { - "teal": 5906, - "source": 1331, - "pc": [ - 5763 - ] - }, - { - "teal": 5907, - "source": 1331, - "pc": [ - 5764 - ] - }, - { - "teal": 5910, - "source": 1327, - "pc": [ - 5765, - 5766 - ] - }, - { - "teal": 5911, - "source": 1327, - "pc": [ - 5767 - ] - }, - { - "teal": 5922, - "source": 1346, - "pc": [ - 5768, - 5769, - 5770 - ] - }, - { - "teal": 5925, - "source": 1346, - "pc": [ - 5771 - ] - }, - { - "teal": 5926, - "source": 1346, - "pc": [ - 5772, - 5773 - ] - }, - { - "teal": 5933, - "source": 1347, - "pc": [ - 5774 - ] - }, - { - "teal": 5934, - "source": 1347, - "pc": [ - 5775, - 5776 - ] - }, - { - "teal": 5935, - "source": 1347, - "pc": [ - 5777, - 5778 - ] - }, - { - "teal": 5939, - "source": 1348, - "pc": [ - 5779, - 5780 - ] - }, - { - "teal": 5940, - "source": 1348, - "pc": [ - 5781, - 5782 - ] - }, - { - "teal": 5944, - "source": 1349, - "pc": [ - 5783, - 5784, - 5785, - 5786, - 5787, - 5788, - 5789, - 5790, - 5791, - 5792, - 5793, - 5794, - 5795, - 5796, - 5797 - ] - }, - { - "teal": 5945, - "source": 1349, - "pc": [ - 5798, - 5799 - ] - }, - { - "teal": 5946, - "source": 1349, - "pc": [ - 5800, - 5801, - 5802, - 5803, - 5804, - 5805, - 5806, - 5807, - 5808, - 5809, - 5810, - 5811, - 5812, - 5813, - 5814 - ] - }, - { - "teal": 5947, - "source": 1349, - "pc": [ - 5815, - 5816 - ] - }, - { - "teal": 5950, - "source": 1347, - "pc": [ - 5817 - ] - }, - { - "teal": 5951, - "source": 1347, - "pc": [ - 5818, - 5819 - ] - }, - { - "teal": 5954, - "source": 1347, - "pc": [ - 5820 - ] - }, - { - "teal": 5958, - "source": 1351, - "pc": [ - 5821, - 5822 - ] - }, - { - "teal": 5959, - "source": 1351, - "pc": [ - 5823, - 5824 - ] - }, - { - "teal": 5963, - "source": 1352, - "pc": [ - 5825 - ] - }, - { - "teal": 5964, - "source": 1352, - "pc": [ - 5826, - 5827 - ] - }, - { - "teal": 5969, - "source": 1352, - "pc": [ - 5828, - 5829 - ] - }, - { - "teal": 5970, - "source": 1352, - "pc": [ - 5830, - 5831 - ] - }, - { - "teal": 5971, - "source": 1352, - "pc": [ - 5832 - ] - }, - { - "teal": 5972, - "source": 1352, - "pc": [ - 5833 - ] - }, - { - "teal": 5973, - "source": 1352, - "pc": [ - 5834, - 5835, - 5836 - ] - }, - { - "teal": 5977, - "source": 1353, - "pc": [ - 5837, - 5838 - ] - }, - { - "teal": 5978, - "source": 1353, - "pc": [ - 5839, - 5840 - ] - }, - { - "teal": 5979, - "source": 1353, - "pc": [ - 5841, - 5842 - ] - }, - { - "teal": 5980, - "source": 1353, - "pc": [ - 5843 - ] - }, - { - "teal": 5981, - "source": 1353, - "pc": [ - 5844, - 5845 - ] - }, - { - "teal": 5986, - "source": 1354, - "pc": [ - 5846, - 5847 - ] - }, - { - "teal": 5987, - "source": 1354, - "pc": [ - 5848, - 5849 - ] - }, - { - "teal": 5988, - "source": 1354, - "pc": [ - 5850 - ] - }, - { - "teal": 5989, - "source": 1354, - "pc": [ - 5851 - ] - }, - { - "teal": 5990, - "source": 1354, - "pc": [ - 5852, - 5853, - 5854 - ] - }, - { - "teal": 5991, - "source": 1354, - "pc": [ - 5855, - 5856 - ] - }, - { - "teal": 5992, - "source": 1354, - "pc": [ - 5857, - 5858 - ] - }, - { - "teal": 5993, - "source": 1354, - "pc": [ - 5859 - ] - }, - { - "teal": 5994, - "source": 1354, - "pc": [ - 5860 - ] - }, - { - "teal": 5997, - "source": 1354, - "pc": [ - 5861, - 5862, - 5863 - ] - }, - { - "teal": 6002, - "source": 1355, - "pc": [ - 5864 - ] - }, - { - "teal": 6003, - "source": 1355, - "pc": [ - 5865, - 5866, - 5867 - ] - }, - { - "teal": 6010, - "source": 1352, - "pc": [ - 5868, - 5869 - ] - }, - { - "teal": 6011, - "source": 1352, - "pc": [ - 5870, - 5871 - ] - }, - { - "teal": 6012, - "source": 1352, - "pc": [ - 5872 - ] - }, - { - "teal": 6013, - "source": 1352, - "pc": [ - 5873, - 5874 - ] - }, - { - "teal": 6014, - "source": 1352, - "pc": [ - 5875, - 5876, - 5877 - ] - }, - { - "teal": 6019, - "source": 1358, - "pc": [ - 5878 - ] - }, - { - "teal": 6023, - "source": 1346, - "pc": [ - 5879, - 5880 - ] - }, - { - "teal": 6026, - "source": 1346, - "pc": [ - 5881, - 5882 - ] - }, - { - "teal": 6027, - "source": 1346, - "pc": [ - 5883 - ] - }, - { - "teal": 6035, - "source": 1366, - "pc": [ - 5884, - 5885, - 5886 - ] - }, - { - "teal": 6038, - "source": 1366, - "pc": [ - 5887 - ] - }, - { - "teal": 6042, - "source": 1367, - "pc": [ - 5888, - 5889, - 5890 - ] - }, - { - "teal": 6043, - "source": 1367, - "pc": [ - 5891, - 5892 - ] - }, - { - "teal": 6047, - "source": 1369, - "pc": [ - 5893, - 5894 - ] - }, - { - "teal": 6048, - "source": 1369, - "pc": [ - 5895, - 5896 - ] - }, - { - "teal": 6049, - "source": 1369, - "pc": [ - 5897 - ] - }, - { - "teal": 6050, - "source": 1369, - "pc": [ - 5898 - ] - }, - { - "teal": 6051, - "source": 1369, - "pc": [ - 5899, - 5900 - ] - }, - { - "teal": 6052, - "source": 1369, - "pc": [ - 5901 - ] - }, - { - "teal": 6053, - "source": 1369, - "pc": [ - 5902 - ] - }, - { - "teal": 6054, - "source": 1369, - "pc": [ - 5903 - ] - }, - { - "teal": 6055, - "source": 1369, - "pc": [ - 5904 - ] - }, - { - "teal": 6056, - "source": 1369, - "pc": [ - 5905 - ] - }, - { - "teal": 6059, - "source": 1369, - "errorMessage": "wideRatio failed", - "pc": [ - 5906 - ] - }, - { - "teal": 6062, - "source": 1366, - "pc": [ - 5907, - 5908 - ] - }, - { - "teal": 6063, - "source": 1366, - "pc": [ - 5909 - ] - }, - { - "teal": 6070, - "source": 1376, - "pc": [ - 5910, - 5911, - 5912 - ] - }, - { - "teal": 6073, - "source": 1376, - "pc": [ - 5913 - ] - }, - { - "teal": 6077, - "source": 1377, - "pc": [ - 5914, - 5915, - 5916 - ] - }, - { - "teal": 6078, - "source": 1377, - "pc": [ - 5917, - 5918 - ] - }, - { - "teal": 6082, - "source": 1379, - "pc": [ - 5919, - 5920 - ] - }, - { - "teal": 6083, - "source": 1379, - "pc": [ - 5921, - 5922, - 5923 - ] - }, - { - "teal": 6084, - "source": 1379, - "pc": [ - 5924 - ] - }, - { - "teal": 6085, - "source": 1379, - "pc": [ - 5925 - ] - }, - { - "teal": 6086, - "source": 1379, - "pc": [ - 5926, - 5927 - ] - }, - { - "teal": 6087, - "source": 1379, - "pc": [ - 5928 - ] - }, - { - "teal": 6088, - "source": 1379, - "pc": [ - 5929 - ] - }, - { - "teal": 6089, - "source": 1379, - "pc": [ - 5930 - ] - }, - { - "teal": 6090, - "source": 1379, - "pc": [ - 5931 - ] - }, - { - "teal": 6091, - "source": 1379, - "pc": [ - 5932 - ] - }, - { - "teal": 6094, - "source": 1379, - "errorMessage": "wideRatio failed", - "pc": [ - 5933 - ] - }, - { - "teal": 6097, - "source": 1376, - "pc": [ - 5934, - 5935 - ] - }, - { - "teal": 6098, - "source": 1376, - "pc": [ - 5936 - ] - }, - { - "teal": 6104, - "source": 1385, - "pc": [ - 5937, - 5938, - 5939 - ] - }, - { - "teal": 6108, - "source": 1386, - "pc": [ - 5940, - 5941 - ] - }, - { - "teal": 6109, - "source": 1385, - "pc": [ - 5942 - ] - }, - { - "teal": 6113, - "source": 1389, - "pc": [ - 5943, - 5944, - 5945 - ] - }, - { - "teal": 6117, - "source": 1390, - "pc": [ - 5946 - ] - }, - { - "teal": 6118, - "source": 1389, - "pc": [ - 5947 - ] - }, - { - "teal": 6122, - "source": 1393, - "pc": [ - 5948, - 5949, - 5950 - ] - }, - { - "teal": 6125, - "source": 1393, - "pc": [ - 5951 - ] - }, - { - "teal": 6129, - "source": 1402, - "pc": [ - 5952, - 5953 - ] - }, - { - "teal": 6130, - "source": 1402, - "pc": [ - 5954, - 5955 - ] - }, - { - "teal": 6134, - "source": 1403, - "pc": [ - 5956, - 5957 - ] - }, - { - "teal": 6135, - "source": 1403, - "pc": [ - 5958, - 5959 - ] - }, - { - "teal": 6136, - "source": 1403, - "pc": [ - 5960, - 5961 - ] - }, - { - "teal": 6137, - "source": 1403, - "pc": [ - 5962 - ] - }, - { - "teal": 6138, - "source": 1403, - "pc": [ - 5963 - ] - }, - { - "teal": 6139, - "source": 1403, - "pc": [ - 5964, - 5965 - ] - }, - { - "teal": 6143, - "source": 1404, - "pc": [ - 5966, - 5967 - ] - }, - { - "teal": 6144, - "source": 1404, - "pc": [ - 5968, - 5969 - ] - }, - { - "teal": 6145, - "source": 1404, - "pc": [ - 5970, - 5971 - ] - }, - { - "teal": 6146, - "source": 1404, - "pc": [ - 5972 - ] - }, - { - "teal": 6147, - "source": 1404, - "pc": [ - 5973 - ] - }, - { - "teal": 6148, - "source": 1404, - "pc": [ - 5974, - 5975 - ] - }, - { - "teal": 6152, - "source": 1405, - "pc": [ - 5976, - 5977 - ] - }, - { - "teal": 6153, - "source": 1405, - "pc": [ - 5978, - 5979 - ] - }, - { - "teal": 6154, - "source": 1405, - "pc": [ - 5980, - 5981 - ] - }, - { - "teal": 6155, - "source": 1405, - "pc": [ - 5982 - ] - }, - { - "teal": 6156, - "source": 1405, - "pc": [ - 5983 - ] - }, - { - "teal": 6157, - "source": 1405, - "pc": [ - 5984, - 5985 - ] - }, - { - "teal": 6161, - "source": 1406, - "pc": [ - 5986, - 5987 - ] - }, - { - "teal": 6162, - "source": 1406, - "pc": [ - 5988, - 5989 - ] - }, - { - "teal": 6163, - "source": 1406, - "pc": [ - 5990, - 5991 - ] - }, - { - "teal": 6164, - "source": 1406, - "pc": [ - 5992 - ] - }, - { - "teal": 6165, - "source": 1406, - "pc": [ - 5993 - ] - }, - { - "teal": 6166, - "source": 1406, - "pc": [ - 5994, - 5995 - ] - }, - { - "teal": 6170, - "source": 1407, - "pc": [ - 5996, - 5997 - ] - }, - { - "teal": 6171, - "source": 1407, - "pc": [ - 5998, - 5999 - ] - }, - { - "teal": 6172, - "source": 1407, - "pc": [ - 6000, - 6001 - ] - }, - { - "teal": 6173, - "source": 1407, - "pc": [ - 6002 - ] - }, - { - "teal": 6174, - "source": 1407, - "pc": [ - 6003 - ] - }, - { - "teal": 6175, - "source": 1407, - "pc": [ - 6004, - 6005 - ] - }, - { - "teal": 6179, - "source": 1408, - "pc": [ - 6006, - 6007 - ] - }, - { - "teal": 6180, - "source": 1408, - "pc": [ - 6008, - 6009 - ] - }, - { - "teal": 6181, - "source": 1408, - "pc": [ - 6010, - 6011 - ] - }, - { - "teal": 6182, - "source": 1408, - "pc": [ - 6012 - ] - }, - { - "teal": 6183, - "source": 1408, - "pc": [ - 6013 - ] - }, - { - "teal": 6184, - "source": 1408, - "pc": [ - 6014, - 6015 - ] - }, - { - "teal": 6188, - "source": 1409, - "pc": [ - 6016, - 6017 - ] - }, - { - "teal": 6189, - "source": 1409, - "pc": [ - 6018, - 6019 - ] - }, - { - "teal": 6190, - "source": 1409, - "pc": [ - 6020, - 6021 - ] - }, - { - "teal": 6191, - "source": 1409, - "pc": [ - 6022 - ] - }, - { - "teal": 6192, - "source": 1409, - "pc": [ - 6023 - ] - }, - { - "teal": 6193, - "source": 1409, - "pc": [ - 6024, - 6025 - ] - }, - { - "teal": 6197, - "source": 1410, - "pc": [ - 6026, - 6027 - ] - }, - { - "teal": 6200, - "source": 1393, - "pc": [ - 6028, - 6029 - ] - }, - { - "teal": 6201, - "source": 1393, - "pc": [ - 6030 - ] - }, - { - "teal": 6205, - "source": 1413, - "pc": [ - 6031, - 6032, - 6033 - ] - }, - { - "teal": 6209, - "source": 1417, - "pc": [ - 6034, - 6035, - 6036 - ] - }, - { - "teal": 6210, - "source": 1417, - "pc": [ - 6037, - 6038 - ] - }, - { - "teal": 6211, - "source": 1417, - "pc": [ - 6039, - 6040, - 6041 - ] - }, - { - "teal": 6212, - "source": 1417, - "pc": [ - 6042 - ] - }, - { - "teal": 6213, - "source": 1417, - "pc": [ - 6043 - ] - }, - { - "teal": 6214, - "source": 1413, - "pc": [ - 6044 - ] - }, - { - "teal": 6217, - "source": 50, - "pc": [ - 6045, - 6046, - 6047, - 6048, - 6049, - 6050 - ] - }, - { - "teal": 6218, - "source": 50, - "pc": [ - 6051, - 6052, - 6053 - ] - }, - { - "teal": 6219, - "source": 50, - "pc": [ - 6054, - 6055, - 6056, - 6057 - ] - }, - { - "teal": 6222, - "source": 50, - "errorMessage": "this contract does not implement the given ABI method for create NoOp", - "pc": [ - 6058 - ] - }, - { - "teal": 6225, - "source": 50, - "pc": [ - 6059, - 6060, - 6061, - 6062, - 6063, - 6064 - ] - }, - { - "teal": 6226, - "source": 50, - "pc": [ - 6065, - 6066, - 6067, - 6068, - 6069, - 6070 - ] - }, - { - "teal": 6227, - "source": 50, - "pc": [ - 6071, - 6072, - 6073, - 6074, - 6075, - 6076 - ] - }, - { - "teal": 6228, - "source": 50, - "pc": [ - 6077, - 6078, - 6079, - 6080, - 6081, - 6082 - ] - }, - { - "teal": 6229, - "source": 50, - "pc": [ - 6083, - 6084, - 6085, - 6086, - 6087, - 6088 - ] - }, - { - "teal": 6230, - "source": 50, - "pc": [ - 6089, - 6090, - 6091, - 6092, - 6093, - 6094 - ] - }, - { - "teal": 6231, - "source": 50, - "pc": [ - 6095, - 6096, - 6097, - 6098, - 6099, - 6100 - ] - }, - { - "teal": 6232, - "source": 50, - "pc": [ - 6101, - 6102, - 6103, - 6104, - 6105, - 6106 - ] - }, - { - "teal": 6233, - "source": 50, - "pc": [ - 6107, - 6108, - 6109, - 6110, - 6111, - 6112 - ] - }, - { - "teal": 6234, - "source": 50, - "pc": [ - 6113, - 6114, - 6115, - 6116, - 6117, - 6118 - ] - }, - { - "teal": 6235, - "source": 50, - "pc": [ - 6119, - 6120, - 6121, - 6122, - 6123, - 6124 - ] - }, - { - "teal": 6236, - "source": 50, - "pc": [ - 6125, - 6126, - 6127, - 6128, - 6129, - 6130 - ] - }, - { - "teal": 6237, - "source": 50, - "pc": [ - 6131, - 6132, - 6133, - 6134, - 6135, - 6136 - ] - }, - { - "teal": 6238, - "source": 50, - "pc": [ - 6137, - 6138, - 6139, - 6140, - 6141, - 6142 - ] - }, - { - "teal": 6239, - "source": 50, - "pc": [ - 6143, - 6144, - 6145, - 6146, - 6147, - 6148 - ] - }, - { - "teal": 6240, - "source": 50, - "pc": [ - 6149, - 6150, - 6151, - 6152, - 6153, - 6154 - ] - }, - { - "teal": 6241, - "source": 50, - "pc": [ - 6155, - 6156, - 6157, - 6158, - 6159, - 6160 - ] - }, - { - "teal": 6242, - "source": 50, - "pc": [ - 6161, - 6162, - 6163, - 6164, - 6165, - 6166 - ] - }, - { - "teal": 6243, - "source": 50, - "pc": [ - 6167, - 6168, - 6169, - 6170, - 6171, - 6172 - ] - }, - { - "teal": 6244, - "source": 50, - "pc": [ - 6173, - 6174, - 6175, - 6176, - 6177, - 6178 - ] - }, - { - "teal": 6245, - "source": 50, - "pc": [ - 6179, - 6180, - 6181, - 6182, - 6183, - 6184 - ] - }, - { - "teal": 6246, - "source": 50, - "pc": [ - 6185, - 6186, - 6187, - 6188, - 6189, - 6190 - ] - }, - { - "teal": 6247, - "source": 50, - "pc": [ - 6191, - 6192, - 6193, - 6194, - 6195, - 6196 - ] - }, - { - "teal": 6248, - "source": 50, - "pc": [ - 6197, - 6198, - 6199, - 6200, - 6201, - 6202 - ] - }, - { - "teal": 6249, - "source": 50, - "pc": [ - 6203, - 6204, - 6205, - 6206, - 6207, - 6208 - ] - }, - { - "teal": 6250, - "source": 50, - "pc": [ - 6209, - 6210, - 6211, - 6212, - 6213, - 6214 - ] - }, - { - "teal": 6251, - "source": 50, - "pc": [ - 6215, - 6216, - 6217, - 6218, - 6219, - 6220 - ] - }, - { - "teal": 6252, - "source": 50, - "pc": [ - 6221, - 6222, - 6223, - 6224, - 6225, - 6226 - ] - }, - { - "teal": 6253, - "source": 50, - "pc": [ - 6227, - 6228, - 6229, - 6230, - 6231, - 6232 - ] - }, - { - "teal": 6254, - "source": 50, - "pc": [ - 6233, - 6234, - 6235, - 6236, - 6237, - 6238 - ] - }, - { - "teal": 6255, - "source": 50, - "pc": [ - 6239, - 6240, - 6241, - 6242, - 6243, - 6244 - ] - }, - { - "teal": 6256, - "source": 50, - "pc": [ - 6245, - 6246, - 6247, - 6248, - 6249, - 6250 - ] - }, - { - "teal": 6257, - "source": 50, - "pc": [ - 6251, - 6252, - 6253, - 6254, - 6255, - 6256 - ] - }, - { - "teal": 6258, - "source": 50, - "pc": [ - 6257, - 6258, - 6259 - ] - }, - { - "teal": 6259, - "source": 50, - "pc": [ - 6260, - 6261, - 6262, - 6263, - 6264, - 6265, - 6266, - 6267, - 6268, - 6269, - 6270, - 6271, - 6272, - 6273, - 6274, - 6275, - 6276, - 6277, - 6278, - 6279, - 6280, - 6281, - 6282, - 6283, - 6284, - 6285, - 6286, - 6287, - 6288, - 6289, - 6290, - 6291, - 6292, - 6293, - 6294, - 6295, - 6296, - 6297, - 6298, - 6299, - 6300, - 6301, - 6302, - 6303, - 6304, - 6305, - 6306, - 6307, - 6308, - 6309, - 6310, - 6311, - 6312, - 6313, - 6314, - 6315, - 6316, - 6317, - 6318, - 6319, - 6320, - 6321, - 6322, - 6323, - 6324, - 6325, - 6326, - 6327 - ] - }, - { - "teal": 6262, - "source": 50, - "errorMessage": "this contract does not implement the given ABI method for call NoOp", - "pc": [ - 6328 - ] - } - ], - "clear": [] + "approval": { + "sourceInfo": [ + { + "teal": 15, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 1, + 2 + ] + }, + { + "teal": 16, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 3 + ] + }, + { + "teal": 17, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 4, + 5 + ] + }, + { + "teal": 18, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6 + ] + }, + { + "teal": 19, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 7, + 8 + ] + }, + { + "teal": 20, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 9 + ] + }, + { + "teal": 21, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35 + ] + }, + { + "teal": 25, + "source": "contracts/validatorRegistry.algo.ts:50", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 36 + ] + }, + { + "teal": 30, + "source": "contracts/validatorRegistry.algo.ts:81", + "pc": [ + 37, + 38, + 39 + ] + }, + { + "teal": 31, + "source": "contracts/validatorRegistry.algo.ts:81", + "pc": [ + 40 + ] + }, + { + "teal": 32, + "source": "contracts/validatorRegistry.algo.ts:81", + "pc": [ + 41 + ] + }, + { + "teal": 36, + "source": "contracts/validatorRegistry.algo.ts:81", + "pc": [ + 42, + 43, + 44 + ] + }, + { + "teal": 40, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 45, + 46 + ] + }, + { + "teal": 41, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 47 + ] + }, + { + "teal": 42, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 48, + 49 + ] + }, + { + "teal": 43, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 50 + ] + }, + { + "teal": 44, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 51, + 52 + ] + }, + { + "teal": 45, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 53 + ] + }, + { + "teal": 46, + "source": "contracts/validatorRegistry.algo.ts:82", + "pc": [ + 54 + ] + }, + { + "teal": 50, + "source": "contracts/validatorRegistry.algo.ts:83", + "pc": [ + 55, + 56 + ] + }, + { + "teal": 51, + "source": "contracts/validatorRegistry.algo.ts:83", + "pc": [ + 57 + ] + }, + { + "teal": 52, + "source": "contracts/validatorRegistry.algo.ts:83", + "pc": [ + 58 + ] + }, + { + "teal": 56, + "source": "contracts/validatorRegistry.algo.ts:84", + "pc": [ + 59, + 60 + ] + }, + { + "teal": 57, + "source": "contracts/validatorRegistry.algo.ts:84", + "pc": [ + 61 + ] + }, + { + "teal": 58, + "source": "contracts/validatorRegistry.algo.ts:84", + "pc": [ + 62 + ] + }, + { + "teal": 62, + "source": "contracts/validatorRegistry.algo.ts:85", + "pc": [ + 63, + 64 + ] + }, + { + "teal": 63, + "source": "contracts/validatorRegistry.algo.ts:85", + "pc": [ + 65 + ] + }, + { + "teal": 64, + "source": "contracts/validatorRegistry.algo.ts:85", + "pc": [ + 66 + ] + }, + { + "teal": 65, + "source": "contracts/validatorRegistry.algo.ts:81", + "pc": [ + 67 + ] + }, + { + "teal": 70, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 68, + 69, + 70 + ] + }, + { + "teal": 71, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 71 + ] + }, + { + "teal": 74, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 72, + 73, + 74 + ] + }, + { + "teal": 75, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 75 + ] + }, + { + "teal": 76, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 76 + ] + }, + { + "teal": 80, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 77, + 78, + 79 + ] + }, + { + "teal": 84, + "source": "contracts/validatorRegistry.algo.ts:90", + "pc": [ + 80, + 81 + ] + }, + { + "teal": 85, + "source": "contracts/validatorRegistry.algo.ts:90", + "pc": [ + 82, + 83 + ] + }, + { + "teal": 86, + "source": "contracts/validatorRegistry.algo.ts:90", + "pc": [ + 84 + ] + }, + { + "teal": 87, + "source": "contracts/validatorRegistry.algo.ts:90", + "pc": [ + 85 + ] + }, + { + "teal": 88, + "source": "contracts/validatorRegistry.algo.ts:88", + "pc": [ + 86 + ] + }, + { + "teal": 93, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 87, + 88, + 89 + ] + }, + { + "teal": 94, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 90, + 91, + 92 + ] + }, + { + "teal": 97, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 93, + 94, + 95 + ] + }, + { + "teal": 98, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 96 + ] + }, + { + "teal": 101, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 97, + 98, + 99 + ] + }, + { + "teal": 102, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 100 + ] + }, + { + "teal": 103, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 101 + ] + }, + { + "teal": 107, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 102, + 103, + 104 + ] + }, + { + "teal": 111, + "source": "contracts/validatorRegistry.algo.ts:94", + "pc": [ + 105, + 106 + ] + }, + { + "teal": 112, + "source": "contracts/validatorRegistry.algo.ts:94", + "pc": [ + 107 + ] + }, + { + "teal": 113, + "source": "contracts/validatorRegistry.algo.ts:94", + "pc": [ + 108 + ] + }, + { + "teal": 114, + "source": "contracts/validatorRegistry.algo.ts:94", + "pc": [ + 109 + ] + }, + { + "teal": 115, + "source": "contracts/validatorRegistry.algo.ts:94", + "pc": [ + 110 + ] + }, + { + "teal": 116, + "source": "contracts/validatorRegistry.algo.ts:94", + "pc": [ + 111 + ] + }, + { + "teal": 120, + "source": "contracts/validatorRegistry.algo.ts:95", + "pc": [ + 112, + 113 + ] + }, + { + "teal": 121, + "source": "contracts/validatorRegistry.algo.ts:95", + "pc": [ + 114, + 115 + ] + }, + { + "teal": 122, + "source": "contracts/validatorRegistry.algo.ts:95", + "pc": [ + 116, + 117 + ] + }, + { + "teal": 123, + "source": "contracts/validatorRegistry.algo.ts:95", + "pc": [ + 118 + ] + }, + { + "teal": 124, + "source": "contracts/validatorRegistry.algo.ts:93", + "pc": [ + 119 + ] + }, + { + "teal": 129, + "source": "contracts/validatorRegistry.algo.ts:98", + "pc": [ + 120, + 121, + 122 + ] + }, + { + "teal": 130, + "source": "contracts/validatorRegistry.algo.ts:98", + "pc": [ + 123 + ] + }, + { + "teal": 131, + "source": "contracts/validatorRegistry.algo.ts:98", + "pc": [ + 124 + ] + }, + { + "teal": 135, + "source": "contracts/validatorRegistry.algo.ts:98", + "pc": [ + 125, + 126, + 127 + ] + }, + { + "teal": 139, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 128, + 129 + ] + }, + { + "teal": 140, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 130 + ] + }, + { + "teal": 141, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 131, + 132 + ] + }, + { + "teal": 142, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 133 + ] + }, + { + "teal": 143, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 134, + 135 + ] + }, + { + "teal": 144, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 136 + ] + }, + { + "teal": 145, + "source": "contracts/validatorRegistry.algo.ts:99", + "pc": [ + 137 + ] + }, + { + "teal": 146, + "source": "contracts/validatorRegistry.algo.ts:98", + "pc": [ + 138 + ] + }, + { + "teal": 151, + "source": "contracts/validatorRegistry.algo.ts:105", + "pc": [ + 139, + 140, + 141 + ] + }, + { + "teal": 152, + "source": "contracts/validatorRegistry.algo.ts:105", + "pc": [ + 142 + ] + }, + { + "teal": 153, + "source": "contracts/validatorRegistry.algo.ts:105", + "pc": [ + 143 + ] + }, + { + "teal": 159, + "source": "contracts/validatorRegistry.algo.ts:105", + "pc": [ + 144, + 145, + 146 + ] + }, + { + "teal": 160, + "source": "contracts/validatorRegistry.algo.ts:105", + "pc": [ + 147 + ] + }, + { + "teal": 165, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 148 + ] + }, + { + "teal": 168, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 149, + 150, + 151 + ] + }, + { + "teal": 169, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 152 + ] + }, + { + "teal": 170, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 153 + ] + }, + { + "teal": 171, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 154 + ] + }, + { + "teal": 172, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 155 + ] + }, + { + "teal": 184, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 156, + 157, + 158 + ] + }, + { + "teal": 209, + "source": "contracts/validatorRegistry.algo.ts:121", + "pc": [ + 159, + 160, + 161 + ] + }, + { + "teal": 210, + "source": "contracts/validatorRegistry.algo.ts:121", + "pc": [ + 162, + 163, + 164 + ] + }, + { + "teal": 211, + "source": "contracts/validatorRegistry.algo.ts:121", + "pc": [ + 165 + ] + }, + { + "teal": 212, + "source": "contracts/validatorRegistry.algo.ts:131", + "pc": [ + 166, + 167 + ] + }, + { + "teal": 213, + "source": "contracts/validatorRegistry.algo.ts:130", + "pc": [ + 168, + 169 + ] + }, + { + "teal": 214, + "source": "contracts/validatorRegistry.algo.ts:129", + "pc": [ + 170 + ] + }, + { + "teal": 215, + "source": "contracts/validatorRegistry.algo.ts:129", + "pc": [ + 171, + 172 + ] + }, + { + "teal": 216, + "source": "contracts/validatorRegistry.algo.ts:126", + "pc": [ + 173, + 174 + ] + }, + { + "teal": 217, + "source": "contracts/validatorRegistry.algo.ts:123", + "pc": [ + 175 + ] + }, + { + "teal": 218, + "source": "contracts/validatorRegistry.algo.ts:122", + "pc": [ + 176, + 177, + 178 + ] + }, + { + "teal": 219, + "source": "contracts/validatorRegistry.algo.ts:122", + "pc": [ + 179 + ] + }, + { + "teal": 220, + "source": "contracts/validatorRegistry.algo.ts:122", + "pc": [ + 180 + ] + }, + { + "teal": 221, + "source": "contracts/validatorRegistry.algo.ts:134", + "pc": [ + 181, + 182 + ] + }, + { + "teal": 222, + "source": "contracts/validatorRegistry.algo.ts:135", + "pc": [ + 183, + 184, + 185 + ] + }, + { + "teal": 223, + "source": "contracts/validatorRegistry.algo.ts:135", + "pc": [ + 186, + 187, + 188 + ] + }, + { + "teal": 224, + "source": "contracts/validatorRegistry.algo.ts:134", + "pc": [ + 189 + ] + }, + { + "teal": 225, + "source": "contracts/validatorRegistry.algo.ts:134", + "pc": [ + 190 + ] + }, + { + "teal": 226, + "source": "contracts/validatorRegistry.algo.ts:134", + "pc": [ + 191 + ] + }, + { + "teal": 227, + "source": "contracts/validatorRegistry.algo.ts:139", + "pc": [ + 192, + 193, + 194 + ] + }, + { + "teal": 228, + "source": "contracts/validatorRegistry.algo.ts:138", + "pc": [ + 195, + 196, + 197 + ] + }, + { + "teal": 229, + "source": "contracts/validatorRegistry.algo.ts:138", + "pc": [ + 198 + ] + }, + { + "teal": 230, + "source": "contracts/validatorRegistry.algo.ts:138", + "pc": [ + 199 + ] + }, + { + "teal": 231, + "source": "contracts/validatorRegistry.algo.ts:116", + "pc": [ + 200 + ] + }, + { + "teal": 236, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 201 + ] + }, + { + "teal": 239, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 202, + 203, + 204 + ] + }, + { + "teal": 240, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 205 + ] + }, + { + "teal": 241, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 206 + ] + }, + { + "teal": 242, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 207 + ] + }, + { + "teal": 243, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 208 + ] + }, + { + "teal": 249, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 209, + 210, + 211 + ] + }, + { + "teal": 265, + "source": "contracts/validatorRegistry.algo.ts:154", + "pc": [ + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253 + ] + }, + { + "teal": 266, + "source": "contracts/validatorRegistry.algo.ts:155", + "pc": [ + 254, + 255, + 256 + ] + }, + { + "teal": 267, + "source": "contracts/validatorRegistry.algo.ts:155", + "pc": [ + 257 + ] + }, + { + "teal": 268, + "source": "contracts/validatorRegistry.algo.ts:155", + "pc": [ + 258 + ] + }, + { + "teal": 269, + "source": "contracts/validatorRegistry.algo.ts:156", + "pc": [ + 259, + 260, + 261 + ] + }, + { + "teal": 270, + "source": "contracts/validatorRegistry.algo.ts:156", + "pc": [ + 262 + ] + }, + { + "teal": 271, + "source": "contracts/validatorRegistry.algo.ts:156", + "pc": [ + 263 + ] + }, + { + "teal": 272, + "source": "contracts/validatorRegistry.algo.ts:157", + "pc": [ + 264, + 265, + 266 + ] + }, + { + "teal": 273, + "source": "contracts/validatorRegistry.algo.ts:157", + "pc": [ + 267 + ] + }, + { + "teal": 274, + "source": "contracts/validatorRegistry.algo.ts:157", + "pc": [ + 268 + ] + }, + { + "teal": 275, + "source": "contracts/validatorRegistry.algo.ts:158", + "pc": [ + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278 + ] + }, + { + "teal": 276, + "source": "contracts/validatorRegistry.algo.ts:158", + "pc": [ + 279 + ] + }, + { + "teal": 277, + "source": "contracts/validatorRegistry.algo.ts:159", + "pc": [ + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289 + ] + }, + { + "teal": 278, + "source": "contracts/validatorRegistry.algo.ts:159", + "pc": [ + 290 + ] + }, + { + "teal": 279, + "source": "contracts/validatorRegistry.algo.ts:160", + "pc": [ + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300 + ] + }, + { + "teal": 280, + "source": "contracts/validatorRegistry.algo.ts:160", + "pc": [ + 301 + ] + }, + { + "teal": 281, + "source": "contracts/validatorRegistry.algo.ts:147", + "pc": [ + 302 + ] + }, + { + "teal": 286, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 303 + ] + }, + { + "teal": 289, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 304, + 305, + 306 + ] + }, + { + "teal": 290, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 307 + ] + }, + { + "teal": 291, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 308 + ] + }, + { + "teal": 292, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 309 + ] + }, + { + "teal": 293, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 310 + ] + }, + { + "teal": 294, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 311 + ] + }, + { + "teal": 300, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 312, + 313, + 314 + ] + }, + { + "teal": 304, + "source": "contracts/validatorRegistry.algo.ts:169", + "pc": [ + 315, + 316 + ] + }, + { + "teal": 305, + "source": "contracts/validatorRegistry.algo.ts:169", + "pc": [ + 317 + ] + }, + { + "teal": 306, + "source": "contracts/validatorRegistry.algo.ts:167", + "pc": [ + 318 + ] + }, + { + "teal": 311, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 319 + ] + }, + { + "teal": 314, + "source": "contracts/validatorRegistry.algo.ts:173", + "pc": [ + 320, + 321, + 322 + ] + }, + { + "teal": 315, + "source": "contracts/validatorRegistry.algo.ts:173", + "pc": [ + 323 + ] + }, + { + "teal": 318, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 324, + 325, + 326 + ] + }, + { + "teal": 319, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 327 + ] + }, + { + "teal": 320, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 328 + ] + }, + { + "teal": 321, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 329 + ] + }, + { + "teal": 322, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 330 + ] + }, + { + "teal": 326, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 331, + 332, + 333 + ] + }, + { + "teal": 330, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 334 + ] + }, + { + "teal": 331, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 335, + 336 + ] + }, + { + "teal": 332, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 337 + ] + }, + { + "teal": 333, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 338, + 339 + ] + }, + { + "teal": 334, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 340 + ] + }, + { + "teal": 335, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 341 + ] + }, + { + "teal": 336, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 342, + 343 + ] + }, + { + "teal": 337, + "source": "contracts/validatorRegistry.algo.ts:174", + "pc": [ + 344 + ] + }, + { + "teal": 338, + "source": "contracts/validatorRegistry.algo.ts:172", + "pc": [ + 345 + ] + }, + { + "teal": 343, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 346 + ] + }, + { + "teal": 346, + "source": "contracts/validatorRegistry.algo.ts:178", + "pc": [ + 347, + 348, + 349 + ] + }, + { + "teal": 347, + "source": "contracts/validatorRegistry.algo.ts:178", + "pc": [ + 350 + ] + }, + { + "teal": 350, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 351, + 352, + 353 + ] + }, + { + "teal": 351, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 354 + ] + }, + { + "teal": 352, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 355 + ] + }, + { + "teal": 353, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 356 + ] + }, + { + "teal": 354, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 357 + ] + }, + { + "teal": 358, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 358, + 359, + 360 + ] + }, + { + "teal": 362, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 361, + 362 + ] + }, + { + "teal": 363, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 363, + 364 + ] + }, + { + "teal": 364, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 365 + ] + }, + { + "teal": 365, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 366, + 367 + ] + }, + { + "teal": 366, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 368 + ] + }, + { + "teal": 367, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 369 + ] + }, + { + "teal": 368, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 370, + 371 + ] + }, + { + "teal": 369, + "source": "contracts/validatorRegistry.algo.ts:179", + "pc": [ + 372 + ] + }, + { + "teal": 370, + "source": "contracts/validatorRegistry.algo.ts:177", + "pc": [ + 373 + ] + }, + { + "teal": 375, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 374 + ] + }, + { + "teal": 378, + "source": "contracts/validatorRegistry.algo.ts:183", + "pc": [ + 375, + 376, + 377 + ] + }, + { + "teal": 379, + "source": "contracts/validatorRegistry.algo.ts:183", + "pc": [ + 378 + ] + }, + { + "teal": 382, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 379, + 380, + 381 + ] + }, + { + "teal": 383, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 382 + ] + }, + { + "teal": 384, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 383 + ] + }, + { + "teal": 385, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 384 + ] + }, + { + "teal": 386, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 385 + ] + }, + { + "teal": 390, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 386, + 387, + 388 + ] + }, + { + "teal": 397, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 389 + ] + }, + { + "teal": 398, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 390, + 391 + ] + }, + { + "teal": 399, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 392 + ] + }, + { + "teal": 400, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 393, + 394 + ] + }, + { + "teal": 401, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 395 + ] + }, + { + "teal": 402, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 396 + ] + }, + { + "teal": 403, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 397, + 398 + ] + }, + { + "teal": 404, + "source": "contracts/validatorRegistry.algo.ts:185", + "pc": [ + 399 + ] + }, + { + "teal": 405, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 400, + 401 + ] + }, + { + "teal": 406, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 402, + 403 + ] + }, + { + "teal": 407, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 404 + ] + }, + { + "teal": 408, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 405, + 406 + ] + }, + { + "teal": 409, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 407 + ] + }, + { + "teal": 410, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 408 + ] + }, + { + "teal": 411, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 409, + 410 + ] + }, + { + "teal": 412, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 411 + ] + }, + { + "teal": 413, + "source": "contracts/validatorRegistry.algo.ts:186", + "pc": [ + 412 + ] + }, + { + "teal": 414, + "source": "contracts/validatorRegistry.algo.ts:182", + "pc": [ + 413 + ] + }, + { + "teal": 419, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 414 + ] + }, + { + "teal": 422, + "source": "contracts/validatorRegistry.algo.ts:197", + "pc": [ + 415, + 416, + 417 + ] + }, + { + "teal": 423, + "source": "contracts/validatorRegistry.algo.ts:197", + "pc": [ + 418 + ] + }, + { + "teal": 426, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 419, + 420, + 421 + ] + }, + { + "teal": 427, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 422 + ] + }, + { + "teal": 428, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 423 + ] + }, + { + "teal": 429, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 424, + 425 + ] + }, + { + "teal": 430, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 426 + ] + }, + { + "teal": 431, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 427 + ] + }, + { + "teal": 432, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 428, + 429, + 430 + ] + }, + { + "teal": 433, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 431 + ] + }, + { + "teal": 434, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 432 + ] + }, + { + "teal": 435, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 433 + ] + }, + { + "teal": 436, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 434 + ] + }, + { + "teal": 437, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 435 + ] + }, + { + "teal": 438, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 436 + ] + }, + { + "teal": 447, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 437, + 438, + 439 + ] + }, + { + "teal": 450, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 440 + ] + }, + { + "teal": 451, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 441, + 442 + ] + }, + { + "teal": 455, + "source": "contracts/validatorRegistry.algo.ts:198", + "pc": [ + 443 + ] + }, + { + "teal": 456, + "source": "contracts/validatorRegistry.algo.ts:198", + "pc": [ + 444, + 445 + ] + }, + { + "teal": 460, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 446, + 447 + ] + }, + { + "teal": 461, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 448, + 449 + ] + }, + { + "teal": 462, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 450 + ] + }, + { + "teal": 463, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 451, + 452 + ] + }, + { + "teal": 464, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 453 + ] + }, + { + "teal": 465, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 454 + ] + }, + { + "teal": 466, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 455, + 456 + ] + }, + { + "teal": 467, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 457 + ] + }, + { + "teal": 468, + "source": "contracts/validatorRegistry.algo.ts:199", + "pc": [ + 458, + 459 + ] + }, + { + "teal": 472, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 460 + ] + }, + { + "teal": 473, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 461, + 462 + ] + }, + { + "teal": 478, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 463, + 464 + ] + }, + { + "teal": 479, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 465 + ] + }, + { + "teal": 480, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 466 + ] + }, + { + "teal": 481, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 467, + 468, + 469 + ] + }, + { + "teal": 486, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 470, + 471 + ] + }, + { + "teal": 487, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 472, + 473 + ] + }, + { + "teal": 488, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 474, + 475 + ] + }, + { + "teal": 489, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 476 + ] + }, + { + "teal": 490, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 477 + ] + }, + { + "teal": 491, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 478 + ] + }, + { + "teal": 492, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 479 + ] + }, + { + "teal": 493, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 480 + ] + }, + { + "teal": 494, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 481 + ] + }, + { + "teal": 495, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 482 + ] + }, + { + "teal": 496, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 483 + ] + }, + { + "teal": 497, + "source": "contracts/validatorRegistry.algo.ts:201", + "pc": [ + 484, + 485, + 486 + ] + }, + { + "teal": 500, + "source": "contracts/validatorRegistry.algo.ts:203", + "pc": [ + 487, + 488, + 489 + ] + }, + { + "teal": 505, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 490, + 491 + ] + }, + { + "teal": 506, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 492, + 493 + ] + }, + { + "teal": 507, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 494, + 495 + ] + }, + { + "teal": 508, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 496, + 497 + ] + }, + { + "teal": 509, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 498 + ] + }, + { + "teal": 510, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 499, + 500 + ] + }, + { + "teal": 511, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 501 + ] + }, + { + "teal": 512, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 502 + ] + }, + { + "teal": 513, + "source": "contracts/validatorRegistry.algo.ts:205", + "pc": [ + 503, + 504 + ] + }, + { + "teal": 518, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 505, + 506 + ] + }, + { + "teal": 519, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 507 + ] + }, + { + "teal": 520, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 508 + ] + }, + { + "teal": 521, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 509, + 510 + ] + }, + { + "teal": 522, + "source": "contracts/validatorRegistry.algo.ts:200", + "pc": [ + 511, + 512, + 513 + ] + }, + { + "teal": 527, + "source": "contracts/validatorRegistry.algo.ts:207", + "pc": [ + 514, + 515 + ] + }, + { + "teal": 530, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 516, + 517 + ] + }, + { + "teal": 533, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 518, + 519 + ] + }, + { + "teal": 534, + "source": "contracts/validatorRegistry.algo.ts:196", + "pc": [ + 520 + ] + }, + { + "teal": 539, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 521 + ] + }, + { + "teal": 542, + "source": "contracts/validatorRegistry.algo.ts:216", + "pc": [ + 522, + 523, + 524 + ] + }, + { + "teal": 543, + "source": "contracts/validatorRegistry.algo.ts:216", + "pc": [ + 525 + ] + }, + { + "teal": 546, + "source": "contracts/validatorRegistry.algo.ts:216", + "pc": [ + 526, + 527, + 528 + ] + }, + { + "teal": 547, + "source": "contracts/validatorRegistry.algo.ts:216", + "pc": [ + 529 + ] + }, + { + "teal": 550, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 530, + 531, + 532 + ] + }, + { + "teal": 551, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 533 + ] + }, + { + "teal": 552, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 534 + ] + }, + { + "teal": 553, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 535 + ] + }, + { + "teal": 554, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 536 + ] + }, + { + "teal": 555, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 537 + ] + }, + { + "teal": 563, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 538, + 539, + 540 + ] + }, + { + "teal": 570, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 541, + 542 + ] + }, + { + "teal": 571, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 543 + ] + }, + { + "teal": 572, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 544 + ] + }, + { + "teal": 573, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 545 + ] + }, + { + "teal": 574, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 546, + 547, + 548 + ] + }, + { + "teal": 575, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 549, + 550 + ] + }, + { + "teal": 576, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 551 + ] + }, + { + "teal": 577, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 552 + ] + }, + { + "teal": 578, + "source": "contracts/validatorRegistry.algo.ts:218", + "pc": [ + 553 + ] + }, + { + "teal": 582, + "source": "contracts/validatorRegistry.algo.ts:217", + "errorMessage": "pool id must be between 1 and number of pools for this validator", + "pc": [ + 554 + ] + }, + { + "teal": 586, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 555, + 556 + ] + }, + { + "teal": 587, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 557, + 558 + ] + }, + { + "teal": 588, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 559 + ] + }, + { + "teal": 589, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 560 + ] + }, + { + "teal": 590, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 561, + 562 + ] + }, + { + "teal": 591, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 563 + ] + }, + { + "teal": 592, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 564 + ] + }, + { + "teal": 593, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 565 + ] + }, + { + "teal": 594, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 566 + ] + }, + { + "teal": 595, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 567 + ] + }, + { + "teal": 596, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 568 + ] + }, + { + "teal": 597, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 569, + 570 + ] + }, + { + "teal": 598, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 571 + ] + }, + { + "teal": 599, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 572 + ] + }, + { + "teal": 600, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 573, + 574 + ] + }, + { + "teal": 601, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 575 + ] + }, + { + "teal": 602, + "source": "contracts/validatorRegistry.algo.ts:221", + "pc": [ + 576 + ] + }, + { + "teal": 603, + "source": "contracts/validatorRegistry.algo.ts:215", + "pc": [ + 577 + ] + }, + { + "teal": 608, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 578 + ] + }, + { + "teal": 611, + "source": "contracts/validatorRegistry.algo.ts:225", + "pc": [ + 579, + 580, + 581 + ] + }, + { + "teal": 612, + "source": "contracts/validatorRegistry.algo.ts:225", + "pc": [ + 582 + ] + }, + { + "teal": 613, + "source": "contracts/validatorRegistry.algo.ts:225", + "pc": [ + 583 + ] + }, + { + "teal": 614, + "source": "contracts/validatorRegistry.algo.ts:225", + "pc": [ + 584 + ] + }, + { + "teal": 615, + "source": "contracts/validatorRegistry.algo.ts:225", + "pc": [ + 585 + ] + }, + { + "teal": 618, + "source": "contracts/validatorRegistry.algo.ts:225", + "errorMessage": "argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)", + "pc": [ + 586 + ] + }, + { + "teal": 621, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 587, + 588, + 589 + ] + }, + { + "teal": 622, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 590 + ] + }, + { + "teal": 623, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 591 + ] + }, + { + "teal": 624, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 592 + ] + }, + { + "teal": 625, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 593 + ] + }, + { + "teal": 629, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 594, + 595, + 596 + ] + }, + { + "teal": 633, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 597, + 598 + ] + }, + { + "teal": 634, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 599, + 600 + ] + }, + { + "teal": 635, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 601, + 602, + 603 + ] + }, + { + "teal": 636, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 604 + ] + }, + { + "teal": 637, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 605 + ] + }, + { + "teal": 638, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 606 + ] + }, + { + "teal": 639, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 607, + 608 + ] + }, + { + "teal": 640, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 609 + ] + }, + { + "teal": 641, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 610 + ] + }, + { + "teal": 642, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 611, + 612 + ] + }, + { + "teal": 643, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 613 + ] + }, + { + "teal": 644, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 614, + 615 + ] + }, + { + "teal": 645, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 616, + 617, + 618 + ] + }, + { + "teal": 646, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 619 + ] + }, + { + "teal": 647, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 620 + ] + }, + { + "teal": 648, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 621 + ] + }, + { + "teal": 649, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 622, + 623 + ] + }, + { + "teal": 650, + "source": "contracts/validatorRegistry.algo.ts:226", + "pc": [ + 624 + ] + }, + { + "teal": 651, + "source": "contracts/validatorRegistry.algo.ts:224", + "pc": [ + 625 + ] + }, + { + "teal": 656, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 626 + ] + }, + { + "teal": 659, + "source": "contracts/validatorRegistry.algo.ts:237", + "pc": [ + 627, + 628, + 629 + ] + }, + { + "teal": 660, + "source": "contracts/validatorRegistry.algo.ts:237", + "pc": [ + 630 + ] + }, + { + "teal": 663, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 631, + 632, + 633 + ] + }, + { + "teal": 664, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 634 + ] + }, + { + "teal": 665, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 635 + ] + }, + { + "teal": 666, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 636 + ] + }, + { + "teal": 667, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 637 + ] + }, + { + "teal": 668, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 638 + ] + }, + { + "teal": 678, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 639, + 640, + 641 + ] + }, + { + "teal": 681, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 642 + ] + }, + { + "teal": 682, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 643, + 644 + ] + }, + { + "teal": 686, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 645, + 646 + ] + }, + { + "teal": 687, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 647, + 648 + ] + }, + { + "teal": 688, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 649 + ] + }, + { + "teal": 689, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 650, + 651 + ] + }, + { + "teal": 690, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 652 + ] + }, + { + "teal": 691, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 653 + ] + }, + { + "teal": 692, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 654, + 655 + ] + }, + { + "teal": 693, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 656 + ] + }, + { + "teal": 694, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 657 + ] + }, + { + "teal": 695, + "source": "contracts/validatorRegistry.algo.ts:238", + "pc": [ + 658, + 659 + ] + }, + { + "teal": 699, + "source": "contracts/validatorRegistry.algo.ts:239", + "pc": [ + 660, + 661, + 662 + ] + }, + { + "teal": 700, + "source": "contracts/validatorRegistry.algo.ts:239", + "pc": [ + 663, + 664 + ] + }, + { + "teal": 701, + "source": "contracts/validatorRegistry.algo.ts:239", + "pc": [ + 665 + ] + }, + { + "teal": 702, + "source": "contracts/validatorRegistry.algo.ts:239", + "pc": [ + 666, + 667 + ] + }, + { + "teal": 706, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 668, + 669, + 670 + ] + }, + { + "teal": 707, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 671 + ] + }, + { + "teal": 708, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 672 + ] + }, + { + "teal": 709, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 673, + 674 + ] + }, + { + "teal": 710, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 675 + ] + }, + { + "teal": 711, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 676 + ] + }, + { + "teal": 712, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 677, + 678 + ] + }, + { + "teal": 713, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 679 + ] + }, + { + "teal": 714, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 680 + ] + }, + { + "teal": 715, + "source": "contracts/validatorRegistry.algo.ts:240", + "pc": [ + 681, + 682 + ] + }, + { + "teal": 720, + "source": "contracts/validatorRegistry.algo.ts:241", + "pc": [ + 683, + 684 + ] + }, + { + "teal": 721, + "source": "contracts/validatorRegistry.algo.ts:241", + "pc": [ + 685 + ] + }, + { + "teal": 722, + "source": "contracts/validatorRegistry.algo.ts:241", + "pc": [ + 686 + ] + }, + { + "teal": 723, + "source": "contracts/validatorRegistry.algo.ts:241", + "pc": [ + 687, + 688, + 689 + ] + }, + { + "teal": 728, + "source": "contracts/validatorRegistry.algo.ts:242", + "pc": [ + 690, + 691, + 692 + ] + }, + { + "teal": 729, + "source": "contracts/validatorRegistry.algo.ts:242", + "pc": [ + 693, + 694 + ] + }, + { + "teal": 735, + "source": "contracts/validatorRegistry.algo.ts:244", + "pc": [ + 695, + 696 + ] + }, + { + "teal": 736, + "source": "contracts/validatorRegistry.algo.ts:244", + "pc": [ + 697, + 698 + ] + }, + { + "teal": 737, + "source": "contracts/validatorRegistry.algo.ts:244", + "pc": [ + 699 + ] + }, + { + "teal": 738, + "source": "contracts/validatorRegistry.algo.ts:244", + "pc": [ + 700, + 701, + 702 + ] + }, + { + "teal": 743, + "source": "contracts/validatorRegistry.algo.ts:245", + "pc": [ + 703, + 704 + ] + }, + { + "teal": 744, + "source": "contracts/validatorRegistry.algo.ts:245", + "pc": [ + 705, + 706 + ] + }, + { + "teal": 749, + "source": "contracts/validatorRegistry.algo.ts:247", + "pc": [ + 707, + 708 + ] + }, + { + "teal": 752, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 709, + 710 + ] + }, + { + "teal": 755, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 711, + 712 + ] + }, + { + "teal": 756, + "source": "contracts/validatorRegistry.algo.ts:236", + "pc": [ + 713 + ] + }, + { + "teal": 761, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 714 + ] + }, + { + "teal": 764, + "source": "contracts/validatorRegistry.algo.ts:255", + "pc": [ + 715, + 716, + 717 + ] + }, + { + "teal": 765, + "source": "contracts/validatorRegistry.algo.ts:255", + "pc": [ + 718 + ] + }, + { + "teal": 766, + "source": "contracts/validatorRegistry.algo.ts:255", + "pc": [ + 719 + ] + }, + { + "teal": 767, + "source": "contracts/validatorRegistry.algo.ts:255", + "pc": [ + 720, + 721 + ] + }, + { + "teal": 768, + "source": "contracts/validatorRegistry.algo.ts:255", + "pc": [ + 722 + ] + }, + { + "teal": 771, + "source": "contracts/validatorRegistry.algo.ts:255", + "errorMessage": "argument 0 (staker) for doesStakerNeedToPayMBR must be a address", + "pc": [ + 723 + ] + }, + { + "teal": 774, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 724, + 725, + 726 + ] + }, + { + "teal": 775, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 727, + 728 + ] + }, + { + "teal": 776, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 729 + ] + }, + { + "teal": 777, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 730, + 731 + ] + }, + { + "teal": 778, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 732 + ] + }, + { + "teal": 779, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 733 + ] + }, + { + "teal": 780, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 734 + ] + }, + { + "teal": 781, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 735 + ] + }, + { + "teal": 782, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 736 + ] + }, + { + "teal": 789, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 737, + 738, + 739 + ] + }, + { + "teal": 793, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 740 + ] + }, + { + "teal": 794, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 741, + 742 + ] + }, + { + "teal": 795, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 743 + ] + }, + { + "teal": 796, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 744 + ] + }, + { + "teal": 797, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 745 + ] + }, + { + "teal": 798, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 746 + ] + }, + { + "teal": 799, + "source": "contracts/validatorRegistry.algo.ts:256", + "pc": [ + 747 + ] + }, + { + "teal": 800, + "source": "contracts/validatorRegistry.algo.ts:254", + "pc": [ + 748 + ] + }, + { + "teal": 805, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 749 + ] + }, + { + "teal": 808, + "source": "contracts/validatorRegistry.algo.ts:266", + "pc": [ + 750, + 751, + 752 + ] + }, + { + "teal": 809, + "source": "contracts/validatorRegistry.algo.ts:266", + "pc": [ + 753 + ] + }, + { + "teal": 810, + "source": "contracts/validatorRegistry.algo.ts:266", + "pc": [ + 754 + ] + }, + { + "teal": 811, + "source": "contracts/validatorRegistry.algo.ts:266", + "pc": [ + 755, + 756 + ] + }, + { + "teal": 812, + "source": "contracts/validatorRegistry.algo.ts:266", + "pc": [ + 757 + ] + }, + { + "teal": 815, + "source": "contracts/validatorRegistry.algo.ts:266", + "errorMessage": "argument 0 (staker) for getStakedPoolsForAccount must be a address", + "pc": [ + 758 + ] + }, + { + "teal": 818, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 759, + 760, + 761 + ] + }, + { + "teal": 819, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 762 + ] + }, + { + "teal": 820, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 763 + ] + }, + { + "teal": 821, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 764 + ] + }, + { + "teal": 822, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 765 + ] + }, + { + "teal": 823, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 766 + ] + }, + { + "teal": 824, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 767, + 768, + 769 + ] + }, + { + "teal": 825, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 770 + ] + }, + { + "teal": 826, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 771 + ] + }, + { + "teal": 827, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 772 + ] + }, + { + "teal": 828, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 773 + ] + }, + { + "teal": 829, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 774 + ] + }, + { + "teal": 830, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 775 + ] + }, + { + "teal": 839, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 776, + 777, + 778 + ] + }, + { + "teal": 842, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 779 + ] + }, + { + "teal": 843, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 780, + 781 + ] + }, + { + "teal": 848, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 782 + ] + }, + { + "teal": 849, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 783, + 784 + ] + }, + { + "teal": 850, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 785 + ] + }, + { + "teal": 851, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 786 + ] + }, + { + "teal": 852, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 787 + ] + }, + { + "teal": 853, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 788 + ] + }, + { + "teal": 854, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 789 + ] + }, + { + "teal": 855, + "source": "contracts/validatorRegistry.algo.ts:267", + "pc": [ + 790, + 791, + 792 + ] + }, + { + "teal": 860, + "source": "contracts/validatorRegistry.algo.ts:268", + "pc": [ + 793 + ] + }, + { + "teal": 861, + "source": "contracts/validatorRegistry.algo.ts:268", + "pc": [ + 794, + 795, + 796 + ] + }, + { + "teal": 866, + "source": "contracts/validatorRegistry.algo.ts:270", + "pc": [ + 797 + ] + }, + { + "teal": 867, + "source": "contracts/validatorRegistry.algo.ts:270", + "pc": [ + 798, + 799 + ] + }, + { + "teal": 871, + "source": "contracts/validatorRegistry.algo.ts:271", + "pc": [ + 800 + ] + }, + { + "teal": 872, + "source": "contracts/validatorRegistry.algo.ts:271", + "pc": [ + 801, + 802 + ] + }, + { + "teal": 873, + "source": "contracts/validatorRegistry.algo.ts:271", + "pc": [ + 803 + ] + }, + { + "teal": 874, + "source": "contracts/validatorRegistry.algo.ts:271", + "pc": [ + 804 + ] + }, + { + "teal": 877, + "source": "contracts/validatorRegistry.algo.ts:271", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "pc": [ + 805 + ] + }, + { + "teal": 878, + "source": "contracts/validatorRegistry.algo.ts:271", + "pc": [ + 806, + 807 + ] + }, + { + "teal": 882, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 808 + ] + }, + { + "teal": 883, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 809, + 810 + ] + }, + { + "teal": 888, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 811, + 812 + ] + }, + { + "teal": 889, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 813, + 814 + ] + }, + { + "teal": 890, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 815 + ] + }, + { + "teal": 891, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 816, + 817, + 818 + ] + }, + { + "teal": 896, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 819, + 820 + ] + }, + { + "teal": 897, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 821, + 822 + ] + }, + { + "teal": 898, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 823 + ] + }, + { + "teal": 899, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 824 + ] + }, + { + "teal": 900, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 825 + ] + }, + { + "teal": 901, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 826 + ] + }, + { + "teal": 902, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 827 + ] + }, + { + "teal": 903, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 828 + ] + }, + { + "teal": 904, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 829 + ] + }, + { + "teal": 905, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 830 + ] + }, + { + "teal": 906, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 831 + ] + }, + { + "teal": 907, + "source": "contracts/validatorRegistry.algo.ts:273", + "pc": [ + 832, + 833, + 834 + ] + }, + { + "teal": 912, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 835, + 836 + ] + }, + { + "teal": 913, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 837, + 838 + ] + }, + { + "teal": 914, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 839, + 840 + ] + }, + { + "teal": 915, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 841 + ] + }, + { + "teal": 916, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 842 + ] + }, + { + "teal": 917, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 843 + ] + }, + { + "teal": 918, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 844 + ] + }, + { + "teal": 919, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 845 + ] + }, + { + "teal": 920, + "source": "contracts/validatorRegistry.algo.ts:274", + "pc": [ + 846, + 847 + ] + }, + { + "teal": 927, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 848, + 849 + ] + }, + { + "teal": 928, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 850 + ] + }, + { + "teal": 929, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 851 + ] + }, + { + "teal": 930, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 852, + 853 + ] + }, + { + "teal": 931, + "source": "contracts/validatorRegistry.algo.ts:272", + "pc": [ + 854, + 855, + 856 + ] + }, + { + "teal": 936, + "source": "contracts/validatorRegistry.algo.ts:277", + "pc": [ + 857, + 858 + ] + }, + { + "teal": 940, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 859, + 860 + ] + }, + { + "teal": 943, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 861, + 862 + ] + }, + { + "teal": 944, + "source": "contracts/validatorRegistry.algo.ts:265", + "pc": [ + 863 + ] + }, + { + "teal": 949, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 864 + ] + }, + { + "teal": 952, + "source": "contracts/validatorRegistry.algo.ts:288", + "pc": [ + 865, + 866, + 867 + ] + }, + { + "teal": 953, + "source": "contracts/validatorRegistry.algo.ts:288", + "pc": [ + 868 + ] + }, + { + "teal": 956, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 869, + 870, + 871 + ] + }, + { + "teal": 957, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 872 + ] + }, + { + "teal": 958, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 873 + ] + }, + { + "teal": 959, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 874 + ] + }, + { + "teal": 960, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 875 + ] + }, + { + "teal": 970, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 876, + 877, + 878 + ] + }, + { + "teal": 974, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 879, + 880 + ] + }, + { + "teal": 975, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 881, + 882 + ] + }, + { + "teal": 976, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 883 + ] + }, + { + "teal": 977, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 884, + 885 + ] + }, + { + "teal": 978, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 886 + ] + }, + { + "teal": 979, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 887 + ] + }, + { + "teal": 980, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 888, + 889 + ] + }, + { + "teal": 981, + "source": "contracts/validatorRegistry.algo.ts:289", + "pc": [ + 890 + ] + }, + { + "teal": 982, + "source": "contracts/validatorRegistry.algo.ts:287", + "pc": [ + 891 + ] + }, + { + "teal": 987, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 892 + ] + }, + { + "teal": 990, + "source": "contracts/validatorRegistry.algo.ts:293", + "pc": [ + 893, + 894, + 895 + ] + }, + { + "teal": 991, + "source": "contracts/validatorRegistry.algo.ts:293", + "pc": [ + 896 + ] + }, + { + "teal": 994, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 897, + 898, + 899 + ] + }, + { + "teal": 995, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 900 + ] + }, + { + "teal": 996, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 901 + ] + }, + { + "teal": 997, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 902 + ] + }, + { + "teal": 998, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 903 + ] + }, + { + "teal": 1002, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 904, + 905, + 906 + ] + }, + { + "teal": 1006, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 907 + ] + }, + { + "teal": 1007, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 908, + 909 + ] + }, + { + "teal": 1008, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 910 + ] + }, + { + "teal": 1009, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 911 + ] + }, + { + "teal": 1010, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 912 + ] + }, + { + "teal": 1011, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 913 + ] + }, + { + "teal": 1012, + "source": "contracts/validatorRegistry.algo.ts:294", + "pc": [ + 914 + ] + }, + { + "teal": 1015, + "source": "contracts/validatorRegistry.algo.ts:294", + "errorMessage": "the specified validator id doesn't exist", + "pc": [ + 915 + ] + }, + { + "teal": 1019, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 916, + 917 + ] + }, + { + "teal": 1020, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 918, + 919 + ] + }, + { + "teal": 1021, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 920 + ] + }, + { + "teal": 1022, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 921, + 922 + ] + }, + { + "teal": 1023, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 923 + ] + }, + { + "teal": 1024, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 924 + ] + }, + { + "teal": 1025, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 925, + 926 + ] + }, + { + "teal": 1026, + "source": "contracts/validatorRegistry.algo.ts:296", + "pc": [ + 927 + ] + }, + { + "teal": 1027, + "source": "contracts/validatorRegistry.algo.ts:292", + "pc": [ + 928 + ] + }, + { + "teal": 1032, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 929 + ] + }, + { + "teal": 1035, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 930, + 931, + 932 + ] + }, + { + "teal": 1036, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 933 + ] + }, + { + "teal": 1037, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 934 + ] + }, + { + "teal": 1038, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 935 + ] + }, + { + "teal": 1039, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 936 + ] + }, + { + "teal": 1040, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 937 + ] + }, + { + "teal": 1044, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 938, + 939, + 940 + ] + }, + { + "teal": 1048, + "source": "contracts/validatorRegistry.algo.ts:301", + "pc": [ + 941, + 942 + ] + }, + { + "teal": 1049, + "source": "contracts/validatorRegistry.algo.ts:299", + "pc": [ + 943 + ] + }, + { + "teal": 1054, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 944 + ] + }, + { + "teal": 1057, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 945, + 946, + 947 + ] + }, + { + "teal": 1058, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 948 + ] + }, + { + "teal": 1059, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 949 + ] + }, + { + "teal": 1060, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 950, + 951 + ] + }, + { + "teal": 1061, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 952 + ] + }, + { + "teal": 1064, + "source": "contracts/validatorRegistry.algo.ts:312", + "errorMessage": "argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)", + "pc": [ + 953 + ] + }, + { + "teal": 1067, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 954, + 955, + 956 + ] + }, + { + "teal": 1068, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 957, + 958, + 959 + ] + }, + { + "teal": 1071, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 960, + 961 + ] + }, + { + "teal": 1072, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 962 + ] + }, + { + "teal": 1073, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 963 + ] + }, + { + "teal": 1074, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 964 + ] + }, + { + "teal": 1075, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 965, + 966 + ] + }, + { + "teal": 1076, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 967 + ] + }, + { + "teal": 1077, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 968 + ] + }, + { + "teal": 1080, + "source": "contracts/validatorRegistry.algo.ts:312", + "errorMessage": "argument 2 (mbrPayment) for addValidator must be a pay transaction", + "pc": [ + 969 + ] + }, + { + "teal": 1083, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 970, + 971, + 972 + ] + }, + { + "teal": 1084, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 973 + ] + }, + { + "teal": 1085, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 974 + ] + }, + { + "teal": 1086, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 975 + ] + }, + { + "teal": 1087, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 976 + ] + }, + { + "teal": 1088, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 977 + ] + }, + { + "teal": 1100, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 978, + 979, + 980 + ] + }, + { + "teal": 1103, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 981 + ] + }, + { + "teal": 1107, + "source": "contracts/validatorRegistry.algo.ts:313", + "pc": [ + 982, + 983 + ] + }, + { + "teal": 1108, + "source": "contracts/validatorRegistry.algo.ts:313", + "pc": [ + 984, + 985, + 986 + ] + }, + { + "teal": 1113, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 987, + 988 + ] + }, + { + "teal": 1114, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 989, + 990 + ] + }, + { + "teal": 1115, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 991, + 992 + ] + }, + { + "teal": 1116, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 993 + ] + }, + { + "teal": 1119, + "source": "contracts/validatorRegistry.algo.ts:315", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "pc": [ + 994 + ] + }, + { + "teal": 1122, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 995, + 996 + ] + }, + { + "teal": 1123, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 997, + 998 + ] + }, + { + "teal": 1124, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 999, + 1000, + 1001 + ] + }, + { + "teal": 1125, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 1002, + 1003, + 1004 + ] + }, + { + "teal": 1126, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 1005 + ] + }, + { + "teal": 1127, + "source": "contracts/validatorRegistry.algo.ts:315", + "pc": [ + 1006 + ] + }, + { + "teal": 1130, + "source": "contracts/validatorRegistry.algo.ts:315", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}", + "pc": [ + 1007 + ] + }, + { + "teal": 1134, + "source": "contracts/validatorRegistry.algo.ts:317", + "pc": [ + 1008, + 1009 + ] + }, + { + "teal": 1135, + "source": "contracts/validatorRegistry.algo.ts:317", + "pc": [ + 1010, + 1011 + ] + }, + { + "teal": 1136, + "source": "contracts/validatorRegistry.algo.ts:317", + "pc": [ + 1012, + 1013, + 1014, + 1015, + 1016 + ] + }, + { + "teal": 1137, + "source": "contracts/validatorRegistry.algo.ts:317", + "pc": [ + 1017 + ] + }, + { + "teal": 1140, + "source": "contracts/validatorRegistry.algo.ts:317", + "errorMessage": "fee must be 10 ALGO or more to prevent spamming of validators", + "pc": [ + 1018 + ] + }, + { + "teal": 1144, + "source": "contracts/validatorRegistry.algo.ts:320", + "pc": [ + 1019, + 1020 + ] + }, + { + "teal": 1145, + "source": "contracts/validatorRegistry.algo.ts:320", + "pc": [ + 1021 + ] + }, + { + "teal": 1146, + "source": "contracts/validatorRegistry.algo.ts:320", + "pc": [ + 1022 + ] + }, + { + "teal": 1147, + "source": "contracts/validatorRegistry.algo.ts:320", + "pc": [ + 1023 + ] + }, + { + "teal": 1148, + "source": "contracts/validatorRegistry.algo.ts:320", + "pc": [ + 1024, + 1025 + ] + }, + { + "teal": 1152, + "source": "contracts/validatorRegistry.algo.ts:321", + "pc": [ + 1026, + 1027 + ] + }, + { + "teal": 1153, + "source": "contracts/validatorRegistry.algo.ts:321", + "pc": [ + 1028, + 1029 + ] + }, + { + "teal": 1154, + "source": "contracts/validatorRegistry.algo.ts:321", + "pc": [ + 1030 + ] + }, + { + "teal": 1158, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1031 + ] + }, + { + "teal": 1159, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1032, + 1033 + ] + }, + { + "teal": 1160, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1034 + ] + }, + { + "teal": 1161, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1035 + ] + }, + { + "teal": 1162, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1036, + 1037, + 1038 + ] + }, + { + "teal": 1163, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1039 + ] + }, + { + "teal": 1164, + "source": "contracts/validatorRegistry.algo.ts:323", + "pc": [ + 1040 + ] + }, + { + "teal": 1168, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1041 + ] + }, + { + "teal": 1169, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1042, + 1043 + ] + }, + { + "teal": 1170, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1044 + ] + }, + { + "teal": 1171, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1045, + 1046 + ] + }, + { + "teal": 1172, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1047 + ] + }, + { + "teal": 1173, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1048 + ] + }, + { + "teal": 1174, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1049, + 1050 + ] + }, + { + "teal": 1175, + "source": "contracts/validatorRegistry.algo.ts:324", + "pc": [ + 1051 + ] + }, + { + "teal": 1179, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1052 + ] + }, + { + "teal": 1180, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1053, + 1054 + ] + }, + { + "teal": 1181, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1055 + ] + }, + { + "teal": 1182, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1056 + ] + }, + { + "teal": 1183, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1057, + 1058 + ] + }, + { + "teal": 1184, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1059 + ] + }, + { + "teal": 1185, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1060 + ] + }, + { + "teal": 1186, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1061, + 1062 + ] + }, + { + "teal": 1187, + "source": "contracts/validatorRegistry.algo.ts:325", + "pc": [ + 1063 + ] + }, + { + "teal": 1192, + "source": "contracts/validatorRegistry.algo.ts:328", + "pc": [ + 1064, + 1065 + ] + }, + { + "teal": 1193, + "source": "contracts/validatorRegistry.algo.ts:328", + "pc": [ + 1066, + 1067, + 1068 + ] + }, + { + "teal": 1194, + "source": "contracts/validatorRegistry.algo.ts:328", + "pc": [ + 1069 + ] + }, + { + "teal": 1195, + "source": "contracts/validatorRegistry.algo.ts:328", + "pc": [ + 1070 + ] + }, + { + "teal": 1196, + "source": "contracts/validatorRegistry.algo.ts:328", + "pc": [ + 1071 + ] + }, + { + "teal": 1197, + "source": "contracts/validatorRegistry.algo.ts:328", + "pc": [ + 1072, + 1073, + 1074 + ] + }, + { + "teal": 1202, + "source": "contracts/validatorRegistry.algo.ts:330", + "pc": [ + 1075, + 1076 + ] + }, + { + "teal": 1203, + "source": "contracts/validatorRegistry.algo.ts:330", + "pc": [ + 1077, + 1078, + 1079 + ] + }, + { + "teal": 1204, + "source": "contracts/validatorRegistry.algo.ts:330", + "pc": [ + 1080 + ] + }, + { + "teal": 1205, + "source": "contracts/validatorRegistry.algo.ts:330", + "pc": [ + 1081, + 1082, + 1083 + ] + }, + { + "teal": 1208, + "source": "contracts/validatorRegistry.algo.ts:330", + "errorMessage": "provided NFD must be valid", + "pc": [ + 1084 + ] + }, + { + "teal": 1215, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1085, + 1086 + ] + }, + { + "teal": 1216, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1087, + 1088 + ] + }, + { + "teal": 1217, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1089, + 1090, + 1091 + ] + }, + { + "teal": 1218, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1092 + ] + }, + { + "teal": 1219, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1093, + 1094 + ] + }, + { + "teal": 1220, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1095 + ] + }, + { + "teal": 1223, + "source": "contracts/validatorRegistry.algo.ts:333", + "errorMessage": "global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')", + "pc": [ + 1096 + ] + }, + { + "teal": 1224, + "source": "contracts/validatorRegistry.algo.ts:333", + "pc": [ + 1097 + ] + }, + { + "teal": 1227, + "source": "contracts/validatorRegistry.algo.ts:332", + "errorMessage": "If specifying NFD, account adding validator must be owner", + "pc": [ + 1098 + ] + }, + { + "teal": 1234, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1099, + 1100 + ] + }, + { + "teal": 1235, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1101, + 1102, + 1103 + ] + }, + { + "teal": 1236, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1104 + ] + }, + { + "teal": 1237, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1105, + 1106 + ] + }, + { + "teal": 1238, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1107 + ] + }, + { + "teal": 1239, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1108 + ] + }, + { + "teal": 1240, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1109, + 1110, + 1111 + ] + }, + { + "teal": 1241, + "source": "contracts/validatorRegistry.algo.ts:339", + "pc": [ + 1112, + 1113 + ] + }, + { + "teal": 1242, + "source": "contracts/validatorRegistry.algo.ts:339", + "pc": [ + 1114, + 1115, + 1116 + ] + }, + { + "teal": 1243, + "source": "contracts/validatorRegistry.algo.ts:339", + "pc": [ + 1117 + ] + }, + { + "teal": 1244, + "source": "contracts/validatorRegistry.algo.ts:339", + "pc": [ + 1118, + 1119 + ] + }, + { + "teal": 1245, + "source": "contracts/validatorRegistry.algo.ts:339", + "pc": [ + 1120 + ] + }, + { + "teal": 1246, + "source": "contracts/validatorRegistry.algo.ts:338", + "pc": [ + 1121 + ] + }, + { + "teal": 1249, + "source": "contracts/validatorRegistry.algo.ts:337", + "pc": [ + 1122, + 1123, + 1124 + ] + }, + { + "teal": 1257, + "source": "contracts/validatorRegistry.algo.ts:343", + "pc": [ + 1125, + 1126 + ] + }, + { + "teal": 1258, + "source": "contracts/validatorRegistry.algo.ts:343", + "pc": [ + 1127, + 1128, + 1129 + ] + }, + { + "teal": 1259, + "source": "contracts/validatorRegistry.algo.ts:343", + "pc": [ + 1130 + ] + }, + { + "teal": 1260, + "source": "contracts/validatorRegistry.algo.ts:343", + "pc": [ + 1131, + 1132, + 1133 + ] + }, + { + "teal": 1263, + "source": "contracts/validatorRegistry.algo.ts:342", + "errorMessage": "provided NFD App id for gating must be valid NFD", + "pc": [ + 1134 + ] + }, + { + "teal": 1268, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1135, + 1136, + 1137, + 1138, + 1139, + 1140 + ] + }, + { + "teal": 1269, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1141, + 1142 + ] + }, + { + "teal": 1270, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1143 + ] + }, + { + "teal": 1271, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1144, + 1145 + ] + }, + { + "teal": 1272, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1146, + 1147, + 1148 + ] + }, + { + "teal": 1273, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1149 + ] + }, + { + "teal": 1274, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1150, + 1151 + ] + }, + { + "teal": 1275, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1152, + 1153, + 1154 + ] + }, + { + "teal": 1276, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1155 + ] + }, + { + "teal": 1277, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1156 + ] + }, + { + "teal": 1278, + "source": "contracts/validatorRegistry.algo.ts:347", + "pc": [ + 1157 + ] + }, + { + "teal": 1282, + "source": "contracts/validatorRegistry.algo.ts:348", + "pc": [ + 1158, + 1159 + ] + }, + { + "teal": 1285, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 1160, + 1161 + ] + }, + { + "teal": 1286, + "source": "contracts/validatorRegistry.algo.ts:312", + "pc": [ + 1162 + ] + }, + { + "teal": 1291, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1163, + 1164, + 1165 + ] + }, + { + "teal": 1292, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1166 + ] + }, + { + "teal": 1293, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1167 + ] + }, + { + "teal": 1294, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1168, + 1169 + ] + }, + { + "teal": 1295, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1170 + ] + }, + { + "teal": 1298, + "source": "contracts/validatorRegistry.algo.ts:358", + "errorMessage": "argument 0 (manager) for changeValidatorManager must be a address", + "pc": [ + 1171 + ] + }, + { + "teal": 1301, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1172, + 1173, + 1174 + ] + }, + { + "teal": 1302, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1175 + ] + }, + { + "teal": 1305, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1176, + 1177, + 1178 + ] + }, + { + "teal": 1306, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1179 + ] + }, + { + "teal": 1307, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1180 + ] + }, + { + "teal": 1317, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1181, + 1182, + 1183 + ] + }, + { + "teal": 1321, + "source": "contracts/validatorRegistry.algo.ts:359", + "pc": [ + 1184, + 1185 + ] + }, + { + "teal": 1322, + "source": "contracts/validatorRegistry.algo.ts:359", + "pc": [ + 1186, + 1187, + 1188 + ] + }, + { + "teal": 1326, + "source": "contracts/validatorRegistry.algo.ts:360", + "pc": [ + 1189, + 1190 + ] + }, + { + "teal": 1327, + "source": "contracts/validatorRegistry.algo.ts:360", + "pc": [ + 1191, + 1192 + ] + }, + { + "teal": 1328, + "source": "contracts/validatorRegistry.algo.ts:360", + "pc": [ + 1193 + ] + }, + { + "teal": 1331, + "source": "contracts/validatorRegistry.algo.ts:360", + "errorMessage": "needs to at least be valid address", + "pc": [ + 1194 + ] + }, + { + "teal": 1335, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1195, + 1196 + ] + }, + { + "teal": 1336, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1197, + 1198 + ] + }, + { + "teal": 1337, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1199 + ] + }, + { + "teal": 1338, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1200, + 1201 + ] + }, + { + "teal": 1339, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1202 + ] + }, + { + "teal": 1340, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1203 + ] + }, + { + "teal": 1341, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1204, + 1205 + ] + }, + { + "teal": 1342, + "source": "contracts/validatorRegistry.algo.ts:361", + "pc": [ + 1206 + ] + }, + { + "teal": 1343, + "source": "contracts/validatorRegistry.algo.ts:358", + "pc": [ + 1207 + ] + }, + { + "teal": 1348, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1208, + 1209, + 1210 + ] + }, + { + "teal": 1349, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1211 + ] + }, + { + "teal": 1352, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1212, + 1213, + 1214 + ] + }, + { + "teal": 1353, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1215 + ] + }, + { + "teal": 1356, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1216, + 1217, + 1218 + ] + }, + { + "teal": 1357, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1219 + ] + }, + { + "teal": 1360, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1220, + 1221, + 1222 + ] + }, + { + "teal": 1361, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1223 + ] + }, + { + "teal": 1362, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1224 + ] + }, + { + "teal": 1373, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1225, + 1226, + 1227 + ] + }, + { + "teal": 1377, + "source": "contracts/validatorRegistry.algo.ts:373", + "pc": [ + 1228, + 1229 + ] + }, + { + "teal": 1378, + "source": "contracts/validatorRegistry.algo.ts:373", + "pc": [ + 1230, + 1231, + 1232 + ] + }, + { + "teal": 1382, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1233, + 1234 + ] + }, + { + "teal": 1383, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1235, + 1236 + ] + }, + { + "teal": 1384, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1237 + ] + }, + { + "teal": 1385, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1238 + ] + }, + { + "teal": 1386, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1239, + 1240 + ] + }, + { + "teal": 1387, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1241 + ] + }, + { + "teal": 1388, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1242 + ] + }, + { + "teal": 1389, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1243, + 1244 + ] + }, + { + "teal": 1390, + "source": "contracts/validatorRegistry.algo.ts:374", + "pc": [ + 1245 + ] + }, + { + "teal": 1394, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1246, + 1247, + 1248 + ] + }, + { + "teal": 1395, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1249, + 1250 + ] + }, + { + "teal": 1396, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1251 + ] + }, + { + "teal": 1397, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1252 + ] + }, + { + "teal": 1398, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1253, + 1254 + ] + }, + { + "teal": 1399, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1255 + ] + }, + { + "teal": 1400, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1256 + ] + }, + { + "teal": 1401, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1257, + 1258 + ] + }, + { + "teal": 1402, + "source": "contracts/validatorRegistry.algo.ts:375", + "pc": [ + 1259 + ] + }, + { + "teal": 1403, + "source": "contracts/validatorRegistry.algo.ts:372", + "pc": [ + 1260 + ] + }, + { + "teal": 1408, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1261, + 1262, + 1263 + ] + }, + { + "teal": 1409, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1264, + 1265, + 1266 + ] + }, + { + "teal": 1412, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1267, + 1268, + 1269 + ] + }, + { + "teal": 1413, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1270 + ] + }, + { + "teal": 1416, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1271, + 1272, + 1273 + ] + }, + { + "teal": 1417, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1274 + ] + }, + { + "teal": 1420, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1275, + 1276, + 1277 + ] + }, + { + "teal": 1421, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1278 + ] + }, + { + "teal": 1422, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1279 + ] + }, + { + "teal": 1433, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1280, + 1281, + 1282 + ] + }, + { + "teal": 1437, + "source": "contracts/validatorRegistry.algo.ts:387", + "pc": [ + 1283, + 1284 + ] + }, + { + "teal": 1438, + "source": "contracts/validatorRegistry.algo.ts:387", + "pc": [ + 1285, + 1286, + 1287 + ] + }, + { + "teal": 1442, + "source": "contracts/validatorRegistry.algo.ts:389", + "pc": [ + 1288, + 1289 + ] + }, + { + "teal": 1443, + "source": "contracts/validatorRegistry.algo.ts:389", + "pc": [ + 1290, + 1291, + 1292 + ] + }, + { + "teal": 1446, + "source": "contracts/validatorRegistry.algo.ts:389", + "errorMessage": "provided NFD must be valid", + "pc": [ + 1293 + ] + }, + { + "teal": 1453, + "source": "contracts/validatorRegistry.algo.ts:392", + "pc": [ + 1294, + 1295 + ] + }, + { + "teal": 1454, + "source": "contracts/validatorRegistry.algo.ts:392", + "pc": [ + 1296, + 1297 + ] + }, + { + "teal": 1455, + "source": "contracts/validatorRegistry.algo.ts:392", + "pc": [ + 1298, + 1299 + ] + }, + { + "teal": 1456, + "source": "contracts/validatorRegistry.algo.ts:392", + "pc": [ + 1300 + ] + }, + { + "teal": 1459, + "source": "contracts/validatorRegistry.algo.ts:392", + "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')", + "pc": [ + 1301 + ] + }, + { + "teal": 1460, + "source": "contracts/validatorRegistry.algo.ts:392", + "pc": [ + 1302 + ] + }, + { + "teal": 1463, + "source": "contracts/validatorRegistry.algo.ts:391", + "errorMessage": "If specifying NFD, account adding validator must be owner", + "pc": [ + 1303 + ] + }, + { + "teal": 1467, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1304, + 1305 + ] + }, + { + "teal": 1468, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1306, + 1307 + ] + }, + { + "teal": 1469, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1308 + ] + }, + { + "teal": 1470, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1309 + ] + }, + { + "teal": 1471, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1310, + 1311 + ] + }, + { + "teal": 1472, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1312 + ] + }, + { + "teal": 1473, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1313 + ] + }, + { + "teal": 1474, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1314, + 1315 + ] + }, + { + "teal": 1475, + "source": "contracts/validatorRegistry.algo.ts:395", + "pc": [ + 1316 + ] + }, + { + "teal": 1476, + "source": "contracts/validatorRegistry.algo.ts:386", + "pc": [ + 1317 + ] + }, + { + "teal": 1481, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1318, + 1319, + 1320 + ] + }, + { + "teal": 1482, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1321 + ] + }, + { + "teal": 1483, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1322 + ] + }, + { + "teal": 1484, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1323, + 1324 + ] + }, + { + "teal": 1485, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1325 + ] + }, + { + "teal": 1488, + "source": "contracts/validatorRegistry.algo.ts:402", + "errorMessage": "argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address", + "pc": [ + 1326 + ] + }, + { + "teal": 1491, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1327, + 1328, + 1329 + ] + }, + { + "teal": 1492, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1330 + ] + }, + { + "teal": 1495, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1331, + 1332, + 1333 + ] + }, + { + "teal": 1496, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1334 + ] + }, + { + "teal": 1497, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1335 + ] + }, + { + "teal": 1504, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1336, + 1337, + 1338 + ] + }, + { + "teal": 1508, + "source": "contracts/validatorRegistry.algo.ts:403", + "pc": [ + 1339, + 1340 + ] + }, + { + "teal": 1509, + "source": "contracts/validatorRegistry.algo.ts:403", + "pc": [ + 1341, + 1342, + 1343 + ] + }, + { + "teal": 1513, + "source": "contracts/validatorRegistry.algo.ts:404", + "pc": [ + 1344, + 1345 + ] + }, + { + "teal": 1514, + "source": "contracts/validatorRegistry.algo.ts:404", + "pc": [ + 1346, + 1347 + ] + }, + { + "teal": 1515, + "source": "contracts/validatorRegistry.algo.ts:404", + "pc": [ + 1348 + ] + }, + { + "teal": 1516, + "source": "contracts/validatorRegistry.algo.ts:404", + "pc": [ + 1349 + ] + }, + { + "teal": 1520, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1350, + 1351, + 1352 + ] + }, + { + "teal": 1521, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1353, + 1354 + ] + }, + { + "teal": 1522, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1355 + ] + }, + { + "teal": 1523, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1356, + 1357 + ] + }, + { + "teal": 1524, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1358 + ] + }, + { + "teal": 1525, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1359 + ] + }, + { + "teal": 1526, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1360, + 1361 + ] + }, + { + "teal": 1527, + "source": "contracts/validatorRegistry.algo.ts:405", + "pc": [ + 1362 + ] + }, + { + "teal": 1528, + "source": "contracts/validatorRegistry.algo.ts:402", + "pc": [ + 1363 + ] + }, + { + "teal": 1533, + "source": "contracts/validatorRegistry.algo.ts:418", + "pc": [ + 1364, + 1365, + 1366 + ] + }, + { + "teal": 1534, + "source": "contracts/validatorRegistry.algo.ts:418", + "pc": [ + 1367 + ] + }, + { + "teal": 1537, + "source": "contracts/validatorRegistry.algo.ts:417", + "pc": [ + 1368, + 1369, + 1370 + ] + }, + { + "teal": 1538, + "source": "contracts/validatorRegistry.algo.ts:417", + "pc": [ + 1371 + ] + }, + { + "teal": 1541, + "source": "contracts/validatorRegistry.algo.ts:416", + "pc": [ + 1372, + 1373, + 1374 + ] + }, + { + "teal": 1542, + "source": "contracts/validatorRegistry.algo.ts:416", + "pc": [ + 1375 + ] + }, + { + "teal": 1543, + "source": "contracts/validatorRegistry.algo.ts:416", + "pc": [ + 1376 + ] + }, + { + "teal": 1544, + "source": "contracts/validatorRegistry.algo.ts:416", + "pc": [ + 1377, + 1378 + ] + }, + { + "teal": 1545, + "source": "contracts/validatorRegistry.algo.ts:416", + "pc": [ + 1379 + ] + }, + { + "teal": 1548, + "source": "contracts/validatorRegistry.algo.ts:416", + "errorMessage": "argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]", + "pc": [ + 1380 + ] + }, + { + "teal": 1551, + "source": "contracts/validatorRegistry.algo.ts:415", + "pc": [ + 1381, + 1382, + 1383 + ] + }, + { + "teal": 1552, + "source": "contracts/validatorRegistry.algo.ts:415", + "pc": [ + 1384 + ] + }, + { + "teal": 1553, + "source": "contracts/validatorRegistry.algo.ts:415", + "pc": [ + 1385 + ] + }, + { + "teal": 1554, + "source": "contracts/validatorRegistry.algo.ts:415", + "pc": [ + 1386, + 1387 + ] + }, + { + "teal": 1555, + "source": "contracts/validatorRegistry.algo.ts:415", + "pc": [ + 1388 + ] + }, + { + "teal": 1558, + "source": "contracts/validatorRegistry.algo.ts:415", + "errorMessage": "argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address", + "pc": [ + 1389 + ] + }, + { + "teal": 1561, + "source": "contracts/validatorRegistry.algo.ts:414", + "pc": [ + 1390, + 1391, + 1392 + ] + }, + { + "teal": 1562, + "source": "contracts/validatorRegistry.algo.ts:414", + "pc": [ + 1393 + ] + }, + { + "teal": 1563, + "source": "contracts/validatorRegistry.algo.ts:414", + "pc": [ + 1394 + ] + }, + { + "teal": 1564, + "source": "contracts/validatorRegistry.algo.ts:414", + "pc": [ + 1395 + ] + }, + { + "teal": 1565, + "source": "contracts/validatorRegistry.algo.ts:414", + "pc": [ + 1396 + ] + }, + { + "teal": 1568, + "source": "contracts/validatorRegistry.algo.ts:414", + "errorMessage": "argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8", + "pc": [ + 1397 + ] + }, + { + "teal": 1569, + "source": "contracts/validatorRegistry.algo.ts:414", + "pc": [ + 1398 + ] + }, + { + "teal": 1572, + "source": "contracts/validatorRegistry.algo.ts:413", + "pc": [ + 1399, + 1400, + 1401 + ] + }, + { + "teal": 1573, + "source": "contracts/validatorRegistry.algo.ts:413", + "pc": [ + 1402 + ] + }, + { + "teal": 1576, + "source": "contracts/validatorRegistry.algo.ts:412", + "pc": [ + 1403, + 1404, + 1405 + ] + }, + { + "teal": 1577, + "source": "contracts/validatorRegistry.algo.ts:412", + "pc": [ + 1406 + ] + }, + { + "teal": 1578, + "source": "contracts/validatorRegistry.algo.ts:412", + "pc": [ + 1407 + ] + }, + { + "teal": 1585, + "source": "contracts/validatorRegistry.algo.ts:412", + "pc": [ + 1408, + 1409, + 1410 + ] + }, + { + "teal": 1589, + "source": "contracts/validatorRegistry.algo.ts:420", + "pc": [ + 1411, + 1412 + ] + }, + { + "teal": 1590, + "source": "contracts/validatorRegistry.algo.ts:420", + "pc": [ + 1413, + 1414, + 1415 + ] + }, + { + "teal": 1597, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1416, + 1417 + ] + }, + { + "teal": 1598, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1418 + ] + }, + { + "teal": 1599, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1419 + ] + }, + { + "teal": 1600, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1420 + ] + }, + { + "teal": 1601, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1421, + 1422, + 1423 + ] + }, + { + "teal": 1602, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1424, + 1425 + ] + }, + { + "teal": 1603, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1426, + 1427 + ] + }, + { + "teal": 1604, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1428 + ] + }, + { + "teal": 1605, + "source": "contracts/validatorRegistry.algo.ts:423", + "pc": [ + 1429 + ] + }, + { + "teal": 1609, + "source": "contracts/validatorRegistry.algo.ts:422", + "errorMessage": "invalid Entry gating type", + "pc": [ + 1430 + ] + }, + { + "teal": 1614, + "source": "contracts/validatorRegistry.algo.ts:426", + "pc": [ + 1431, + 1432 + ] + }, + { + "teal": 1615, + "source": "contracts/validatorRegistry.algo.ts:426", + "pc": [ + 1433 + ] + }, + { + "teal": 1616, + "source": "contracts/validatorRegistry.algo.ts:426", + "pc": [ + 1434 + ] + }, + { + "teal": 1617, + "source": "contracts/validatorRegistry.algo.ts:426", + "pc": [ + 1435, + 1436, + 1437 + ] + }, + { + "teal": 1622, + "source": "contracts/validatorRegistry.algo.ts:427", + "pc": [ + 1438, + 1439 + ] + }, + { + "teal": 1623, + "source": "contracts/validatorRegistry.algo.ts:427", + "pc": [ + 1440, + 1441 + ] + }, + { + "teal": 1624, + "source": "contracts/validatorRegistry.algo.ts:427", + "pc": [ + 1442 + ] + }, + { + "teal": 1625, + "source": "contracts/validatorRegistry.algo.ts:427", + "pc": [ + 1443 + ] + }, + { + "teal": 1632, + "source": "contracts/validatorRegistry.algo.ts:430", + "pc": [ + 1444, + 1445 + ] + }, + { + "teal": 1633, + "source": "contracts/validatorRegistry.algo.ts:430", + "pc": [ + 1446, + 1447 + ] + }, + { + "teal": 1634, + "source": "contracts/validatorRegistry.algo.ts:430", + "pc": [ + 1448 + ] + }, + { + "teal": 1635, + "source": "contracts/validatorRegistry.algo.ts:430", + "pc": [ + 1449 + ] + }, + { + "teal": 1636, + "source": "contracts/validatorRegistry.algo.ts:430", + "pc": [ + 1450, + 1451, + 1452 + ] + }, + { + "teal": 1637, + "source": "contracts/validatorRegistry.algo.ts:431", + "pc": [ + 1453, + 1454 + ] + }, + { + "teal": 1638, + "source": "contracts/validatorRegistry.algo.ts:431", + "pc": [ + 1455, + 1456 + ] + }, + { + "teal": 1639, + "source": "contracts/validatorRegistry.algo.ts:431", + "pc": [ + 1457 + ] + }, + { + "teal": 1640, + "source": "contracts/validatorRegistry.algo.ts:430", + "pc": [ + 1458 + ] + }, + { + "teal": 1643, + "source": "contracts/validatorRegistry.algo.ts:429", + "pc": [ + 1459, + 1460, + 1461 + ] + }, + { + "teal": 1648, + "source": "contracts/validatorRegistry.algo.ts:433", + "pc": [ + 1462, + 1463 + ] + }, + { + "teal": 1649, + "source": "contracts/validatorRegistry.algo.ts:433", + "pc": [ + 1464, + 1465, + 1466 + ] + }, + { + "teal": 1650, + "source": "contracts/validatorRegistry.algo.ts:433", + "pc": [ + 1467 + ] + }, + { + "teal": 1651, + "source": "contracts/validatorRegistry.algo.ts:433", + "pc": [ + 1468, + 1469, + 1470 + ] + }, + { + "teal": 1654, + "source": "contracts/validatorRegistry.algo.ts:433", + "errorMessage": "provided NFD App id for gating must be valid NFD", + "pc": [ + 1471 + ] + }, + { + "teal": 1659, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1472, + 1473 + ] + }, + { + "teal": 1660, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1474, + 1475 + ] + }, + { + "teal": 1661, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1476 + ] + }, + { + "teal": 1662, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1477, + 1478, + 1479 + ] + }, + { + "teal": 1663, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1480 + ] + }, + { + "teal": 1664, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1481, + 1482 + ] + }, + { + "teal": 1665, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1483 + ] + }, + { + "teal": 1666, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1484 + ] + }, + { + "teal": 1667, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1485, + 1486 + ] + }, + { + "teal": 1668, + "source": "contracts/validatorRegistry.algo.ts:435", + "pc": [ + 1487 + ] + }, + { + "teal": 1672, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1488, + 1489 + ] + }, + { + "teal": 1673, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1490, + 1491 + ] + }, + { + "teal": 1674, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1492 + ] + }, + { + "teal": 1675, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1493, + 1494 + ] + }, + { + "teal": 1676, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1495 + ] + }, + { + "teal": 1677, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1496 + ] + }, + { + "teal": 1678, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1497, + 1498 + ] + }, + { + "teal": 1679, + "source": "contracts/validatorRegistry.algo.ts:436", + "pc": [ + 1499 + ] + }, + { + "teal": 1683, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1500, + 1501 + ] + }, + { + "teal": 1684, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1502, + 1503 + ] + }, + { + "teal": 1685, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1504 + ] + }, + { + "teal": 1686, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1505, + 1506 + ] + }, + { + "teal": 1687, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1507 + ] + }, + { + "teal": 1688, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1508 + ] + }, + { + "teal": 1689, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1509, + 1510 + ] + }, + { + "teal": 1690, + "source": "contracts/validatorRegistry.algo.ts:437", + "pc": [ + 1511 + ] + }, + { + "teal": 1694, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1512, + 1513 + ] + }, + { + "teal": 1695, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1514, + 1515 + ] + }, + { + "teal": 1696, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1516 + ] + }, + { + "teal": 1697, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1517 + ] + }, + { + "teal": 1698, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1518, + 1519 + ] + }, + { + "teal": 1699, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1520 + ] + }, + { + "teal": 1700, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1521 + ] + }, + { + "teal": 1701, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1522, + 1523 + ] + }, + { + "teal": 1702, + "source": "contracts/validatorRegistry.algo.ts:438", + "pc": [ + 1524 + ] + }, + { + "teal": 1706, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1525, + 1526, + 1527 + ] + }, + { + "teal": 1707, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1528, + 1529 + ] + }, + { + "teal": 1708, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1530 + ] + }, + { + "teal": 1709, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1531 + ] + }, + { + "teal": 1710, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1532, + 1533 + ] + }, + { + "teal": 1711, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1534 + ] + }, + { + "teal": 1712, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1535 + ] + }, + { + "teal": 1713, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1536, + 1537 + ] + }, + { + "teal": 1714, + "source": "contracts/validatorRegistry.algo.ts:439", + "pc": [ + 1538 + ] + }, + { + "teal": 1715, + "source": "contracts/validatorRegistry.algo.ts:412", + "pc": [ + 1539 + ] + }, + { + "teal": 1720, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1540 + ] + }, + { + "teal": 1723, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1541, + 1542, + 1543 + ] + }, + { + "teal": 1724, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1544 + ] + }, + { + "teal": 1727, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1545, + 1546, + 1547 + ] + }, + { + "teal": 1728, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1548 + ] + }, + { + "teal": 1731, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1549, + 1550 + ] + }, + { + "teal": 1732, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1551 + ] + }, + { + "teal": 1733, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1552 + ] + }, + { + "teal": 1734, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1553 + ] + }, + { + "teal": 1735, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1554, + 1555 + ] + }, + { + "teal": 1736, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1556 + ] + }, + { + "teal": 1737, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1557 + ] + }, + { + "teal": 1740, + "source": "contracts/validatorRegistry.algo.ts:453", + "errorMessage": "argument 2 (mbrPayment) for addPool must be a pay transaction", + "pc": [ + 1558 + ] + }, + { + "teal": 1743, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1559, + 1560, + 1561 + ] + }, + { + "teal": 1744, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1562 + ] + }, + { + "teal": 1745, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1563 + ] + }, + { + "teal": 1746, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1564 + ] + }, + { + "teal": 1747, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1565 + ] + }, + { + "teal": 1760, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1566, + 1567, + 1568 + ] + }, + { + "teal": 1763, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1569 + ] + }, + { + "teal": 1764, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1570 + ] + }, + { + "teal": 1768, + "source": "contracts/validatorRegistry.algo.ts:454", + "pc": [ + 1571, + 1572 + ] + }, + { + "teal": 1769, + "source": "contracts/validatorRegistry.algo.ts:454", + "pc": [ + 1573, + 1574, + 1575 + ] + }, + { + "teal": 1774, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1576, + 1577 + ] + }, + { + "teal": 1775, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1578, + 1579 + ] + }, + { + "teal": 1776, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1580, + 1581 + ] + }, + { + "teal": 1777, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1582 + ] + }, + { + "teal": 1780, + "source": "contracts/validatorRegistry.algo.ts:457", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "pc": [ + 1583 + ] + }, + { + "teal": 1783, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1584, + 1585 + ] + }, + { + "teal": 1784, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1586, + 1587 + ] + }, + { + "teal": 1785, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1588, + 1589, + 1590 + ] + }, + { + "teal": 1786, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1591, + 1592, + 1593 + ] + }, + { + "teal": 1787, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1594 + ] + }, + { + "teal": 1788, + "source": "contracts/validatorRegistry.algo.ts:457", + "pc": [ + 1595 + ] + }, + { + "teal": 1791, + "source": "contracts/validatorRegistry.algo.ts:457", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}", + "pc": [ + 1596 + ] + }, + { + "teal": 1795, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1597 + ] + }, + { + "teal": 1796, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1598, + 1599 + ] + }, + { + "teal": 1797, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1600 + ] + }, + { + "teal": 1798, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1601 + ] + }, + { + "teal": 1799, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1602 + ] + }, + { + "teal": 1800, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1603 + ] + }, + { + "teal": 1801, + "source": "contracts/validatorRegistry.algo.ts:459", + "pc": [ + 1604 + ] + }, + { + "teal": 1804, + "source": "contracts/validatorRegistry.algo.ts:459", + "errorMessage": "specified validator id isn't valid", + "pc": [ + 1605 + ] + }, + { + "teal": 1808, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1606, + 1607 + ] + }, + { + "teal": 1809, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1608, + 1609 + ] + }, + { + "teal": 1810, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1610 + ] + }, + { + "teal": 1811, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1611, + 1612 + ] + }, + { + "teal": 1812, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1613 + ] + }, + { + "teal": 1813, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1614 + ] + }, + { + "teal": 1814, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1615, + 1616 + ] + }, + { + "teal": 1815, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1617 + ] + }, + { + "teal": 1816, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1618 + ] + }, + { + "teal": 1817, + "source": "contracts/validatorRegistry.algo.ts:461", + "pc": [ + 1619, + 1620 + ] + }, + { + "teal": 1822, + "source": "contracts/validatorRegistry.algo.ts:462", + "pc": [ + 1621, + 1622 + ] + }, + { + "teal": 1823, + "source": "contracts/constants.algo.ts:30", + "pc": [ + 1623 + ] + }, + { + "teal": 1824, + "source": "contracts/validatorRegistry.algo.ts:462", + "pc": [ + 1624 + ] + }, + { + "teal": 1825, + "source": "contracts/validatorRegistry.algo.ts:462", + "pc": [ + 1625, + 1626, + 1627 + ] + }, + { + "teal": 1829, + "source": "contracts/validatorRegistry.algo.ts:463", + "errorMessage": "already at max pool size", + "pc": [ + 1628 + ] + }, + { + "teal": 1834, + "source": "contracts/validatorRegistry.algo.ts:465", + "pc": [ + 1629, + 1630 + ] + }, + { + "teal": 1835, + "source": "contracts/validatorRegistry.algo.ts:465", + "pc": [ + 1631 + ] + }, + { + "teal": 1836, + "source": "contracts/validatorRegistry.algo.ts:465", + "pc": [ + 1632 + ] + }, + { + "teal": 1837, + "source": "contracts/validatorRegistry.algo.ts:465", + "pc": [ + 1633, + 1634 + ] + }, + { + "teal": 1859, + "source": "contracts/validatorRegistry.algo.ts:468", + "pc": [ + 1635 + ] + }, + { + "teal": 1860, + "source": "contracts/validatorRegistry.algo.ts:468", + "pc": [ + 1636, + 1637 + ] + }, + { + "teal": 1861, + "source": "contracts/validatorRegistry.algo.ts:468", + "pc": [ + 1638, + 1639 + ] + }, + { + "teal": 1865, + "source": "contracts/validatorRegistry.algo.ts:469", + "pc": [ + 1640 + ] + }, + { + "teal": 1866, + "source": "contracts/validatorRegistry.algo.ts:469", + "pc": [ + 1641, + 1642 + ] + }, + { + "teal": 1873, + "source": "contracts/validatorRegistry.algo.ts:471", + "pc": [ + 1643, + 1644 + ] + }, + { + "teal": 1874, + "source": "contracts/validatorRegistry.algo.ts:471", + "pc": [ + 1645 + ] + }, + { + "teal": 1875, + "source": "contracts/validatorRegistry.algo.ts:471", + "pc": [ + 1646, + 1647 + ] + }, + { + "teal": 1876, + "source": "contracts/validatorRegistry.algo.ts:471", + "pc": [ + 1648 + ] + }, + { + "teal": 1877, + "source": "contracts/validatorRegistry.algo.ts:471", + "pc": [ + 1649, + 1650 + ] + }, + { + "teal": 1878, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1651, + 1652 + ] + }, + { + "teal": 1879, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1653, + 1654 + ] + }, + { + "teal": 1880, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1655, + 1656 + ] + }, + { + "teal": 1881, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1657 + ] + }, + { + "teal": 1884, + "source": "contracts/validatorRegistry.algo.ts:472", + "errorMessage": "box value does not exist: this.stakingPoolApprovalProgram.size", + "pc": [ + 1658 + ] + }, + { + "teal": 1885, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1659, + 1660 + ] + }, + { + "teal": 1886, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1661 + ] + }, + { + "teal": 1887, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1662 + ] + }, + { + "teal": 1888, + "source": "contracts/validatorRegistry.algo.ts:472", + "pc": [ + 1663, + 1664 + ] + }, + { + "teal": 1892, + "source": "contracts/validatorRegistry.algo.ts:474", + "pc": [ + 1665, + 1666, + 1667 + ] + }, + { + "teal": 1893, + "source": "contracts/validatorRegistry.algo.ts:474", + "pc": [ + 1668, + 1669 + ] + }, + { + "teal": 1897, + "source": "contracts/validatorRegistry.algo.ts:475", + "pc": [ + 1670, + 1671 + ] + }, + { + "teal": 1898, + "source": "contracts/validatorRegistry.algo.ts:475", + "pc": [ + 1672, + 1673 + ] + }, + { + "teal": 1902, + "source": "contracts/validatorRegistry.algo.ts:476", + "pc": [ + 1674, + 1675 + ] + }, + { + "teal": 1903, + "source": "contracts/validatorRegistry.algo.ts:476", + "pc": [ + 1676, + 1677 + ] + }, + { + "teal": 1907, + "source": "contracts/validatorRegistry.algo.ts:477", + "pc": [ + 1678, + 1679 + ] + }, + { + "teal": 1908, + "source": "contracts/validatorRegistry.algo.ts:477", + "pc": [ + 1680, + 1681 + ] + }, + { + "teal": 1919, + "source": "contracts/validatorRegistry.algo.ts:480", + "pc": [ + 1682, + 1683, + 1684, + 1685, + 1686, + 1687 + ] + }, + { + "teal": 1920, + "source": "contracts/validatorRegistry.algo.ts:480", + "pc": [ + 1688, + 1689 + ] + }, + { + "teal": 1921, + "source": "contracts/validatorRegistry.algo.ts:481", + "pc": [ + 1690, + 1691, + 1692 + ] + }, + { + "teal": 1922, + "source": "contracts/validatorRegistry.algo.ts:481", + "pc": [ + 1693 + ] + }, + { + "teal": 1923, + "source": "contracts/validatorRegistry.algo.ts:481", + "pc": [ + 1694, + 1695 + ] + }, + { + "teal": 1924, + "source": "contracts/validatorRegistry.algo.ts:482", + "pc": [ + 1696, + 1697 + ] + }, + { + "teal": 1925, + "source": "contracts/validatorRegistry.algo.ts:482", + "pc": [ + 1698 + ] + }, + { + "teal": 1926, + "source": "contracts/validatorRegistry.algo.ts:482", + "pc": [ + 1699, + 1700 + ] + }, + { + "teal": 1927, + "source": "contracts/validatorRegistry.algo.ts:483", + "pc": [ + 1701, + 1702 + ] + }, + { + "teal": 1928, + "source": "contracts/validatorRegistry.algo.ts:483", + "pc": [ + 1703 + ] + }, + { + "teal": 1929, + "source": "contracts/validatorRegistry.algo.ts:483", + "pc": [ + 1704, + 1705 + ] + }, + { + "teal": 1930, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1706, + 1707 + ] + }, + { + "teal": 1931, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1708 + ] + }, + { + "teal": 1932, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1709 + ] + }, + { + "teal": 1933, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1710, + 1711 + ] + }, + { + "teal": 1934, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1712 + ] + }, + { + "teal": 1935, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1713 + ] + }, + { + "teal": 1936, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1714, + 1715 + ] + }, + { + "teal": 1937, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1716 + ] + }, + { + "teal": 1938, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1717 + ] + }, + { + "teal": 1939, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1718 + ] + }, + { + "teal": 1940, + "source": "contracts/validatorRegistry.algo.ts:484", + "pc": [ + 1719, + 1720 + ] + }, + { + "teal": 1943, + "source": "contracts/validatorRegistry.algo.ts:468", + "pc": [ + 1721 + ] + }, + { + "teal": 1944, + "source": "contracts/validatorRegistry.algo.ts:468", + "pc": [ + 1722, + 1723 + ] + }, + { + "teal": 1947, + "source": "contracts/validatorRegistry.algo.ts:468", + "pc": [ + 1724 + ] + }, + { + "teal": 1951, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1725, + 1726 + ] + }, + { + "teal": 1952, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1727, + 1728 + ] + }, + { + "teal": 1953, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1729 + ] + }, + { + "teal": 1954, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1730, + 1731, + 1732 + ] + }, + { + "teal": 1955, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1733 + ] + }, + { + "teal": 1956, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1734, + 1735 + ] + }, + { + "teal": 1957, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1736 + ] + }, + { + "teal": 1958, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1737 + ] + }, + { + "teal": 1959, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1738, + 1739 + ] + }, + { + "teal": 1960, + "source": "contracts/validatorRegistry.algo.ts:488", + "pc": [ + 1740 + ] + }, + { + "teal": 1964, + "source": "contracts/validatorRegistry.algo.ts:491", + "pc": [ + 1741, + 1742 + ] + }, + { + "teal": 1965, + "source": "contracts/validatorRegistry.algo.ts:491", + "pc": [ + 1743, + 1744 + ] + }, + { + "teal": 1969, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1745, + 1746 + ] + }, + { + "teal": 1970, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1747, + 1748 + ] + }, + { + "teal": 1971, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1749 + ] + }, + { + "teal": 1972, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1750 + ] + }, + { + "teal": 1973, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1751, + 1752 + ] + }, + { + "teal": 1974, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1753 + ] + }, + { + "teal": 1975, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1754 + ] + }, + { + "teal": 1976, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1755 + ] + }, + { + "teal": 1977, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1756 + ] + }, + { + "teal": 1978, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1757, + 1758 + ] + }, + { + "teal": 1979, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1759 + ] + }, + { + "teal": 1980, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1760 + ] + }, + { + "teal": 1981, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1761, + 1762 + ] + }, + { + "teal": 1982, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1763 + ] + }, + { + "teal": 1983, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1764 + ] + }, + { + "teal": 1984, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1765, + 1766 + ] + }, + { + "teal": 1985, + "source": "contracts/validatorRegistry.algo.ts:492", + "pc": [ + 1767 + ] + }, + { + "teal": 1989, + "source": "contracts/validatorRegistry.algo.ts:493", + "pc": [ + 1768, + 1769 + ] + }, + { + "teal": 1990, + "source": "contracts/validatorRegistry.algo.ts:493", + "pc": [ + 1770, + 1771 + ] + }, + { + "teal": 1991, + "source": "contracts/validatorRegistry.algo.ts:493", + "pc": [ + 1772, + 1773 + ] + }, + { + "teal": 1992, + "source": "contracts/validatorRegistry.algo.ts:493", + "pc": [ + 1774, + 1775, + 1776 + ] + }, + { + "teal": 2000, + "source": "contracts/validatorRegistry.algo.ts:495", + "pc": [ + 1777, + 1778, + 1779, + 1780, + 1781, + 1782 + ] + }, + { + "teal": 2001, + "source": "contracts/validatorRegistry.algo.ts:496", + "pc": [ + 1783, + 1784 + ] + }, + { + "teal": 2002, + "source": "contracts/validatorRegistry.algo.ts:496", + "pc": [ + 1785 + ] + }, + { + "teal": 2003, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1786, + 1787 + ] + }, + { + "teal": 2004, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1788 + ] + }, + { + "teal": 2005, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1789 + ] + }, + { + "teal": 2006, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1790 + ] + }, + { + "teal": 2007, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1791, + 1792 + ] + }, + { + "teal": 2008, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1793 + ] + }, + { + "teal": 2011, + "source": "contracts/validatorRegistry.algo.ts:497", + "errorMessage": "numPools as uint16 overflowed 16 bits", + "pc": [ + 1794 + ] + }, + { + "teal": 2012, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1795, + 1796, + 1797 + ] + }, + { + "teal": 2013, + "source": "contracts/validatorRegistry.algo.ts:497", + "pc": [ + 1798 + ] + }, + { + "teal": 2014, + "source": "contracts/validatorRegistry.algo.ts:498", + "pc": [ + 1799, + 1800 + ] + }, + { + "teal": 2015, + "source": "contracts/validatorRegistry.algo.ts:498", + "pc": [ + 1801 + ] + }, + { + "teal": 2016, + "source": "contracts/validatorRegistry.algo.ts:498", + "pc": [ + 1802 + ] + }, + { + "teal": 2017, + "source": "contracts/validatorRegistry.algo.ts:495", + "pc": [ + 1803 + ] + }, + { + "teal": 2018, + "source": "contracts/validatorRegistry.algo.ts:495", + "pc": [ + 1804 + ] + }, + { + "teal": 2022, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1805, + 1806 + ] + }, + { + "teal": 2023, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1807 + ] + }, + { + "teal": 2024, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1808, + 1809 + ] + }, + { + "teal": 2025, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1810 + ] + }, + { + "teal": 2026, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1811 + ] + }, + { + "teal": 2027, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1812, + 1813 + ] + }, + { + "teal": 2028, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1814 + ] + }, + { + "teal": 2029, + "source": "contracts/validatorRegistry.algo.ts:501", + "pc": [ + 1815 + ] + }, + { + "teal": 2032, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1816, + 1817 + ] + }, + { + "teal": 2035, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1818, + 1819 + ] + }, + { + "teal": 2036, + "source": "contracts/validatorRegistry.algo.ts:453", + "pc": [ + 1820 + ] + }, + { + "teal": 2041, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1821 + ] + }, + { + "teal": 2044, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1822, + 1823, + 1824 + ] + }, + { + "teal": 2045, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1825 + ] + }, + { + "teal": 2048, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1826, + 1827, + 1828 + ] + }, + { + "teal": 2049, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1829 + ] + }, + { + "teal": 2052, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1830, + 1831 + ] + }, + { + "teal": 2053, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1832 + ] + }, + { + "teal": 2054, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1833 + ] + }, + { + "teal": 2055, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1834 + ] + }, + { + "teal": 2056, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1835, + 1836 + ] + }, + { + "teal": 2057, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1837 + ] + }, + { + "teal": 2058, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1838 + ] + }, + { + "teal": 2061, + "source": "contracts/validatorRegistry.algo.ts:513", + "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", + "pc": [ + 1839 + ] + }, + { + "teal": 2064, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1840, + 1841, + 1842 + ] + }, + { + "teal": 2065, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1843 + ] + }, + { + "teal": 2066, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1844 + ] + }, + { + "teal": 2067, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1845 + ] + }, + { + "teal": 2068, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1846 + ] + }, + { + "teal": 2080, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1847, + 1848, + 1849 + ] + }, + { + "teal": 2083, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1850 + ] + }, + { + "teal": 2084, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 1851, + 1852 + ] + }, + { + "teal": 2088, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1853 + ] + }, + { + "teal": 2089, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1854, + 1855 + ] + }, + { + "teal": 2090, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1856 + ] + }, + { + "teal": 2091, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1857 + ] + }, + { + "teal": 2092, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1858 + ] + }, + { + "teal": 2093, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1859 + ] + }, + { + "teal": 2094, + "source": "contracts/validatorRegistry.algo.ts:514", + "pc": [ + 1860 + ] + }, + { + "teal": 2097, + "source": "contracts/validatorRegistry.algo.ts:514", + "errorMessage": "specified validator id isn't valid", + "pc": [ + 1861 + ] + }, + { + "teal": 2102, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1862, + 1863 + ] + }, + { + "teal": 2103, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1864 + ] + }, + { + "teal": 2104, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1865 + ] + }, + { + "teal": 2105, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1866, + 1867 + ] + }, + { + "teal": 2106, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1868 + ] + }, + { + "teal": 2107, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1869 + ] + }, + { + "teal": 2108, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1870, + 1871 + ] + }, + { + "teal": 2109, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1872 + ] + }, + { + "teal": 2110, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1873 + ] + }, + { + "teal": 2111, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1874 + ] + }, + { + "teal": 2112, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1875 + ] + }, + { + "teal": 2113, + "source": "contracts/validatorRegistry.algo.ts:517", + "pc": [ + 1876, + 1877, + 1878 + ] + }, + { + "teal": 2121, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1879, + 1880 + ] + }, + { + "teal": 2122, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1881 + ] + }, + { + "teal": 2123, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1882 + ] + }, + { + "teal": 2124, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1883, + 1884 + ] + }, + { + "teal": 2125, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1885 + ] + }, + { + "teal": 2126, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1886 + ] + }, + { + "teal": 2127, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1887, + 1888 + ] + }, + { + "teal": 2128, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1889 + ] + }, + { + "teal": 2129, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1890 + ] + }, + { + "teal": 2130, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1891, + 1892 + ] + }, + { + "teal": 2131, + "source": "contracts/validatorRegistry.algo.ts:520", + "pc": [ + 1893 + ] + }, + { + "teal": 2134, + "source": "contracts/validatorRegistry.algo.ts:519", + "errorMessage": "can't stake with a validator that is past its sunsetting time", + "pc": [ + 1894 + ] + }, + { + "teal": 2139, + "source": "contracts/validatorRegistry.algo.ts:525", + "pc": [ + 1895, + 1896 + ] + }, + { + "teal": 2140, + "source": "contracts/validatorRegistry.algo.ts:525", + "pc": [ + 1897, + 1898 + ] + }, + { + "teal": 2148, + "source": "contracts/validatorRegistry.algo.ts:529", + "pc": [ + 1899, + 1900 + ] + }, + { + "teal": 2149, + "source": "contracts/validatorRegistry.algo.ts:530", + "pc": [ + 1901, + 1902 + ] + }, + { + "teal": 2150, + "source": "contracts/validatorRegistry.algo.ts:530", + "pc": [ + 1903, + 1904 + ] + }, + { + "teal": 2151, + "source": "contracts/validatorRegistry.algo.ts:530", + "pc": [ + 1905 + ] + }, + { + "teal": 2154, + "source": "contracts/validatorRegistry.algo.ts:530", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", + "pc": [ + 1906 + ] + }, + { + "teal": 2157, + "source": "contracts/validatorRegistry.algo.ts:529", + "pc": [ + 1907, + 1908 + ] + }, + { + "teal": 2158, + "source": "contracts/validatorRegistry.algo.ts:531", + "pc": [ + 1909, + 1910 + ] + }, + { + "teal": 2159, + "source": "contracts/validatorRegistry.algo.ts:531", + "pc": [ + 1911, + 1912 + ] + }, + { + "teal": 2160, + "source": "contracts/validatorRegistry.algo.ts:531", + "pc": [ + 1913 + ] + }, + { + "teal": 2163, + "source": "contracts/validatorRegistry.algo.ts:531", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "pc": [ + 1914 + ] + }, + { + "teal": 2167, + "source": "contracts/validatorRegistry.algo.ts:537", + "pc": [ + 1915, + 1916 + ] + }, + { + "teal": 2168, + "source": "contracts/validatorRegistry.algo.ts:537", + "pc": [ + 1917, + 1918 + ] + }, + { + "teal": 2169, + "source": "contracts/validatorRegistry.algo.ts:537", + "pc": [ + 1919, + 1920, + 1921 + ] + }, + { + "teal": 2173, + "source": "contracts/validatorRegistry.algo.ts:539", + "pc": [ + 1922, + 1923 + ] + }, + { + "teal": 2174, + "source": "contracts/validatorRegistry.algo.ts:539", + "pc": [ + 1924, + 1925 + ] + }, + { + "teal": 2175, + "source": "contracts/validatorRegistry.algo.ts:539", + "pc": [ + 1926, + 1927 + ] + }, + { + "teal": 2179, + "source": "contracts/validatorRegistry.algo.ts:540", + "pc": [ + 1928 + ] + }, + { + "teal": 2180, + "source": "contracts/validatorRegistry.algo.ts:540", + "pc": [ + 1929, + 1930 + ] + }, + { + "teal": 2185, + "source": "contracts/validatorRegistry.algo.ts:542", + "pc": [ + 1931, + 1932 + ] + }, + { + "teal": 2186, + "source": "contracts/validatorRegistry.algo.ts:542", + "pc": [ + 1933, + 1934, + 1935 + ] + }, + { + "teal": 2187, + "source": "contracts/validatorRegistry.algo.ts:542", + "pc": [ + 1936, + 1937, + 1938 + ] + }, + { + "teal": 2192, + "source": "contracts/validatorRegistry.algo.ts:545", + "pc": [ + 1939, + 1940, + 1941 + ] + }, + { + "teal": 2193, + "source": "contracts/validatorRegistry.algo.ts:545", + "pc": [ + 1942, + 1943, + 1944 + ] + }, + { + "teal": 2194, + "source": "contracts/validatorRegistry.algo.ts:545", + "pc": [ + 1945 + ] + }, + { + "teal": 2195, + "source": "contracts/validatorRegistry.algo.ts:545", + "pc": [ + 1946, + 1947 + ] + }, + { + "teal": 2199, + "source": "contracts/validatorRegistry.algo.ts:546", + "pc": [ + 1948, + 1949 + ] + }, + { + "teal": 2200, + "source": "contracts/validatorRegistry.algo.ts:546", + "pc": [ + 1950, + 1951 + ] + }, + { + "teal": 2201, + "source": "contracts/validatorRegistry.algo.ts:546", + "pc": [ + 1952 + ] + }, + { + "teal": 2202, + "source": "contracts/validatorRegistry.algo.ts:546", + "pc": [ + 1953, + 1954 + ] + }, + { + "teal": 2206, + "source": "contracts/validatorRegistry.algo.ts:547", + "pc": [ + 1955 + ] + }, + { + "teal": 2207, + "source": "contracts/validatorRegistry.algo.ts:547", + "pc": [ + 1956, + 1957 + ] + }, + { + "teal": 2208, + "source": "contracts/validatorRegistry.algo.ts:547", + "pc": [ + 1958 + ] + }, + { + "teal": 2209, + "source": "contracts/validatorRegistry.algo.ts:547", + "pc": [ + 1959, + 1960, + 1961 + ] + }, + { + "teal": 2210, + "source": "contracts/validatorRegistry.algo.ts:547", + "pc": [ + 1962 + ] + }, + { + "teal": 2211, + "source": "contracts/validatorRegistry.algo.ts:547", + "pc": [ + 1963 + ] + }, + { + "teal": 2219, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1964, + 1965 + ] + }, + { + "teal": 2220, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1966 + ] + }, + { + "teal": 2221, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1967 + ] + }, + { + "teal": 2222, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1968, + 1969 + ] + }, + { + "teal": 2223, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1970 + ] + }, + { + "teal": 2224, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1971 + ] + }, + { + "teal": 2225, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1972, + 1973 + ] + }, + { + "teal": 2226, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1974 + ] + }, + { + "teal": 2227, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1975 + ] + }, + { + "teal": 2228, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1976, + 1977 + ] + }, + { + "teal": 2229, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1978 + ] + }, + { + "teal": 2230, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1979, + 1980, + 1981 + ] + }, + { + "teal": 2231, + "source": "contracts/validatorRegistry.algo.ts:552", + "pc": [ + 1982 + ] + }, + { + "teal": 2234, + "source": "contracts/validatorRegistry.algo.ts:551", + "errorMessage": "total staked for all of a validators pools may not exceed hard cap", + "pc": [ + 1983 + ] + }, + { + "teal": 2238, + "source": "contracts/validatorRegistry.algo.ts:558", + "pc": [ + 1984, + 1985 + ] + }, + { + "teal": 2239, + "source": "contracts/validatorRegistry.algo.ts:558", + "pc": [ + 1986, + 1987 + ] + }, + { + "teal": 2240, + "source": "contracts/validatorRegistry.algo.ts:558", + "pc": [ + 1988, + 1989 + ] + }, + { + "teal": 2241, + "source": "contracts/validatorRegistry.algo.ts:558", + "pc": [ + 1990, + 1991, + 1992 + ] + }, + { + "teal": 2242, + "source": "contracts/validatorRegistry.algo.ts:558", + "pc": [ + 1993, + 1994 + ] + }, + { + "teal": 2248, + "source": "contracts/validatorRegistry.algo.ts:560", + "pc": [ + 1995, + 1996 + ] + }, + { + "teal": 2249, + "source": "contracts/validatorRegistry.algo.ts:560", + "pc": [ + 1997, + 1998 + ] + }, + { + "teal": 2250, + "source": "contracts/validatorRegistry.algo.ts:560", + "pc": [ + 1999, + 2000 + ] + }, + { + "teal": 2251, + "source": "contracts/validatorRegistry.algo.ts:560", + "pc": [ + 2001, + 2002 + ] + }, + { + "teal": 2252, + "source": "contracts/validatorRegistry.algo.ts:560", + "pc": [ + 2003 + ] + }, + { + "teal": 2253, + "source": "contracts/validatorRegistry.algo.ts:560", + "pc": [ + 2004, + 2005 + ] + }, + { + "teal": 2257, + "source": "contracts/validatorRegistry.algo.ts:561", + "pc": [ + 2006, + 2007 + ] + }, + { + "teal": 2258, + "source": "contracts/validatorRegistry.algo.ts:561", + "pc": [ + 2008, + 2009 + ] + }, + { + "teal": 2259, + "source": "contracts/validatorRegistry.algo.ts:561", + "pc": [ + 2010, + 2011 + ] + }, + { + "teal": 2260, + "source": "contracts/validatorRegistry.algo.ts:561", + "pc": [ + 2012, + 2013, + 2014 + ] + }, + { + "teal": 2261, + "source": "contracts/validatorRegistry.algo.ts:561", + "pc": [ + 2015 + ] + }, + { + "teal": 2262, + "source": "contracts/validatorRegistry.algo.ts:561", + "pc": [ + 2016, + 2017 + ] + }, + { + "teal": 2267, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2018, + 2019 + ] + }, + { + "teal": 2268, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2020, + 2021 + ] + }, + { + "teal": 2269, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2022, + 2023 + ] + }, + { + "teal": 2270, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2024, + 2025, + 2026 + ] + }, + { + "teal": 2271, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2027 + ] + }, + { + "teal": 2272, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2028 + ] + }, + { + "teal": 2273, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2029 + ] + }, + { + "teal": 2274, + "source": "contracts/validatorRegistry.algo.ts:562", + "pc": [ + 2030, + 2031, + 2032 + ] + }, + { + "teal": 2278, + "source": "contracts/validatorRegistry.algo.ts:563", + "errorMessage": "No pool available with free stake. Validator needs to add another pool", + "pc": [ + 2033 + ] + }, + { + "teal": 2283, + "source": "contracts/validatorRegistry.algo.ts:567", + "pc": [ + 2034, + 2035 + ] + }, + { + "teal": 2284, + "source": "contracts/validatorRegistry.algo.ts:567", + "pc": [ + 2036, + 2037 + ] + }, + { + "teal": 2285, + "source": "contracts/validatorRegistry.algo.ts:567", + "pc": [ + 2038, + 2039 + ] + }, + { + "teal": 2286, + "source": "contracts/validatorRegistry.algo.ts:567", + "pc": [ + 2040, + 2041, + 2042 + ] + }, + { + "teal": 2287, + "source": "contracts/validatorRegistry.algo.ts:567", + "pc": [ + 2043, + 2044 + ] + }, + { + "teal": 2288, + "source": "contracts/validatorRegistry.algo.ts:567", + "pc": [ + 2045, + 2046, + 2047 + ] + }, + { + "teal": 2298, + "source": "contracts/validatorRegistry.algo.ts:575", + "pc": [ + 2048, + 2049 + ] + }, + { + "teal": 2299, + "source": "contracts/validatorRegistry.algo.ts:574", + "pc": [ + 2050, + 2051 + ] + }, + { + "teal": 2300, + "source": "contracts/validatorRegistry.algo.ts:573", + "pc": [ + 2052, + 2053 + ] + }, + { + "teal": 2301, + "source": "contracts/validatorRegistry.algo.ts:572", + "pc": [ + 2054, + 2055 + ] + }, + { + "teal": 2302, + "source": "contracts/validatorRegistry.algo.ts:572", + "pc": [ + 2056, + 2057 + ] + }, + { + "teal": 2303, + "source": "contracts/validatorRegistry.algo.ts:572", + "pc": [ + 2058, + 2059 + ] + }, + { + "teal": 2304, + "source": "contracts/validatorRegistry.algo.ts:572", + "pc": [ + 2060, + 2061, + 2062 + ] + }, + { + "teal": 2305, + "source": "contracts/validatorRegistry.algo.ts:571", + "pc": [ + 2063, + 2064 + ] + }, + { + "teal": 2306, + "source": "contracts/validatorRegistry.algo.ts:570", + "pc": [ + 2065, + 2066, + 2067 + ] + }, + { + "teal": 2316, + "source": "contracts/validatorRegistry.algo.ts:577", + "pc": [ + 2068, + 2069, + 2070, + 2071, + 2072, + 2073 + ] + }, + { + "teal": 2317, + "source": "contracts/validatorRegistry.algo.ts:578", + "pc": [ + 2074, + 2075 + ] + }, + { + "teal": 2318, + "source": "contracts/validatorRegistry.algo.ts:578", + "pc": [ + 2076 + ] + }, + { + "teal": 2319, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2077, + 2078 + ] + }, + { + "teal": 2320, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2079, + 2080 + ] + }, + { + "teal": 2321, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2081, + 2082 + ] + }, + { + "teal": 2322, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2083, + 2084, + 2085 + ] + }, + { + "teal": 2323, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2086 + ] + }, + { + "teal": 2324, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2087 + ] + }, + { + "teal": 2325, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2088 + ] + }, + { + "teal": 2326, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2089 + ] + }, + { + "teal": 2327, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2090, + 2091 + ] + }, + { + "teal": 2328, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2092 + ] + }, + { + "teal": 2331, + "source": "contracts/validatorRegistry.algo.ts:579", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "pc": [ + 2093 + ] + }, + { + "teal": 2332, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2094, + 2095, + 2096 + ] + }, + { + "teal": 2333, + "source": "contracts/validatorRegistry.algo.ts:579", + "pc": [ + 2097 + ] + }, + { + "teal": 2334, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2098, + 2099 + ] + }, + { + "teal": 2335, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2100, + 2101 + ] + }, + { + "teal": 2336, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2102, + 2103 + ] + }, + { + "teal": 2337, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2104, + 2105, + 2106 + ] + }, + { + "teal": 2338, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2107 + ] + }, + { + "teal": 2339, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2108 + ] + }, + { + "teal": 2340, + "source": "contracts/validatorRegistry.algo.ts:580", + "pc": [ + 2109 + ] + }, + { + "teal": 2341, + "source": "contracts/validatorRegistry.algo.ts:582", + "pc": [ + 2110, + 2111 + ] + }, + { + "teal": 2342, + "source": "contracts/validatorRegistry.algo.ts:582", + "pc": [ + 2112 + ] + }, + { + "teal": 2343, + "source": "contracts/validatorRegistry.algo.ts:581", + "pc": [ + 2113, + 2114 + ] + }, + { + "teal": 2344, + "source": "contracts/validatorRegistry.algo.ts:581", + "pc": [ + 2115 + ] + }, + { + "teal": 2345, + "source": "contracts/validatorRegistry.algo.ts:581", + "pc": [ + 2116 + ] + }, + { + "teal": 2346, + "source": "contracts/validatorRegistry.algo.ts:577", + "pc": [ + 2117 + ] + }, + { + "teal": 2347, + "source": "contracts/validatorRegistry.algo.ts:577", + "pc": [ + 2118 + ] + }, + { + "teal": 2351, + "source": "contracts/validatorRegistry.algo.ts:585", + "pc": [ + 2119, + 2120 + ] + }, + { + "teal": 2352, + "source": "contracts/validatorRegistry.algo.ts:585", + "pc": [ + 2121, + 2122 + ] + }, + { + "teal": 2353, + "source": "contracts/validatorRegistry.algo.ts:585", + "pc": [ + 2123, + 2124 + ] + }, + { + "teal": 2354, + "source": "contracts/validatorRegistry.algo.ts:585", + "pc": [ + 2125, + 2126, + 2127 + ] + }, + { + "teal": 2357, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 2128, + 2129 + ] + }, + { + "teal": 2360, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 2130, + 2131 + ] + }, + { + "teal": 2361, + "source": "contracts/validatorRegistry.algo.ts:513", + "pc": [ + 2132 + ] + }, + { + "teal": 2366, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2133 + ] + }, + { + "teal": 2369, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2134, + 2135, + 2136 + ] + }, + { + "teal": 2370, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2137 + ] + }, + { + "teal": 2373, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2138, + 2139, + 2140 + ] + }, + { + "teal": 2374, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2141 + ] + }, + { + "teal": 2375, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2142 + ] + }, + { + "teal": 2376, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2143 + ] + }, + { + "teal": 2377, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2144 + ] + }, + { + "teal": 2395, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2145, + 2146, + 2147 + ] + }, + { + "teal": 2398, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2148 + ] + }, + { + "teal": 2399, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2149, + 2150 + ] + }, + { + "teal": 2403, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2151, + 2152 + ] + }, + { + "teal": 2404, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2153 + ] + }, + { + "teal": 2405, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2154 + ] + }, + { + "teal": 2406, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2155, + 2156 + ] + }, + { + "teal": 2407, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2157 + ] + }, + { + "teal": 2408, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2158 + ] + }, + { + "teal": 2409, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2159, + 2160 + ] + }, + { + "teal": 2410, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2161 + ] + }, + { + "teal": 2411, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2162 + ] + }, + { + "teal": 2412, + "source": "contracts/validatorRegistry.algo.ts:605", + "pc": [ + 2163, + 2164 + ] + }, + { + "teal": 2416, + "source": "contracts/validatorRegistry.algo.ts:606", + "pc": [ + 2165, + 2166 + ] + }, + { + "teal": 2417, + "source": "contracts/validatorRegistry.algo.ts:606", + "pc": [ + 2167 + ] + }, + { + "teal": 2418, + "source": "contracts/validatorRegistry.algo.ts:606", + "pc": [ + 2168 + ] + }, + { + "teal": 2419, + "source": "contracts/validatorRegistry.algo.ts:606", + "pc": [ + 2169 + ] + }, + { + "teal": 2424, + "source": "contracts/validatorRegistry.algo.ts:608", + "pc": [ + 2170, + 2171 + ] + }, + { + "teal": 2425, + "source": "contracts/validatorRegistry.algo.ts:608", + "pc": [ + 2172, + 2173 + ] + }, + { + "teal": 2426, + "source": "contracts/validatorRegistry.algo.ts:608", + "pc": [ + 2174, + 2175 + ] + }, + { + "teal": 2427, + "source": "contracts/validatorRegistry.algo.ts:608", + "pc": [ + 2176 + ] + }, + { + "teal": 2428, + "source": "contracts/validatorRegistry.algo.ts:608", + "pc": [ + 2177 + ] + }, + { + "teal": 2429, + "source": "contracts/validatorRegistry.algo.ts:608", + "pc": [ + 2178, + 2179, + 2180 + ] + }, + { + "teal": 2434, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2181, + 2182 + ] + }, + { + "teal": 2435, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2183, + 2184 + ] + }, + { + "teal": 2436, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2185 + ] + }, + { + "teal": 2437, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2186, + 2187 + ] + }, + { + "teal": 2438, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2188 + ] + }, + { + "teal": 2439, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2189 + ] + }, + { + "teal": 2440, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2190, + 2191 + ] + }, + { + "teal": 2441, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2192 + ] + }, + { + "teal": 2442, + "source": "contracts/validatorRegistry.algo.ts:609", + "pc": [ + 2193, + 2194, + 2195 + ] + }, + { + "teal": 2447, + "source": "contracts/validatorRegistry.algo.ts:615", + "pc": [ + 2196, + 2197 + ] + }, + { + "teal": 2448, + "source": "contracts/validatorRegistry.algo.ts:615", + "pc": [ + 2198, + 2199 + ] + }, + { + "teal": 2452, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2200, + 2201 + ] + }, + { + "teal": 2453, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2202 + ] + }, + { + "teal": 2454, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2203 + ] + }, + { + "teal": 2455, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2204, + 2205 + ] + }, + { + "teal": 2456, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2206 + ] + }, + { + "teal": 2457, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2207 + ] + }, + { + "teal": 2458, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2208, + 2209 + ] + }, + { + "teal": 2459, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2210 + ] + }, + { + "teal": 2460, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2211 + ] + }, + { + "teal": 2461, + "source": "contracts/validatorRegistry.algo.ts:616", + "pc": [ + 2212, + 2213 + ] + }, + { + "teal": 2466, + "source": "contracts/validatorRegistry.algo.ts:617", + "pc": [ + 2214, + 2215 + ] + }, + { + "teal": 2467, + "source": "contracts/validatorRegistry.algo.ts:617", + "pc": [ + 2216 + ] + }, + { + "teal": 2468, + "source": "contracts/validatorRegistry.algo.ts:617", + "pc": [ + 2217 + ] + }, + { + "teal": 2469, + "source": "contracts/validatorRegistry.algo.ts:617", + "pc": [ + 2218, + 2219, + 2220 + ] + }, + { + "teal": 2475, + "source": "contracts/validatorRegistry.algo.ts:619", + "pc": [ + 2221, + 2222 + ] + }, + { + "teal": 2476, + "source": "contracts/validatorRegistry.algo.ts:619", + "pc": [ + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2234 + ] + }, + { + "teal": 2477, + "source": "contracts/validatorRegistry.algo.ts:619", + "pc": [ + 2235 + ] + }, + { + "teal": 2480, + "source": "contracts/validatorRegistry.algo.ts:619", + "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", + "pc": [ + 2236 + ] + }, + { + "teal": 2481, + "source": "contracts/validatorRegistry.algo.ts:619", + "pc": [ + 2237, + 2238 + ] + }, + { + "teal": 2482, + "source": "contracts/validatorRegistry.algo.ts:619", + "pc": [ + 2239 + ] + }, + { + "teal": 2483, + "source": "contracts/validatorRegistry.algo.ts:619", + "pc": [ + 2240, + 2241, + 2242 + ] + }, + { + "teal": 2488, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2243, + 2244 + ] + }, + { + "teal": 2489, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2245, + 2246 + ] + }, + { + "teal": 2490, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2247 + ] + }, + { + "teal": 2491, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2248, + 2249 + ] + }, + { + "teal": 2492, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2250 + ] + }, + { + "teal": 2493, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2251 + ] + }, + { + "teal": 2494, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2252, + 2253 + ] + }, + { + "teal": 2495, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2254 + ] + }, + { + "teal": 2496, + "source": "contracts/validatorRegistry.algo.ts:620", + "pc": [ + 2255, + 2256, + 2257 + ] + }, + { + "teal": 2501, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2258, + 2259, + 2260 + ] + }, + { + "teal": 2502, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2261, + 2262 + ] + }, + { + "teal": 2503, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2263 + ] + }, + { + "teal": 2504, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2264, + 2265 + ] + }, + { + "teal": 2505, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2266 + ] + }, + { + "teal": 2506, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2267 + ] + }, + { + "teal": 2507, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2268, + 2269 + ] + }, + { + "teal": 2508, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2270 + ] + }, + { + "teal": 2509, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2271 + ] + }, + { + "teal": 2510, + "source": "contracts/validatorRegistry.algo.ts:622", + "pc": [ + 2272, + 2273 + ] + }, + { + "teal": 2514, + "source": "contracts/validatorRegistry.algo.ts:623", + "pc": [ + 2274, + 2275 + ] + }, + { + "teal": 2515, + "source": "contracts/validatorRegistry.algo.ts:623", + "pc": [ + 2276, + 2277 + ] + }, + { + "teal": 2516, + "source": "contracts/validatorRegistry.algo.ts:623", + "pc": [ + 2278, + 2279 + ] + }, + { + "teal": 2517, + "source": "contracts/validatorRegistry.algo.ts:623", + "pc": [ + 2280 + ] + }, + { + "teal": 2518, + "source": "contracts/validatorRegistry.algo.ts:623", + "pc": [ + 2281 + ] + }, + { + "teal": 2519, + "source": "contracts/validatorRegistry.algo.ts:623", + "pc": [ + 2282, + 2283 + ] + }, + { + "teal": 2524, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2284, + 2285 + ] + }, + { + "teal": 2525, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2286, + 2287 + ] + }, + { + "teal": 2526, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2288, + 2289 + ] + }, + { + "teal": 2527, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2290 + ] + }, + { + "teal": 2528, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2291 + ] + }, + { + "teal": 2529, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2292, + 2293 + ] + }, + { + "teal": 2530, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2294 + ] + }, + { + "teal": 2531, + "source": "contracts/validatorRegistry.algo.ts:625", + "pc": [ + 2295, + 2296, + 2297 + ] + }, + { + "teal": 2536, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2298, + 2299 + ] + }, + { + "teal": 2537, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2300, + 2301 + ] + }, + { + "teal": 2538, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2302 + ] + }, + { + "teal": 2539, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2303, + 2304 + ] + }, + { + "teal": 2540, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2305 + ] + }, + { + "teal": 2541, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2306 + ] + }, + { + "teal": 2542, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2307, + 2308 + ] + }, + { + "teal": 2543, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2309 + ] + }, + { + "teal": 2544, + "source": "contracts/validatorRegistry.algo.ts:626", + "pc": [ + 2310, + 2311, + 2312 + ] + }, + { + "teal": 2551, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2313, + 2314 + ] + }, + { + "teal": 2552, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2315, + 2316 + ] + }, + { + "teal": 2553, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2317 + ] + }, + { + "teal": 2554, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2318 + ] + }, + { + "teal": 2555, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2319, + 2320 + ] + }, + { + "teal": 2556, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2321 + ] + }, + { + "teal": 2557, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2322 + ] + }, + { + "teal": 2558, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2323, + 2324 + ] + }, + { + "teal": 2559, + "source": "contracts/validatorRegistry.algo.ts:629", + "pc": [ + 2325 + ] + }, + { + "teal": 2563, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2326, + 2327 + ] + }, + { + "teal": 2564, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2328, + 2329 + ] + }, + { + "teal": 2565, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2330 + ] + }, + { + "teal": 2566, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2331, + 2332 + ] + }, + { + "teal": 2567, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2333 + ] + }, + { + "teal": 2568, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2334 + ] + }, + { + "teal": 2569, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2335, + 2336 + ] + }, + { + "teal": 2570, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2337 + ] + }, + { + "teal": 2571, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2338 + ] + }, + { + "teal": 2572, + "source": "contracts/validatorRegistry.algo.ts:631", + "pc": [ + 2339, + 2340 + ] + }, + { + "teal": 2576, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2341, + 2342 + ] + }, + { + "teal": 2577, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2343 + ] + }, + { + "teal": 2578, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2344 + ] + }, + { + "teal": 2579, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2345, + 2346 + ] + }, + { + "teal": 2580, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2347 + ] + }, + { + "teal": 2581, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2348 + ] + }, + { + "teal": 2582, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2349, + 2350 + ] + }, + { + "teal": 2583, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2351 + ] + }, + { + "teal": 2584, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2352 + ] + }, + { + "teal": 2585, + "source": "contracts/validatorRegistry.algo.ts:632", + "pc": [ + 2353, + 2354 + ] + }, + { + "teal": 2589, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2355 + ] + }, + { + "teal": 2590, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2356, + 2357 + ] + }, + { + "teal": 2595, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2358, + 2359 + ] + }, + { + "teal": 2596, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2360, + 2361 + ] + }, + { + "teal": 2597, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2362 + ] + }, + { + "teal": 2598, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2363, + 2364, + 2365 + ] + }, + { + "teal": 2605, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2366, + 2367 + ] + }, + { + "teal": 2606, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2368, + 2369 + ] + }, + { + "teal": 2607, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2370, + 2371 + ] + }, + { + "teal": 2608, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2372 + ] + }, + { + "teal": 2609, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2373 + ] + }, + { + "teal": 2610, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2374, + 2375 + ] + }, + { + "teal": 2611, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2376 + ] + }, + { + "teal": 2612, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2377 + ] + }, + { + "teal": 2613, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2378 + ] + }, + { + "teal": 2614, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2379, + 2380 + ] + }, + { + "teal": 2615, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2381 + ] + }, + { + "teal": 2616, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2382 + ] + }, + { + "teal": 2617, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2383, + 2384 + ] + }, + { + "teal": 2618, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2385 + ] + }, + { + "teal": 2619, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2386 + ] + }, + { + "teal": 2620, + "source": "contracts/validatorRegistry.algo.ts:639", + "pc": [ + 2387, + 2388, + 2389, + 2390 + ] + }, + { + "teal": 2621, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2391 + ] + }, + { + "teal": 2622, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2392 + ] + }, + { + "teal": 2623, + "source": "contracts/validatorRegistry.algo.ts:640", + "pc": [ + 2393, + 2394 + ] + }, + { + "teal": 2624, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2395 + ] + }, + { + "teal": 2625, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2396 + ] + }, + { + "teal": 2626, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2397 + ] + }, + { + "teal": 2627, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2398 + ] + }, + { + "teal": 2628, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2399 + ] + }, + { + "teal": 2631, + "source": "contracts/validatorRegistry.algo.ts:638", + "errorMessage": "wideRatio failed", + "pc": [ + 2400 + ] + }, + { + "teal": 2632, + "source": "contracts/validatorRegistry.algo.ts:638", + "pc": [ + 2401, + 2402 + ] + }, + { + "teal": 2636, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2403, + 2404 + ] + }, + { + "teal": 2637, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2405, + 2406 + ] + }, + { + "teal": 2638, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2407 + ] + }, + { + "teal": 2639, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2408 + ] + }, + { + "teal": 2640, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2409 + ] + }, + { + "teal": 2641, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2410, + 2411 + ] + }, + { + "teal": 2642, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2412 + ] + }, + { + "teal": 2643, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2413 + ] + }, + { + "teal": 2644, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2414, + 2415 + ] + }, + { + "teal": 2645, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2416 + ] + }, + { + "teal": 2646, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2417 + ] + }, + { + "teal": 2647, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2418, + 2419 + ] + }, + { + "teal": 2648, + "source": "contracts/validatorRegistry.algo.ts:642", + "pc": [ + 2420 + ] + }, + { + "teal": 2653, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2421, + 2422 + ] + }, + { + "teal": 2654, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2423 + ] + }, + { + "teal": 2655, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2424 + ] + }, + { + "teal": 2656, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2425, + 2426 + ] + }, + { + "teal": 2657, + "source": "contracts/validatorRegistry.algo.ts:633", + "pc": [ + 2427, + 2428, + 2429 + ] + }, + { + "teal": 2662, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2430, + 2431 + ] + }, + { + "teal": 2663, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2432, + 2433 + ] + }, + { + "teal": 2664, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2434 + ] + }, + { + "teal": 2665, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2435, + 2436 + ] + }, + { + "teal": 2666, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2437 + ] + }, + { + "teal": 2667, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2438 + ] + }, + { + "teal": 2668, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2439, + 2440 + ] + }, + { + "teal": 2669, + "source": "contracts/validatorRegistry.algo.ts:644", + "pc": [ + 2441 + ] + }, + { + "teal": 2673, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2442, + 2443 + ] + }, + { + "teal": 2676, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2444, + 2445 + ] + }, + { + "teal": 2677, + "source": "contracts/validatorRegistry.algo.ts:603", + "pc": [ + 2446 + ] + }, + { + "teal": 2682, + "source": "contracts/validatorRegistry.algo.ts:663", + "pc": [ + 2447, + 2448, + 2449 + ] + }, + { + "teal": 2683, + "source": "contracts/validatorRegistry.algo.ts:663", + "pc": [ + 2450 + ] + }, + { + "teal": 2686, + "source": "contracts/validatorRegistry.algo.ts:662", + "pc": [ + 2451, + 2452, + 2453 + ] + }, + { + "teal": 2687, + "source": "contracts/validatorRegistry.algo.ts:662", + "pc": [ + 2454 + ] + }, + { + "teal": 2690, + "source": "contracts/validatorRegistry.algo.ts:661", + "pc": [ + 2455, + 2456, + 2457 + ] + }, + { + "teal": 2691, + "source": "contracts/validatorRegistry.algo.ts:661", + "pc": [ + 2458 + ] + }, + { + "teal": 2694, + "source": "contracts/validatorRegistry.algo.ts:660", + "pc": [ + 2459, + 2460, + 2461 + ] + }, + { + "teal": 2695, + "source": "contracts/validatorRegistry.algo.ts:660", + "pc": [ + 2462 + ] + }, + { + "teal": 2698, + "source": "contracts/validatorRegistry.algo.ts:659", + "pc": [ + 2463, + 2464, + 2465 + ] + }, + { + "teal": 2699, + "source": "contracts/validatorRegistry.algo.ts:659", + "pc": [ + 2466 + ] + }, + { + "teal": 2700, + "source": "contracts/validatorRegistry.algo.ts:659", + "pc": [ + 2467 + ] + }, + { + "teal": 2701, + "source": "contracts/validatorRegistry.algo.ts:659", + "pc": [ + 2468 + ] + }, + { + "teal": 2702, + "source": "contracts/validatorRegistry.algo.ts:659", + "pc": [ + 2469 + ] + }, + { + "teal": 2705, + "source": "contracts/validatorRegistry.algo.ts:659", + "errorMessage": "argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)", + "pc": [ + 2470 + ] + }, + { + "teal": 2708, + "source": "contracts/validatorRegistry.algo.ts:658", + "pc": [ + 2471, + 2472, + 2473 + ] + }, + { + "teal": 2709, + "source": "contracts/validatorRegistry.algo.ts:658", + "pc": [ + 2474 + ] + }, + { + "teal": 2710, + "source": "contracts/validatorRegistry.algo.ts:658", + "pc": [ + 2475 + ] + }, + { + "teal": 2724, + "source": "contracts/validatorRegistry.algo.ts:658", + "pc": [ + 2476, + 2477, + 2478 + ] + }, + { + "teal": 2728, + "source": "contracts/validatorRegistry.algo.ts:665", + "pc": [ + 2479, + 2480 + ] + }, + { + "teal": 2729, + "source": "contracts/validatorRegistry.algo.ts:665", + "pc": [ + 2481, + 2482, + 2483 + ] + }, + { + "teal": 2733, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2484, + 2485 + ] + }, + { + "teal": 2734, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2486, + 2487 + ] + }, + { + "teal": 2735, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2488, + 2489, + 2490 + ] + }, + { + "teal": 2736, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2491 + ] + }, + { + "teal": 2737, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2492 + ] + }, + { + "teal": 2738, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2493 + ] + }, + { + "teal": 2739, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2494, + 2495 + ] + }, + { + "teal": 2740, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2496 + ] + }, + { + "teal": 2741, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2497 + ] + }, + { + "teal": 2742, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2498, + 2499 + ] + }, + { + "teal": 2743, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2500 + ] + }, + { + "teal": 2744, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2501, + 2502 + ] + }, + { + "teal": 2745, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2503, + 2504 + ] + }, + { + "teal": 2746, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2505, + 2506, + 2507 + ] + }, + { + "teal": 2747, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2508 + ] + }, + { + "teal": 2748, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2509 + ] + }, + { + "teal": 2749, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2510 + ] + }, + { + "teal": 2750, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2511, + 2512 + ] + }, + { + "teal": 2751, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2513 + ] + }, + { + "teal": 2752, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2514 + ] + }, + { + "teal": 2753, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2515, + 2516 + ] + }, + { + "teal": 2754, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2517 + ] + }, + { + "teal": 2755, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2518 + ] + }, + { + "teal": 2756, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2519 + ] + }, + { + "teal": 2757, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2520, + 2521 + ] + }, + { + "teal": 2758, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2522, + 2523, + 2524 + ] + }, + { + "teal": 2759, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2525 + ] + }, + { + "teal": 2760, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2526 + ] + }, + { + "teal": 2761, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2527 + ] + }, + { + "teal": 2762, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2528, + 2529 + ] + }, + { + "teal": 2763, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2530 + ] + }, + { + "teal": 2764, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2531 + ] + }, + { + "teal": 2765, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2532, + 2533 + ] + }, + { + "teal": 2766, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2534 + ] + }, + { + "teal": 2767, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2535 + ] + }, + { + "teal": 2768, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2536 + ] + }, + { + "teal": 2769, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2537, + 2538 + ] + }, + { + "teal": 2770, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2539, + 2540, + 2541 + ] + }, + { + "teal": 2771, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2542 + ] + }, + { + "teal": 2772, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2543 + ] + }, + { + "teal": 2773, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2544 + ] + }, + { + "teal": 2774, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2545, + 2546 + ] + }, + { + "teal": 2775, + "source": "contracts/validatorRegistry.algo.ts:668", + "pc": [ + 2547 + ] + }, + { + "teal": 2779, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2548, + 2549 + ] + }, + { + "teal": 2780, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2550 + ] + }, + { + "teal": 2781, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2551 + ] + }, + { + "teal": 2782, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2552 + ] + }, + { + "teal": 2783, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2553, + 2554 + ] + }, + { + "teal": 2784, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2555, + 2556, + 2557 + ] + }, + { + "teal": 2785, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2558 + ] + }, + { + "teal": 2786, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2559 + ] + }, + { + "teal": 2787, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2560 + ] + }, + { + "teal": 2788, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2561, + 2562 + ] + }, + { + "teal": 2789, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2563 + ] + }, + { + "teal": 2790, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2564 + ] + }, + { + "teal": 2791, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2565, + 2566 + ] + }, + { + "teal": 2792, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2567 + ] + }, + { + "teal": 2793, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2568 + ] + }, + { + "teal": 2794, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2569 + ] + }, + { + "teal": 2795, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2570, + 2571 + ] + }, + { + "teal": 2796, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2572, + 2573, + 2574 + ] + }, + { + "teal": 2797, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2575 + ] + }, + { + "teal": 2798, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2576 + ] + }, + { + "teal": 2799, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2577 + ] + }, + { + "teal": 2800, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2578, + 2579 + ] + }, + { + "teal": 2801, + "source": "contracts/validatorRegistry.algo.ts:669", + "pc": [ + 2580 + ] + }, + { + "teal": 2805, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2581, + 2582 + ] + }, + { + "teal": 2806, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2583 + ] + }, + { + "teal": 2807, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2584 + ] + }, + { + "teal": 2808, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2585 + ] + }, + { + "teal": 2809, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2586, + 2587 + ] + }, + { + "teal": 2810, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2588, + 2589, + 2590 + ] + }, + { + "teal": 2811, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2591 + ] + }, + { + "teal": 2812, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2592 + ] + }, + { + "teal": 2813, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2593 + ] + }, + { + "teal": 2814, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2594, + 2595 + ] + }, + { + "teal": 2815, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2596 + ] + }, + { + "teal": 2816, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2597 + ] + }, + { + "teal": 2817, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2598, + 2599 + ] + }, + { + "teal": 2818, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2600 + ] + }, + { + "teal": 2819, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2601 + ] + }, + { + "teal": 2820, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2602 + ] + }, + { + "teal": 2821, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2603, + 2604 + ] + }, + { + "teal": 2822, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2605, + 2606, + 2607 + ] + }, + { + "teal": 2823, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2608 + ] + }, + { + "teal": 2824, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2609 + ] + }, + { + "teal": 2825, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2610 + ] + }, + { + "teal": 2826, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2611, + 2612 + ] + }, + { + "teal": 2827, + "source": "contracts/validatorRegistry.algo.ts:670", + "pc": [ + 2613 + ] + }, + { + "teal": 2831, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2614, + 2615 + ] + }, + { + "teal": 2832, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2616 + ] + }, + { + "teal": 2833, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2617, + 2618 + ] + }, + { + "teal": 2834, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2619 + ] + }, + { + "teal": 2835, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2620, + 2621 + ] + }, + { + "teal": 2836, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2622 + ] + }, + { + "teal": 2837, + "source": "contracts/validatorRegistry.algo.ts:672", + "pc": [ + 2623 + ] + }, + { + "teal": 2841, + "source": "contracts/validatorRegistry.algo.ts:675", + "pc": [ + 2624, + 2625 + ] + }, + { + "teal": 2842, + "source": "contracts/validatorRegistry.algo.ts:675", + "pc": [ + 2626, + 2627, + 2628 + ] + }, + { + "teal": 2843, + "source": "contracts/validatorRegistry.algo.ts:675", + "pc": [ + 2629 + ] + }, + { + "teal": 2844, + "source": "contracts/validatorRegistry.algo.ts:675", + "pc": [ + 2630, + 2631, + 2632 + ] + }, + { + "teal": 2856, + "source": "contracts/validatorRegistry.algo.ts:677", + "pc": [ + 2633, + 2634, + 2635, + 2636, + 2637, + 2638 + ] + }, + { + "teal": 2857, + "source": "contracts/validatorRegistry.algo.ts:678", + "pc": [ + 2639, + 2640 + ] + }, + { + "teal": 2858, + "source": "contracts/validatorRegistry.algo.ts:678", + "pc": [ + 2641, + 2642, + 2643 + ] + }, + { + "teal": 2859, + "source": "contracts/validatorRegistry.algo.ts:678", + "pc": [ + 2644 + ] + }, + { + "teal": 2860, + "source": "contracts/validatorRegistry.algo.ts:678", + "pc": [ + 2645 + ] + }, + { + "teal": 2861, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2646, + 2647 + ] + }, + { + "teal": 2862, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2648, + 2649, + 2650 + ] + }, + { + "teal": 2863, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2651 + ] + }, + { + "teal": 2864, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2652 + ] + }, + { + "teal": 2865, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2653 + ] + }, + { + "teal": 2866, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2654 + ] + }, + { + "teal": 2867, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2655, + 2656 + ] + }, + { + "teal": 2868, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2657 + ] + }, + { + "teal": 2871, + "source": "contracts/validatorRegistry.algo.ts:679", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "pc": [ + 2658 + ] + }, + { + "teal": 2872, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2659, + 2660, + 2661 + ] + }, + { + "teal": 2873, + "source": "contracts/validatorRegistry.algo.ts:679", + "pc": [ + 2662 + ] + }, + { + "teal": 2874, + "source": "contracts/validatorRegistry.algo.ts:680", + "pc": [ + 2663, + 2664 + ] + }, + { + "teal": 2875, + "source": "contracts/validatorRegistry.algo.ts:680", + "pc": [ + 2665, + 2666, + 2667 + ] + }, + { + "teal": 2876, + "source": "contracts/validatorRegistry.algo.ts:680", + "pc": [ + 2668 + ] + }, + { + "teal": 2877, + "source": "contracts/validatorRegistry.algo.ts:680", + "pc": [ + 2669 + ] + }, + { + "teal": 2878, + "source": "contracts/validatorRegistry.algo.ts:680", + "pc": [ + 2670 + ] + }, + { + "teal": 2879, + "source": "contracts/validatorRegistry.algo.ts:684", + "pc": [ + 2671, + 2672 + ] + }, + { + "teal": 2880, + "source": "contracts/validatorRegistry.algo.ts:684", + "pc": [ + 2673 + ] + }, + { + "teal": 2881, + "source": "contracts/validatorRegistry.algo.ts:684", + "pc": [ + 2674 + ] + }, + { + "teal": 2882, + "source": "contracts/validatorRegistry.algo.ts:683", + "pc": [ + 2675, + 2676 + ] + }, + { + "teal": 2883, + "source": "contracts/validatorRegistry.algo.ts:683", + "pc": [ + 2677 + ] + }, + { + "teal": 2884, + "source": "contracts/validatorRegistry.algo.ts:683", + "pc": [ + 2678 + ] + }, + { + "teal": 2885, + "source": "contracts/validatorRegistry.algo.ts:681", + "pc": [ + 2679, + 2680 + ] + }, + { + "teal": 2886, + "source": "contracts/validatorRegistry.algo.ts:681", + "pc": [ + 2681 + ] + }, + { + "teal": 2887, + "source": "contracts/validatorRegistry.algo.ts:681", + "pc": [ + 2682 + ] + }, + { + "teal": 2888, + "source": "contracts/validatorRegistry.algo.ts:682", + "pc": [ + 2683, + 2684 + ] + }, + { + "teal": 2889, + "source": "contracts/validatorRegistry.algo.ts:682", + "pc": [ + 2685 + ] + }, + { + "teal": 2890, + "source": "contracts/validatorRegistry.algo.ts:682", + "pc": [ + 2686 + ] + }, + { + "teal": 2891, + "source": "contracts/validatorRegistry.algo.ts:677", + "pc": [ + 2687 + ] + }, + { + "teal": 2892, + "source": "contracts/validatorRegistry.algo.ts:677", + "pc": [ + 2688 + ] + }, + { + "teal": 2893, + "source": "contracts/validatorRegistry.algo.ts:658", + "pc": [ + 2689 + ] + }, + { + "teal": 2898, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2690, + 2691, + 2692 + ] + }, + { + "teal": 2899, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2693 + ] + }, + { + "teal": 2900, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2694 + ] + }, + { + "teal": 2901, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2695 + ] + }, + { + "teal": 2902, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2696 + ] + }, + { + "teal": 2905, + "source": "contracts/validatorRegistry.algo.ts:705", + "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", + "pc": [ + 2697 + ] + }, + { + "teal": 2906, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2698 + ] + }, + { + "teal": 2907, + "source": "contracts/validatorRegistry.algo.ts:705", + "pc": [ + 2699 + ] + }, + { + "teal": 2910, + "source": "contracts/validatorRegistry.algo.ts:704", + "pc": [ + 2700, + 2701, + 2702 + ] + }, + { + "teal": 2911, + "source": "contracts/validatorRegistry.algo.ts:704", + "pc": [ + 2703 + ] + }, + { + "teal": 2914, + "source": "contracts/validatorRegistry.algo.ts:703", + "pc": [ + 2704, + 2705, + 2706 + ] + }, + { + "teal": 2915, + "source": "contracts/validatorRegistry.algo.ts:703", + "pc": [ + 2707 + ] + }, + { + "teal": 2918, + "source": "contracts/validatorRegistry.algo.ts:702", + "pc": [ + 2708, + 2709, + 2710 + ] + }, + { + "teal": 2919, + "source": "contracts/validatorRegistry.algo.ts:702", + "pc": [ + 2711 + ] + }, + { + "teal": 2920, + "source": "contracts/validatorRegistry.algo.ts:702", + "pc": [ + 2712 + ] + }, + { + "teal": 2921, + "source": "contracts/validatorRegistry.algo.ts:702", + "pc": [ + 2713, + 2714 + ] + }, + { + "teal": 2922, + "source": "contracts/validatorRegistry.algo.ts:702", + "pc": [ + 2715 + ] + }, + { + "teal": 2925, + "source": "contracts/validatorRegistry.algo.ts:702", + "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", + "pc": [ + 2716 + ] + }, + { + "teal": 2928, + "source": "contracts/validatorRegistry.algo.ts:701", + "pc": [ + 2717, + 2718, + 2719 + ] + }, + { + "teal": 2929, + "source": "contracts/validatorRegistry.algo.ts:701", + "pc": [ + 2720 + ] + }, + { + "teal": 2930, + "source": "contracts/validatorRegistry.algo.ts:701", + "pc": [ + 2721 + ] + }, + { + "teal": 2931, + "source": "contracts/validatorRegistry.algo.ts:701", + "pc": [ + 2722 + ] + }, + { + "teal": 2932, + "source": "contracts/validatorRegistry.algo.ts:701", + "pc": [ + 2723 + ] + }, + { + "teal": 2935, + "source": "contracts/validatorRegistry.algo.ts:701", + "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", + "pc": [ + 2724 + ] + }, + { + "teal": 2938, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 2725, + 2726, + 2727 + ] + }, + { + "teal": 2939, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 2728 + ] + }, + { + "teal": 2940, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 2729 + ] + }, + { + "teal": 2955, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 2730, + 2731, + 2732 + ] + }, + { + "teal": 2958, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 2733 + ] + }, + { + "teal": 2959, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 2734, + 2735 + ] + }, + { + "teal": 2964, + "source": "contracts/validatorRegistry.algo.ts:707", + "pc": [ + 2736, + 2737 + ] + }, + { + "teal": 2965, + "source": "contracts/validatorRegistry.algo.ts:707", + "pc": [ + 2738, + 2739 + ] + }, + { + "teal": 2966, + "source": "contracts/validatorRegistry.algo.ts:707", + "pc": [ + 2740 + ] + }, + { + "teal": 2967, + "source": "contracts/validatorRegistry.algo.ts:707", + "pc": [ + 2741, + 2742, + 2743 + ] + }, + { + "teal": 2972, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2744 + ] + }, + { + "teal": 2973, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2745, + 2746 + ] + }, + { + "teal": 2974, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2747, + 2748 + ] + }, + { + "teal": 2975, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2749 + ] + }, + { + "teal": 2976, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2750, + 2751 + ] + }, + { + "teal": 2977, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2752, + 2753 + ] + }, + { + "teal": 2978, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2754 + ] + }, + { + "teal": 2979, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2755, + 2756 + ] + }, + { + "teal": 2980, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2757, + 2758 + ] + }, + { + "teal": 2981, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2759, + 2760 + ] + }, + { + "teal": 2982, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2761, + 2762 + ] + }, + { + "teal": 2983, + "source": "contracts/validatorRegistry.algo.ts:708", + "pc": [ + 2763 + ] + }, + { + "teal": 2988, + "source": "contracts/validatorRegistry.algo.ts:710", + "pc": [ + 2764, + 2765 + ] + }, + { + "teal": 2989, + "source": "contracts/validatorRegistry.algo.ts:710", + "pc": [ + 2766, + 2767, + 2768 + ] + }, + { + "teal": 2993, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2769, + 2770 + ] + }, + { + "teal": 2994, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2771 + ] + }, + { + "teal": 2995, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2772 + ] + }, + { + "teal": 2996, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2773 + ] + }, + { + "teal": 2997, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2774, + 2775, + 2776 + ] + }, + { + "teal": 2998, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2777, + 2778 + ] + }, + { + "teal": 2999, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2779 + ] + }, + { + "teal": 3000, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2780 + ] + }, + { + "teal": 3001, + "source": "contracts/validatorRegistry.algo.ts:714", + "pc": [ + 2781 + ] + }, + { + "teal": 3005, + "source": "contracts/validatorRegistry.algo.ts:714", + "errorMessage": "should only be called if algo or reward was removed", + "pc": [ + 2782 + ] + }, + { + "teal": 3009, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2783, + 2784 + ] + }, + { + "teal": 3010, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2785, + 2786 + ] + }, + { + "teal": 3011, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2787, + 2788, + 2789 + ] + }, + { + "teal": 3012, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2790 + ] + }, + { + "teal": 3013, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2791 + ] + }, + { + "teal": 3014, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2792 + ] + }, + { + "teal": 3015, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2793, + 2794 + ] + }, + { + "teal": 3016, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2795 + ] + }, + { + "teal": 3017, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2796 + ] + }, + { + "teal": 3018, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2797, + 2798 + ] + }, + { + "teal": 3019, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2799 + ] + }, + { + "teal": 3020, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2800, + 2801 + ] + }, + { + "teal": 3021, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2802, + 2803 + ] + }, + { + "teal": 3022, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2804, + 2805, + 2806 + ] + }, + { + "teal": 3023, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2807 + ] + }, + { + "teal": 3024, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2808 + ] + }, + { + "teal": 3025, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2809 + ] + }, + { + "teal": 3026, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2810, + 2811 + ] + }, + { + "teal": 3027, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2812 + ] + }, + { + "teal": 3028, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2813 + ] + }, + { + "teal": 3029, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2814, + 2815 + ] + }, + { + "teal": 3030, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2816 + ] + }, + { + "teal": 3031, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2817 + ] + }, + { + "teal": 3032, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2818 + ] + }, + { + "teal": 3033, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2819, + 2820 + ] + }, + { + "teal": 3034, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2821, + 2822, + 2823 + ] + }, + { + "teal": 3035, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2824 + ] + }, + { + "teal": 3036, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2825 + ] + }, + { + "teal": 3037, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2826 + ] + }, + { + "teal": 3038, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2827, + 2828 + ] + }, + { + "teal": 3039, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2829 + ] + }, + { + "teal": 3040, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2830 + ] + }, + { + "teal": 3041, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2831, + 2832 + ] + }, + { + "teal": 3042, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2833 + ] + }, + { + "teal": 3043, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2834 + ] + }, + { + "teal": 3044, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2835 + ] + }, + { + "teal": 3045, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2836, + 2837 + ] + }, + { + "teal": 3046, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2838, + 2839, + 2840 + ] + }, + { + "teal": 3047, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2841 + ] + }, + { + "teal": 3048, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2842 + ] + }, + { + "teal": 3049, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2843 + ] + }, + { + "teal": 3050, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2844, + 2845 + ] + }, + { + "teal": 3051, + "source": "contracts/validatorRegistry.algo.ts:717", + "pc": [ + 2846 + ] + }, + { + "teal": 3055, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2847, + 2848 + ] + }, + { + "teal": 3056, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2849 + ] + }, + { + "teal": 3057, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2850 + ] + }, + { + "teal": 3058, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2851 + ] + }, + { + "teal": 3059, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2852, + 2853 + ] + }, + { + "teal": 3060, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2854, + 2855, + 2856 + ] + }, + { + "teal": 3061, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2857 + ] + }, + { + "teal": 3062, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2858 + ] + }, + { + "teal": 3063, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2859 + ] + }, + { + "teal": 3064, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2860, + 2861 + ] + }, + { + "teal": 3065, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2862 + ] + }, + { + "teal": 3066, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2863 + ] + }, + { + "teal": 3067, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2864, + 2865 + ] + }, + { + "teal": 3068, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2866 + ] + }, + { + "teal": 3069, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2867 + ] + }, + { + "teal": 3070, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2868 + ] + }, + { + "teal": 3071, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2869, + 2870 + ] + }, + { + "teal": 3072, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2871, + 2872, + 2873 + ] + }, + { + "teal": 3073, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2874 + ] + }, + { + "teal": 3074, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2875 + ] + }, + { + "teal": 3075, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2876 + ] + }, + { + "teal": 3076, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2877, + 2878 + ] + }, + { + "teal": 3077, + "source": "contracts/validatorRegistry.algo.ts:718", + "pc": [ + 2879 + ] + }, + { + "teal": 3081, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2880, + 2881 + ] + }, + { + "teal": 3082, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2882 + ] + }, + { + "teal": 3083, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2883, + 2884 + ] + }, + { + "teal": 3084, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2885 + ] + }, + { + "teal": 3085, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2886, + 2887 + ] + }, + { + "teal": 3086, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2888 + ] + }, + { + "teal": 3087, + "source": "contracts/validatorRegistry.algo.ts:719", + "pc": [ + 2889 + ] + }, + { + "teal": 3092, + "source": "contracts/validatorRegistry.algo.ts:721", + "pc": [ + 2890, + 2891 + ] + }, + { + "teal": 3093, + "source": "contracts/validatorRegistry.algo.ts:721", + "pc": [ + 2892 + ] + }, + { + "teal": 3094, + "source": "contracts/validatorRegistry.algo.ts:721", + "pc": [ + 2893 + ] + }, + { + "teal": 3095, + "source": "contracts/validatorRegistry.algo.ts:721", + "pc": [ + 2894, + 2895, + 2896 + ] + }, + { + "teal": 3100, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2897, + 2898 + ] + }, + { + "teal": 3101, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2899 + ] + }, + { + "teal": 3102, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2900 + ] + }, + { + "teal": 3103, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2901, + 2902 + ] + }, + { + "teal": 3104, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2903, + 2904, + 2905 + ] + }, + { + "teal": 3105, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2906 + ] + }, + { + "teal": 3106, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2907 + ] + }, + { + "teal": 3107, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2908 + ] + }, + { + "teal": 3108, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2909, + 2910 + ] + }, + { + "teal": 3109, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2911 + ] + }, + { + "teal": 3110, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2912 + ] + }, + { + "teal": 3111, + "source": "contracts/validatorRegistry.algo.ts:722", + "pc": [ + 2913, + 2914 + ] + }, + { + "teal": 3115, + "source": "contracts/validatorRegistry.algo.ts:723", + "pc": [ + 2915, + 2916 + ] + }, + { + "teal": 3116, + "source": "contracts/validatorRegistry.algo.ts:723", + "pc": [ + 2917 + ] + }, + { + "teal": 3117, + "source": "contracts/validatorRegistry.algo.ts:723", + "pc": [ + 2918 + ] + }, + { + "teal": 3120, + "source": "contracts/validatorRegistry.algo.ts:723", + "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", + "pc": [ + 2919 + ] + }, + { + "teal": 3127, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2920, + 2921 + ] + }, + { + "teal": 3128, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2922 + ] + }, + { + "teal": 3129, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2923 + ] + }, + { + "teal": 3130, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2924, + 2925 + ] + }, + { + "teal": 3131, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2926, + 2927, + 2928 + ] + }, + { + "teal": 3132, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2929 + ] + }, + { + "teal": 3133, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2930 + ] + }, + { + "teal": 3134, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2931 + ] + }, + { + "teal": 3135, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2932, + 2933 + ] + }, + { + "teal": 3136, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2934 + ] + }, + { + "teal": 3137, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2935 + ] + }, + { + "teal": 3138, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2936, + 2937 + ] + }, + { + "teal": 3139, + "source": "contracts/validatorRegistry.algo.ts:725", + "pc": [ + 2938 + ] + }, + { + "teal": 3142, + "source": "contracts/validatorRegistry.algo.ts:724", + "errorMessage": "reward being removed must be covered by hold back amount", + "pc": [ + 2939 + ] + }, + { + "teal": 3146, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2940, + 2941 + ] + }, + { + "teal": 3147, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2942 + ] + }, + { + "teal": 3148, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2943 + ] + }, + { + "teal": 3149, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2944 + ] + }, + { + "teal": 3150, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2945, + 2946 + ] + }, + { + "teal": 3151, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2947, + 2948, + 2949 + ] + }, + { + "teal": 3152, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2950 + ] + }, + { + "teal": 3153, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2951 + ] + }, + { + "teal": 3154, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2952 + ] + }, + { + "teal": 3155, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2953, + 2954 + ] + }, + { + "teal": 3156, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2955 + ] + }, + { + "teal": 3157, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2956 + ] + }, + { + "teal": 3158, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2957, + 2958 + ] + }, + { + "teal": 3159, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2959 + ] + }, + { + "teal": 3160, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2960 + ] + }, + { + "teal": 3161, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2961 + ] + }, + { + "teal": 3162, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2962, + 2963 + ] + }, + { + "teal": 3163, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2964, + 2965, + 2966 + ] + }, + { + "teal": 3164, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2967 + ] + }, + { + "teal": 3165, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2968 + ] + }, + { + "teal": 3166, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2969 + ] + }, + { + "teal": 3167, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2970, + 2971 + ] + }, + { + "teal": 3168, + "source": "contracts/validatorRegistry.algo.ts:730", + "pc": [ + 2972 + ] + }, + { + "teal": 3173, + "source": "contracts/validatorRegistry.algo.ts:735", + "pc": [ + 2973, + 2974 + ] + }, + { + "teal": 3174, + "source": "contracts/validatorRegistry.algo.ts:735", + "pc": [ + 2975, + 2976, + 2977 + ] + }, + { + "teal": 3175, + "source": "contracts/validatorRegistry.algo.ts:735", + "pc": [ + 2978 + ] + }, + { + "teal": 3176, + "source": "contracts/validatorRegistry.algo.ts:735", + "pc": [ + 2979 + ] + }, + { + "teal": 3177, + "source": "contracts/validatorRegistry.algo.ts:735", + "pc": [ + 2980 + ] + }, + { + "teal": 3178, + "source": "contracts/validatorRegistry.algo.ts:735", + "pc": [ + 2981, + 2982, + 2983 + ] + }, + { + "teal": 3186, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 2984 + ] + }, + { + "teal": 3187, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 2985, + 2986 + ] + }, + { + "teal": 3188, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 2987, + 2988 + ] + }, + { + "teal": 3189, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 2989, + 2990 + ] + }, + { + "teal": 3190, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 2991, + 2992 + ] + }, + { + "teal": 3194, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 2993, + 2994 + ] + }, + { + "teal": 3195, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 2995 + ] + }, + { + "teal": 3196, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 2996 + ] + }, + { + "teal": 3197, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 2997, + 2998 + ] + }, + { + "teal": 3198, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 2999, + 3000, + 3001 + ] + }, + { + "teal": 3199, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3002 + ] + }, + { + "teal": 3200, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3003 + ] + }, + { + "teal": 3201, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3004 + ] + }, + { + "teal": 3202, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3005, + 3006 + ] + }, + { + "teal": 3203, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3007 + ] + }, + { + "teal": 3204, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3008 + ] + }, + { + "teal": 3205, + "source": "contracts/validatorRegistry.algo.ts:737", + "pc": [ + 3009, + 3010 + ] + }, + { + "teal": 3209, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3011, + 3012 + ] + }, + { + "teal": 3210, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3013, + 3014 + ] + }, + { + "teal": 3211, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3015, + 3016 + ] + }, + { + "teal": 3212, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3017 + ] + }, + { + "teal": 3213, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3018, + 3019 + ] + }, + { + "teal": 3214, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3020, + 3021 + ] + }, + { + "teal": 3215, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3022 + ] + }, + { + "teal": 3216, + "source": "contracts/validatorRegistry.algo.ts:738", + "pc": [ + 3023, + 3024 + ] + }, + { + "teal": 3219, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 3025 + ] + }, + { + "teal": 3220, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 3026, + 3027 + ] + }, + { + "teal": 3223, + "source": "contracts/validatorRegistry.algo.ts:736", + "pc": [ + 3028 + ] + }, + { + "teal": 3236, + "source": "contracts/validatorRegistry.algo.ts:741", + "pc": [ + 3029, + 3030 + ] + }, + { + "teal": 3237, + "source": "contracts/validatorRegistry.algo.ts:742", + "pc": [ + 3031, + 3032 + ] + }, + { + "teal": 3238, + "source": "contracts/validatorRegistry.algo.ts:742", + "pc": [ + 3033, + 3034, + 3035 + ] + }, + { + "teal": 3239, + "source": "contracts/validatorRegistry.algo.ts:742", + "pc": [ + 3036 + ] + }, + { + "teal": 3240, + "source": "contracts/validatorRegistry.algo.ts:742", + "pc": [ + 3037 + ] + }, + { + "teal": 3241, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3038, + 3039 + ] + }, + { + "teal": 3242, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3040, + 3041, + 3042 + ] + }, + { + "teal": 3243, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3043 + ] + }, + { + "teal": 3244, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3044 + ] + }, + { + "teal": 3245, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3045 + ] + }, + { + "teal": 3246, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3046 + ] + }, + { + "teal": 3247, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3047, + 3048 + ] + }, + { + "teal": 3248, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3049 + ] + }, + { + "teal": 3251, + "source": "contracts/validatorRegistry.algo.ts:743", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "pc": [ + 3050 + ] + }, + { + "teal": 3252, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3051, + 3052, + 3053 + ] + }, + { + "teal": 3253, + "source": "contracts/validatorRegistry.algo.ts:743", + "pc": [ + 3054 + ] + }, + { + "teal": 3254, + "source": "contracts/validatorRegistry.algo.ts:744", + "pc": [ + 3055, + 3056 + ] + }, + { + "teal": 3255, + "source": "contracts/validatorRegistry.algo.ts:744", + "pc": [ + 3057, + 3058, + 3059 + ] + }, + { + "teal": 3256, + "source": "contracts/validatorRegistry.algo.ts:744", + "pc": [ + 3060 + ] + }, + { + "teal": 3257, + "source": "contracts/validatorRegistry.algo.ts:744", + "pc": [ + 3061 + ] + }, + { + "teal": 3258, + "source": "contracts/validatorRegistry.algo.ts:744", + "pc": [ + 3062 + ] + }, + { + "teal": 3259, + "source": "contracts/validatorRegistry.algo.ts:745", + "pc": [ + 3063, + 3064 + ] + }, + { + "teal": 3260, + "source": "contracts/validatorRegistry.algo.ts:745", + "pc": [ + 3065 + ] + }, + { + "teal": 3261, + "source": "contracts/validatorRegistry.algo.ts:746", + "pc": [ + 3066, + 3067 + ] + }, + { + "teal": 3262, + "source": "contracts/validatorRegistry.algo.ts:746", + "pc": [ + 3068 + ] + }, + { + "teal": 3263, + "source": "contracts/validatorRegistry.algo.ts:746", + "pc": [ + 3069 + ] + }, + { + "teal": 3264, + "source": "contracts/validatorRegistry.algo.ts:748", + "pc": [ + 3070, + 3071 + ] + }, + { + "teal": 3265, + "source": "contracts/validatorRegistry.algo.ts:748", + "pc": [ + 3072 + ] + }, + { + "teal": 3266, + "source": "contracts/validatorRegistry.algo.ts:748", + "pc": [ + 3073 + ] + }, + { + "teal": 3267, + "source": "contracts/validatorRegistry.algo.ts:747", + "pc": [ + 3074, + 3075 + ] + }, + { + "teal": 3268, + "source": "contracts/validatorRegistry.algo.ts:747", + "pc": [ + 3076 + ] + }, + { + "teal": 3269, + "source": "contracts/validatorRegistry.algo.ts:747", + "pc": [ + 3077 + ] + }, + { + "teal": 3270, + "source": "contracts/validatorRegistry.algo.ts:741", + "pc": [ + 3078 + ] + }, + { + "teal": 3271, + "source": "contracts/validatorRegistry.algo.ts:741", + "pc": [ + 3079 + ] + }, + { + "teal": 3272, + "source": "contracts/validatorRegistry.algo.ts:721", + "pc": [ + 3080, + 3081, + 3082 + ] + }, + { + "teal": 3286, + "source": "contracts/validatorRegistry.algo.ts:751", + "pc": [ + 3083, + 3084 + ] + }, + { + "teal": 3287, + "source": "contracts/validatorRegistry.algo.ts:752", + "pc": [ + 3085, + 3086 + ] + }, + { + "teal": 3288, + "source": "contracts/validatorRegistry.algo.ts:752", + "pc": [ + 3087, + 3088, + 3089 + ] + }, + { + "teal": 3289, + "source": "contracts/validatorRegistry.algo.ts:752", + "pc": [ + 3090 + ] + }, + { + "teal": 3290, + "source": "contracts/validatorRegistry.algo.ts:752", + "pc": [ + 3091 + ] + }, + { + "teal": 3291, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3092, + 3093 + ] + }, + { + "teal": 3292, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3094, + 3095, + 3096 + ] + }, + { + "teal": 3293, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3097 + ] + }, + { + "teal": 3294, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3098 + ] + }, + { + "teal": 3295, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3099 + ] + }, + { + "teal": 3296, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3100 + ] + }, + { + "teal": 3297, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3101, + 3102 + ] + }, + { + "teal": 3298, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3103 + ] + }, + { + "teal": 3301, + "source": "contracts/validatorRegistry.algo.ts:753", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "pc": [ + 3104 + ] + }, + { + "teal": 3302, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3105, + 3106, + 3107 + ] + }, + { + "teal": 3303, + "source": "contracts/validatorRegistry.algo.ts:753", + "pc": [ + 3108 + ] + }, + { + "teal": 3304, + "source": "contracts/validatorRegistry.algo.ts:754", + "pc": [ + 3109, + 3110 + ] + }, + { + "teal": 3305, + "source": "contracts/validatorRegistry.algo.ts:754", + "pc": [ + 3111, + 3112, + 3113 + ] + }, + { + "teal": 3306, + "source": "contracts/validatorRegistry.algo.ts:754", + "pc": [ + 3114 + ] + }, + { + "teal": 3307, + "source": "contracts/validatorRegistry.algo.ts:754", + "pc": [ + 3115 + ] + }, + { + "teal": 3308, + "source": "contracts/validatorRegistry.algo.ts:754", + "pc": [ + 3116 + ] + }, + { + "teal": 3309, + "source": "contracts/validatorRegistry.algo.ts:755", + "pc": [ + 3117, + 3118 + ] + }, + { + "teal": 3310, + "source": "contracts/validatorRegistry.algo.ts:755", + "pc": [ + 3119 + ] + }, + { + "teal": 3311, + "source": "contracts/validatorRegistry.algo.ts:756", + "pc": [ + 3120, + 3121 + ] + }, + { + "teal": 3312, + "source": "contracts/validatorRegistry.algo.ts:756", + "pc": [ + 3122 + ] + }, + { + "teal": 3313, + "source": "contracts/validatorRegistry.algo.ts:756", + "pc": [ + 3123 + ] + }, + { + "teal": 3314, + "source": "contracts/validatorRegistry.algo.ts:759", + "pc": [ + 3124, + 3125 + ] + }, + { + "teal": 3315, + "source": "contracts/validatorRegistry.algo.ts:759", + "pc": [ + 3126 + ] + }, + { + "teal": 3316, + "source": "contracts/validatorRegistry.algo.ts:758", + "pc": [ + 3127, + 3128 + ] + }, + { + "teal": 3317, + "source": "contracts/validatorRegistry.algo.ts:758", + "pc": [ + 3129 + ] + }, + { + "teal": 3318, + "source": "contracts/validatorRegistry.algo.ts:751", + "pc": [ + 3130 + ] + }, + { + "teal": 3319, + "source": "contracts/validatorRegistry.algo.ts:751", + "pc": [ + 3131 + ] + }, + { + "teal": 3325, + "source": "contracts/validatorRegistry.algo.ts:763", + "pc": [ + 3132, + 3133 + ] + }, + { + "teal": 3326, + "source": "contracts/validatorRegistry.algo.ts:763", + "pc": [ + 3134, + 3135, + 3136 + ] + }, + { + "teal": 3331, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3137, + 3138 + ] + }, + { + "teal": 3332, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3139, + 3140 + ] + }, + { + "teal": 3333, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3141, + 3142, + 3143 + ] + }, + { + "teal": 3334, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3144 + ] + }, + { + "teal": 3335, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3145 + ] + }, + { + "teal": 3336, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3146 + ] + }, + { + "teal": 3337, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3147, + 3148 + ] + }, + { + "teal": 3338, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3149 + ] + }, + { + "teal": 3339, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3150 + ] + }, + { + "teal": 3340, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3151 + ] + }, + { + "teal": 3341, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3152 + ] + }, + { + "teal": 3342, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3153, + 3154 + ] + }, + { + "teal": 3343, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3155, + 3156 + ] + }, + { + "teal": 3344, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3157, + 3158, + 3159 + ] + }, + { + "teal": 3345, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3160 + ] + }, + { + "teal": 3346, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3161 + ] + }, + { + "teal": 3347, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3162 + ] + }, + { + "teal": 3348, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3163, + 3164 + ] + }, + { + "teal": 3349, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3165 + ] + }, + { + "teal": 3350, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3166 + ] + }, + { + "teal": 3351, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3167 + ] + }, + { + "teal": 3352, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3168 + ] + }, + { + "teal": 3353, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3169, + 3170 + ] + }, + { + "teal": 3354, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3171 + ] + }, + { + "teal": 3355, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3172, + 3173 + ] + }, + { + "teal": 3356, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3174, + 3175, + 3176 + ] + }, + { + "teal": 3357, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3177 + ] + }, + { + "teal": 3358, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3178 + ] + }, + { + "teal": 3359, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3179 + ] + }, + { + "teal": 3360, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3180, + 3181 + ] + }, + { + "teal": 3361, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3182 + ] + }, + { + "teal": 3362, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3183 + ] + }, + { + "teal": 3363, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3184 + ] + }, + { + "teal": 3364, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3185 + ] + }, + { + "teal": 3365, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3186 + ] + }, + { + "teal": 3366, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3187, + 3188, + 3189 + ] + }, + { + "teal": 3367, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3190 + ] + }, + { + "teal": 3368, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3191, + 3192 + ] + }, + { + "teal": 3369, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3193, + 3194, + 3195 + ] + }, + { + "teal": 3370, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3196 + ] + }, + { + "teal": 3371, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3197 + ] + }, + { + "teal": 3372, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3198 + ] + }, + { + "teal": 3373, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3199, + 3200 + ] + }, + { + "teal": 3374, + "source": "contracts/validatorRegistry.algo.ts:765", + "pc": [ + 3201 + ] + }, + { + "teal": 3382, + "source": "contracts/validatorRegistry.algo.ts:768", + "pc": [ + 3202, + 3203 + ] + }, + { + "teal": 3383, + "source": "contracts/validatorRegistry.algo.ts:768", + "pc": [ + 3204, + 3205, + 3206 + ] + }, + { + "teal": 3384, + "source": "contracts/validatorRegistry.algo.ts:768", + "pc": [ + 3207 + ] + }, + { + "teal": 3385, + "source": "contracts/validatorRegistry.algo.ts:768", + "pc": [ + 3208 + ] + }, + { + "teal": 3386, + "source": "contracts/validatorRegistry.algo.ts:769", + "pc": [ + 3209, + 3210 + ] + }, + { + "teal": 3387, + "source": "contracts/validatorRegistry.algo.ts:769", + "pc": [ + 3211, + 3212, + 3213 + ] + }, + { + "teal": 3388, + "source": "contracts/validatorRegistry.algo.ts:769", + "pc": [ + 3214 + ] + }, + { + "teal": 3389, + "source": "contracts/validatorRegistry.algo.ts:769", + "pc": [ + 3215 + ] + }, + { + "teal": 3390, + "source": "contracts/validatorRegistry.algo.ts:769", + "pc": [ + 3216 + ] + }, + { + "teal": 3391, + "source": "contracts/validatorRegistry.algo.ts:770", + "pc": [ + 3217, + 3218 + ] + }, + { + "teal": 3392, + "source": "contracts/validatorRegistry.algo.ts:770", + "pc": [ + 3219, + 3220, + 3221 + ] + }, + { + "teal": 3393, + "source": "contracts/validatorRegistry.algo.ts:770", + "pc": [ + 3222 + ] + }, + { + "teal": 3394, + "source": "contracts/validatorRegistry.algo.ts:770", + "pc": [ + 3223 + ] + }, + { + "teal": 3395, + "source": "contracts/validatorRegistry.algo.ts:770", + "pc": [ + 3224 + ] + }, + { + "teal": 3396, + "source": "contracts/validatorRegistry.algo.ts:767", + "pc": [ + 3225, + 3226 + ] + }, + { + "teal": 3397, + "source": "contracts/validatorRegistry.algo.ts:767", + "pc": [ + 3227, + 3228, + 3229 + ] + }, + { + "teal": 3398, + "source": "contracts/validatorRegistry.algo.ts:767", + "pc": [ + 3230, + 3231 + ] + }, + { + "teal": 3402, + "source": "contracts/validatorRegistry.algo.ts:772", + "pc": [ + 3232, + 3233 + ] + }, + { + "teal": 3403, + "source": "contracts/validatorRegistry.algo.ts:772", + "pc": [ + 3234, + 3235 + ] + }, + { + "teal": 3404, + "source": "contracts/validatorRegistry.algo.ts:772", + "pc": [ + 3236, + 3237 + ] + }, + { + "teal": 3405, + "source": "contracts/validatorRegistry.algo.ts:772", + "pc": [ + 3238 + ] + }, + { + "teal": 3406, + "source": "contracts/validatorRegistry.algo.ts:772", + "pc": [ + 3239 + ] + }, + { + "teal": 3407, + "source": "contracts/validatorRegistry.algo.ts:772", + "pc": [ + 3240, + 3241 + ] + }, + { + "teal": 3411, + "source": "contracts/validatorRegistry.algo.ts:773", + "pc": [ + 3242, + 3243 + ] + }, + { + "teal": 3412, + "source": "contracts/validatorRegistry.algo.ts:773", + "pc": [ + 3244, + 3245 + ] + }, + { + "teal": 3413, + "source": "contracts/validatorRegistry.algo.ts:773", + "pc": [ + 3246, + 3247 + ] + }, + { + "teal": 3414, + "source": "contracts/validatorRegistry.algo.ts:773", + "pc": [ + 3248 + ] + }, + { + "teal": 3415, + "source": "contracts/validatorRegistry.algo.ts:773", + "pc": [ + 3249 + ] + }, + { + "teal": 3416, + "source": "contracts/validatorRegistry.algo.ts:773", + "pc": [ + 3250, + 3251 + ] + }, + { + "teal": 3421, + "source": "contracts/validatorRegistry.algo.ts:775", + "pc": [ + 3252, + 3253 + ] + }, + { + "teal": 3422, + "source": "contracts/validatorRegistry.algo.ts:775", + "pc": [ + 3254, + 3255, + 3256 + ] + }, + { + "teal": 3427, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3257, + 3258 + ] + }, + { + "teal": 3428, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3259 + ] + }, + { + "teal": 3429, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3260 + ] + }, + { + "teal": 3430, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3261 + ] + }, + { + "teal": 3431, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3262, + 3263 + ] + }, + { + "teal": 3432, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3264, + 3265, + 3266 + ] + }, + { + "teal": 3433, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3267 + ] + }, + { + "teal": 3434, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3268 + ] + }, + { + "teal": 3435, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3269 + ] + }, + { + "teal": 3436, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3270, + 3271 + ] + }, + { + "teal": 3437, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3272 + ] + }, + { + "teal": 3438, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3273 + ] + }, + { + "teal": 3439, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3274 + ] + }, + { + "teal": 3440, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3275 + ] + }, + { + "teal": 3441, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3276 + ] + }, + { + "teal": 3442, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3277 + ] + }, + { + "teal": 3443, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3278, + 3279 + ] + }, + { + "teal": 3444, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3280, + 3281, + 3282 + ] + }, + { + "teal": 3445, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3283 + ] + }, + { + "teal": 3446, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3284 + ] + }, + { + "teal": 3447, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3285 + ] + }, + { + "teal": 3448, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3286, + 3287 + ] + }, + { + "teal": 3449, + "source": "contracts/validatorRegistry.algo.ts:776", + "pc": [ + 3288 + ] + }, + { + "teal": 3455, + "source": "contracts/validatorRegistry.algo.ts:779", + "pc": [ + 3289, + 3290 + ] + }, + { + "teal": 3456, + "source": "contracts/validatorRegistry.algo.ts:779", + "pc": [ + 3291, + 3292, + 3293 + ] + }, + { + "teal": 3461, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3294, + 3295 + ] + }, + { + "teal": 3462, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3296 + ] + }, + { + "teal": 3463, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3297 + ] + }, + { + "teal": 3464, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3298 + ] + }, + { + "teal": 3465, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3299, + 3300 + ] + }, + { + "teal": 3466, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3301 + ] + }, + { + "teal": 3467, + "source": "contracts/validatorRegistry.algo.ts:780", + "pc": [ + 3302 + ] + }, + { + "teal": 3472, + "source": "contracts/validatorRegistry.algo.ts:700", + "pc": [ + 3303 + ] + }, + { + "teal": 3477, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3304 + ] + }, + { + "teal": 3480, + "source": "contracts/validatorRegistry.algo.ts:800", + "pc": [ + 3305, + 3306, + 3307 + ] + }, + { + "teal": 3481, + "source": "contracts/validatorRegistry.algo.ts:800", + "pc": [ + 3308 + ] + }, + { + "teal": 3484, + "source": "contracts/validatorRegistry.algo.ts:799", + "pc": [ + 3309, + 3310, + 3311 + ] + }, + { + "teal": 3485, + "source": "contracts/validatorRegistry.algo.ts:799", + "pc": [ + 3312 + ] + }, + { + "teal": 3486, + "source": "contracts/validatorRegistry.algo.ts:799", + "pc": [ + 3313 + ] + }, + { + "teal": 3487, + "source": "contracts/validatorRegistry.algo.ts:799", + "pc": [ + 3314, + 3315 + ] + }, + { + "teal": 3488, + "source": "contracts/validatorRegistry.algo.ts:799", + "pc": [ + 3316 + ] + }, + { + "teal": 3491, + "source": "contracts/validatorRegistry.algo.ts:799", + "errorMessage": "argument 1 (staker) for findPoolForStaker must be a address", + "pc": [ + 3317 + ] + }, + { + "teal": 3494, + "source": "contracts/validatorRegistry.algo.ts:798", + "pc": [ + 3318, + 3319, + 3320 + ] + }, + { + "teal": 3495, + "source": "contracts/validatorRegistry.algo.ts:798", + "pc": [ + 3321 + ] + }, + { + "teal": 3498, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3322, + 3323, + 3324 + ] + }, + { + "teal": 3499, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3325 + ] + }, + { + "teal": 3500, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3326 + ] + }, + { + "teal": 3501, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3327 + ] + }, + { + "teal": 3502, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3328 + ] + }, + { + "teal": 3516, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3329, + 3330, + 3331 + ] + }, + { + "teal": 3519, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3332 + ] + }, + { + "teal": 3520, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3333, + 3334 + ] + }, + { + "teal": 3524, + "source": "contracts/validatorRegistry.algo.ts:802", + "pc": [ + 3335 + ] + }, + { + "teal": 3525, + "source": "contracts/validatorRegistry.algo.ts:802", + "pc": [ + 3336, + 3337 + ] + }, + { + "teal": 3529, + "source": "contracts/validatorRegistry.algo.ts:803", + "pc": [ + 3338 + ] + }, + { + "teal": 3530, + "source": "contracts/validatorRegistry.algo.ts:803", + "pc": [ + 3339, + 3340 + ] + }, + { + "teal": 3534, + "source": "contracts/validatorRegistry.algo.ts:811", + "pc": [ + 3341, + 3342 + ] + }, + { + "teal": 3535, + "source": "contracts/validatorRegistry.algo.ts:811", + "pc": [ + 3343, + 3344, + 3345 + ] + }, + { + "teal": 3536, + "source": "contracts/validatorRegistry.algo.ts:811", + "pc": [ + 3346, + 3347 + ] + }, + { + "teal": 3541, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3348 + ] + }, + { + "teal": 3542, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3349, + 3350 + ] + }, + { + "teal": 3543, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3351 + ] + }, + { + "teal": 3544, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3352 + ] + }, + { + "teal": 3545, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3353 + ] + }, + { + "teal": 3546, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3354 + ] + }, + { + "teal": 3547, + "source": "contracts/validatorRegistry.algo.ts:814", + "pc": [ + 3355, + 3356, + 3357 + ] + }, + { + "teal": 3552, + "source": "contracts/validatorRegistry.algo.ts:815", + "pc": [ + 3358 + ] + }, + { + "teal": 3553, + "source": "contracts/validatorRegistry.algo.ts:815", + "pc": [ + 3359, + 3360 + ] + }, + { + "teal": 3554, + "source": "contracts/validatorRegistry.algo.ts:815", + "pc": [ + 3361 + ] + }, + { + "teal": 3555, + "source": "contracts/validatorRegistry.algo.ts:815", + "pc": [ + 3362 + ] + }, + { + "teal": 3558, + "source": "contracts/validatorRegistry.algo.ts:815", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "pc": [ + 3363 + ] + }, + { + "teal": 3559, + "source": "contracts/validatorRegistry.algo.ts:815", + "pc": [ + 3364, + 3365 + ] + }, + { + "teal": 3563, + "source": "contracts/validatorRegistry.algo.ts:816", + "pc": [ + 3366, + 3367 + ] + }, + { + "teal": 3564, + "source": "contracts/validatorRegistry.algo.ts:816", + "pc": [ + 3368 + ] + }, + { + "teal": 3565, + "source": "contracts/validatorRegistry.algo.ts:816", + "pc": [ + 3369 + ] + }, + { + "teal": 3566, + "source": "contracts/validatorRegistry.algo.ts:816", + "pc": [ + 3370 + ] + }, + { + "teal": 3570, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3371 + ] + }, + { + "teal": 3571, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3372, + 3373 + ] + }, + { + "teal": 3576, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3374, + 3375 + ] + }, + { + "teal": 3577, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3376, + 3377 + ] + }, + { + "teal": 3578, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3378 + ] + }, + { + "teal": 3579, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3379, + 3380, + 3381 + ] + }, + { + "teal": 3584, + "source": "contracts/validatorRegistry.algo.ts:818", + "pc": [ + 3382, + 3383 + ] + }, + { + "teal": 3585, + "source": "contracts/validatorRegistry.algo.ts:818", + "pc": [ + 3384, + 3385 + ] + }, + { + "teal": 3586, + "source": "contracts/validatorRegistry.algo.ts:818", + "pc": [ + 3386 + ] + }, + { + "teal": 3587, + "source": "contracts/validatorRegistry.algo.ts:818", + "pc": [ + 3387, + 3388, + 3389 + ] + }, + { + "teal": 3592, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3390 + ] + }, + { + "teal": 3593, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3391, + 3392 + ] + }, + { + "teal": 3594, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3393, + 3394 + ] + }, + { + "teal": 3595, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3395 + ] + }, + { + "teal": 3596, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3396, + 3397 + ] + }, + { + "teal": 3597, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3398, + 3399 + ] + }, + { + "teal": 3598, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3400 + ] + }, + { + "teal": 3599, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3401, + 3402 + ] + }, + { + "teal": 3600, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3403, + 3404 + ] + }, + { + "teal": 3601, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3405, + 3406 + ] + }, + { + "teal": 3602, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3407, + 3408 + ] + }, + { + "teal": 3603, + "source": "contracts/validatorRegistry.algo.ts:819", + "pc": [ + 3409 + ] + }, + { + "teal": 3609, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3410, + 3411 + ] + }, + { + "teal": 3610, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3412, + 3413 + ] + }, + { + "teal": 3611, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3414 + ] + }, + { + "teal": 3612, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3415 + ] + }, + { + "teal": 3613, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3416 + ] + }, + { + "teal": 3614, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3417 + ] + }, + { + "teal": 3615, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3418 + ] + }, + { + "teal": 3616, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3419 + ] + }, + { + "teal": 3617, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3420 + ] + }, + { + "teal": 3618, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3421 + ] + }, + { + "teal": 3619, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3422 + ] + }, + { + "teal": 3620, + "source": "contracts/validatorRegistry.algo.ts:821", + "pc": [ + 3423, + 3424, + 3425 + ] + }, + { + "teal": 3623, + "source": "contracts/validatorRegistry.algo.ts:822", + "pc": [ + 3426, + 3427, + 3428 + ] + }, + { + "teal": 3628, + "source": "contracts/validatorRegistry.algo.ts:824", + "pc": [ + 3429 + ] + }, + { + "teal": 3629, + "source": "contracts/validatorRegistry.algo.ts:824", + "pc": [ + 3430, + 3431 + ] + }, + { + "teal": 3634, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3432, + 3433 + ] + }, + { + "teal": 3635, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3434, + 3435 + ] + }, + { + "teal": 3636, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3436 + ] + }, + { + "teal": 3637, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3437 + ] + }, + { + "teal": 3638, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3438 + ] + }, + { + "teal": 3639, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3439 + ] + }, + { + "teal": 3640, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3440 + ] + }, + { + "teal": 3641, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3441 + ] + }, + { + "teal": 3642, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3442 + ] + }, + { + "teal": 3643, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3443, + 3444 + ] + }, + { + "teal": 3644, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3445 + ] + }, + { + "teal": 3645, + "source": "contracts/validatorRegistry.algo.ts:825", + "pc": [ + 3446, + 3447, + 3448 + ] + }, + { + "teal": 3650, + "source": "contracts/validatorRegistry.algo.ts:827", + "pc": [ + 3449 + ] + }, + { + "teal": 3651, + "source": "contracts/validatorRegistry.algo.ts:827", + "pc": [ + 3450, + 3451 + ] + }, + { + "teal": 3658, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3452, + 3453 + ] + }, + { + "teal": 3659, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3454, + 3455 + ] + }, + { + "teal": 3660, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3456, + 3457 + ] + }, + { + "teal": 3661, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3458 + ] + }, + { + "teal": 3662, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3459 + ] + }, + { + "teal": 3663, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3460 + ] + }, + { + "teal": 3664, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3461 + ] + }, + { + "teal": 3665, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3462 + ] + }, + { + "teal": 3666, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3463 + ] + }, + { + "teal": 3667, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3464 + ] + }, + { + "teal": 3668, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3465 + ] + }, + { + "teal": 3669, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3466 + ] + }, + { + "teal": 3670, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3467, + 3468 + ] + }, + { + "teal": 3671, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3469 + ] + }, + { + "teal": 3672, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3470 + ] + }, + { + "teal": 3673, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3471, + 3472 + ] + }, + { + "teal": 3674, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3473 + ] + }, + { + "teal": 3675, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3474 + ] + }, + { + "teal": 3676, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3475 + ] + }, + { + "teal": 3677, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3476, + 3477 + ] + }, + { + "teal": 3678, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3478 + ] + }, + { + "teal": 3679, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3479 + ] + }, + { + "teal": 3680, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3480, + 3481 + ] + }, + { + "teal": 3681, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3482 + ] + }, + { + "teal": 3682, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3483 + ] + }, + { + "teal": 3683, + "source": "contracts/validatorRegistry.algo.ts:830", + "pc": [ + 3484, + 3485 + ] + }, + { + "teal": 3684, + "source": "contracts/validatorRegistry.algo.ts:829", + "pc": [ + 3486 + ] + }, + { + "teal": 3685, + "source": "contracts/validatorRegistry.algo.ts:831", + "pc": [ + 3487, + 3488 + ] + }, + { + "teal": 3686, + "source": "contracts/validatorRegistry.algo.ts:830", + "pc": [ + 3489 + ] + }, + { + "teal": 3687, + "source": "contracts/validatorRegistry.algo.ts:828", + "pc": [ + 3490, + 3491, + 3492 + ] + }, + { + "teal": 3692, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3493, + 3494 + ] + }, + { + "teal": 3693, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3495, + 3496 + ] + }, + { + "teal": 3694, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3497 + ] + }, + { + "teal": 3695, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3498 + ] + }, + { + "teal": 3696, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3499 + ] + }, + { + "teal": 3697, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3500 + ] + }, + { + "teal": 3698, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3501, + 3502 + ] + }, + { + "teal": 3699, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3503 + ] + }, + { + "teal": 3700, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3504, + 3505 + ] + }, + { + "teal": 3701, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3506 + ] + }, + { + "teal": 3702, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3507 + ] + }, + { + "teal": 3703, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3508, + 3509 + ] + }, + { + "teal": 3704, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3510 + ] + }, + { + "teal": 3705, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3511 + ] + }, + { + "teal": 3706, + "source": "contracts/validatorRegistry.algo.ts:833", + "pc": [ + 3512, + 3513, + 3514 + ] + }, + { + "teal": 3715, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3515, + 3516 + ] + }, + { + "teal": 3716, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3517 + ] + }, + { + "teal": 3717, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3518 + ] + }, + { + "teal": 3718, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3519, + 3520 + ] + }, + { + "teal": 3719, + "source": "contracts/validatorRegistry.algo.ts:817", + "pc": [ + 3521, + 3522, + 3523 + ] + }, + { + "teal": 3729, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3524, + 3525 + ] + }, + { + "teal": 3730, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3526, + 3527 + ] + }, + { + "teal": 3731, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3528 + ] + }, + { + "teal": 3732, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3529 + ] + }, + { + "teal": 3733, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3530, + 3531 + ] + }, + { + "teal": 3734, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3532 + ] + }, + { + "teal": 3735, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3533 + ] + }, + { + "teal": 3736, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3534, + 3535 + ] + }, + { + "teal": 3737, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3536 + ] + }, + { + "teal": 3738, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3537 + ] + }, + { + "teal": 3739, + "source": "contracts/validatorRegistry.algo.ts:841", + "pc": [ + 3538 + ] + }, + { + "teal": 3742, + "source": "contracts/validatorRegistry.algo.ts:840", + "errorMessage": "must stake at least the minimum for this pool", + "pc": [ + 3539 + ] + }, + { + "teal": 3746, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3540, + 3541 + ] + }, + { + "teal": 3747, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3542, + 3543 + ] + }, + { + "teal": 3748, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3544 + ] + }, + { + "teal": 3749, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3545, + 3546 + ] + }, + { + "teal": 3750, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3547 + ] + }, + { + "teal": 3751, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3548 + ] + }, + { + "teal": 3752, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3549, + 3550 + ] + }, + { + "teal": 3753, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3551 + ] + }, + { + "teal": 3754, + "source": "contracts/validatorRegistry.algo.ts:846", + "pc": [ + 3552, + 3553 + ] + }, + { + "teal": 3758, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3554, + 3555 + ] + }, + { + "teal": 3759, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3556, + 3557 + ] + }, + { + "teal": 3760, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3558 + ] + }, + { + "teal": 3761, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3559, + 3560 + ] + }, + { + "teal": 3762, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3561 + ] + }, + { + "teal": 3763, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3562 + ] + }, + { + "teal": 3764, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3563, + 3564 + ] + }, + { + "teal": 3765, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3565 + ] + }, + { + "teal": 3766, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3566 + ] + }, + { + "teal": 3767, + "source": "contracts/validatorRegistry.algo.ts:847", + "pc": [ + 3567, + 3568 + ] + }, + { + "teal": 3771, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3569 + ] + }, + { + "teal": 3772, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3570, + 3571 + ] + }, + { + "teal": 3777, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3572, + 3573 + ] + }, + { + "teal": 3778, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3574, + 3575 + ] + }, + { + "teal": 3779, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3576 + ] + }, + { + "teal": 3780, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3577, + 3578, + 3579 + ] + }, + { + "teal": 3785, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3580, + 3581 + ] + }, + { + "teal": 3786, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3582, + 3583 + ] + }, + { + "teal": 3787, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3584, + 3585 + ] + }, + { + "teal": 3788, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3586 + ] + }, + { + "teal": 3789, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3587, + 3588 + ] + }, + { + "teal": 3790, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3589 + ] + }, + { + "teal": 3791, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3590 + ] + }, + { + "teal": 3792, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3591 + ] + }, + { + "teal": 3793, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3592 + ] + }, + { + "teal": 3794, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3593, + 3594 + ] + }, + { + "teal": 3795, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3595 + ] + }, + { + "teal": 3796, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3596, + 3597 + ] + }, + { + "teal": 3797, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3598 + ] + }, + { + "teal": 3798, + "source": "contracts/validatorRegistry.algo.ts:849", + "pc": [ + 3599, + 3600, + 3601 + ] + }, + { + "teal": 3807, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3602, + 3603 + ] + }, + { + "teal": 3808, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3604 + ] + }, + { + "teal": 3809, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3605, + 3606 + ] + }, + { + "teal": 3810, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3607 + ] + }, + { + "teal": 3811, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3608 + ] + }, + { + "teal": 3812, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3609 + ] + }, + { + "teal": 3813, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3610 + ] + }, + { + "teal": 3814, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3611, + 3612 + ] + }, + { + "teal": 3815, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3613, + 3614 + ] + }, + { + "teal": 3816, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3615, + 3616 + ] + }, + { + "teal": 3817, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3617 + ] + }, + { + "teal": 3818, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3618 + ] + }, + { + "teal": 3819, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3619 + ] + }, + { + "teal": 3820, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3620 + ] + }, + { + "teal": 3821, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3621 + ] + }, + { + "teal": 3822, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3622 + ] + }, + { + "teal": 3823, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3623 + ] + }, + { + "teal": 3824, + "source": "contracts/validatorRegistry.algo.ts:851", + "pc": [ + 3624 + ] + }, + { + "teal": 3825, + "source": "contracts/validatorRegistry.algo.ts:852", + "pc": [ + 3625, + 3626 + ] + }, + { + "teal": 3826, + "source": "contracts/validatorRegistry.algo.ts:852", + "pc": [ + 3627 + ] + }, + { + "teal": 3827, + "source": "contracts/validatorRegistry.algo.ts:852", + "pc": [ + 3628, + 3629 + ] + }, + { + "teal": 3828, + "source": "contracts/validatorRegistry.algo.ts:852", + "pc": [ + 3630 + ] + }, + { + "teal": 3829, + "source": "contracts/validatorRegistry.algo.ts:853", + "pc": [ + 3631 + ] + }, + { + "teal": 3830, + "source": "contracts/validatorRegistry.algo.ts:853", + "pc": [ + 3632, + 3633 + ] + }, + { + "teal": 3831, + "source": "contracts/validatorRegistry.algo.ts:853", + "pc": [ + 3634 + ] + }, + { + "teal": 3832, + "source": "contracts/validatorRegistry.algo.ts:850", + "pc": [ + 3635 + ] + }, + { + "teal": 3833, + "source": "contracts/validatorRegistry.algo.ts:850", + "pc": [ + 3636, + 3637, + 3638 + ] + }, + { + "teal": 3840, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3639, + 3640 + ] + }, + { + "teal": 3841, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3641 + ] + }, + { + "teal": 3842, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3642 + ] + }, + { + "teal": 3843, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3643, + 3644 + ] + }, + { + "teal": 3844, + "source": "contracts/validatorRegistry.algo.ts:848", + "pc": [ + 3645, + 3646, + 3647 + ] + }, + { + "teal": 3849, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3648, + 3649 + ] + }, + { + "teal": 3850, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3650 + ] + }, + { + "teal": 3851, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3651, + 3652 + ] + }, + { + "teal": 3852, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3653 + ] + }, + { + "teal": 3853, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3654, + 3655 + ] + }, + { + "teal": 3854, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3656 + ] + }, + { + "teal": 3855, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3657, + 3658 + ] + }, + { + "teal": 3856, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3659 + ] + }, + { + "teal": 3857, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3660, + 3661 + ] + }, + { + "teal": 3858, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3662 + ] + }, + { + "teal": 3859, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3663 + ] + }, + { + "teal": 3860, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3664, + 3665 + ] + }, + { + "teal": 3861, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3666 + ] + }, + { + "teal": 3862, + "source": "contracts/validatorRegistry.algo.ts:858", + "pc": [ + 3667 + ] + }, + { + "teal": 3866, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3668, + 3669 + ] + }, + { + "teal": 3869, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3670, + 3671 + ] + }, + { + "teal": 3870, + "source": "contracts/validatorRegistry.algo.ts:796", + "pc": [ + 3672 + ] + }, + { + "teal": 3875, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3673, + 3674, + 3675 + ] + }, + { + "teal": 3876, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3676 + ] + }, + { + "teal": 3879, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3677, + 3678, + 3679 + ] + }, + { + "teal": 3880, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3680 + ] + }, + { + "teal": 3883, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3681, + 3682, + 3683 + ] + }, + { + "teal": 3884, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3684 + ] + }, + { + "teal": 3887, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3685, + 3686, + 3687 + ] + }, + { + "teal": 3888, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3688 + ] + }, + { + "teal": 3889, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3689 + ] + }, + { + "teal": 3903, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3690, + 3691, + 3692 + ] + }, + { + "teal": 3906, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3693 + ] + }, + { + "teal": 3907, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3694, + 3695 + ] + }, + { + "teal": 3911, + "source": "contracts/validatorRegistry.algo.ts:873", + "pc": [ + 3696, + 3697 + ] + }, + { + "teal": 3912, + "source": "contracts/validatorRegistry.algo.ts:873", + "pc": [ + 3698, + 3699, + 3700 + ] + }, + { + "teal": 3916, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3701, + 3702 + ] + }, + { + "teal": 3917, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3703, + 3704 + ] + }, + { + "teal": 3918, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3705 + ] + }, + { + "teal": 3919, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3706, + 3707 + ] + }, + { + "teal": 3920, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3708 + ] + }, + { + "teal": 3921, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3709 + ] + }, + { + "teal": 3922, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3710, + 3711 + ] + }, + { + "teal": 3923, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3712 + ] + }, + { + "teal": 3924, + "source": "contracts/validatorRegistry.algo.ts:875", + "pc": [ + 3713, + 3714 + ] + }, + { + "teal": 3928, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3715, + 3716 + ] + }, + { + "teal": 3929, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3717 + ] + }, + { + "teal": 3930, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3718 + ] + }, + { + "teal": 3931, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3719 + ] + }, + { + "teal": 3932, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3720, + 3721, + 3722 + ] + }, + { + "teal": 3933, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3723, + 3724 + ] + }, + { + "teal": 3934, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3725 + ] + }, + { + "teal": 3935, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3726 + ] + }, + { + "teal": 3936, + "source": "contracts/validatorRegistry.algo.ts:876", + "pc": [ + 3727 + ] + }, + { + "teal": 3940, + "source": "contracts/validatorRegistry.algo.ts:876", + "errorMessage": "node number out of allowable range", + "pc": [ + 3728 + ] + }, + { + "teal": 3944, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3729 + ] + }, + { + "teal": 3945, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3730, + 3731 + ] + }, + { + "teal": 3950, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3732, + 3733 + ] + }, + { + "teal": 3951, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3734 + ] + }, + { + "teal": 3952, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3735 + ] + }, + { + "teal": 3953, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3736, + 3737, + 3738 + ] + }, + { + "teal": 3957, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3739 + ] + }, + { + "teal": 3958, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3740, + 3741 + ] + }, + { + "teal": 3963, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3742, + 3743 + ] + }, + { + "teal": 3964, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3744, + 3745 + ] + }, + { + "teal": 3965, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3746 + ] + }, + { + "teal": 3966, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3747, + 3748, + 3749 + ] + }, + { + "teal": 3971, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3750, + 3751 + ] + }, + { + "teal": 3972, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3752 + ] + }, + { + "teal": 3973, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3753, + 3754 + ] + }, + { + "teal": 3974, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3755 + ] + }, + { + "teal": 3975, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3756 + ] + }, + { + "teal": 3976, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3757 + ] + }, + { + "teal": 3977, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3758 + ] + }, + { + "teal": 3978, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3759 + ] + }, + { + "teal": 3979, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3760, + 3761 + ] + }, + { + "teal": 3980, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3762 + ] + }, + { + "teal": 3981, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3763 + ] + }, + { + "teal": 3982, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3764 + ] + }, + { + "teal": 3983, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3765 + ] + }, + { + "teal": 3984, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3766 + ] + }, + { + "teal": 3985, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3767 + ] + }, + { + "teal": 3986, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3768, + 3769 + ] + }, + { + "teal": 3987, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3770 + ] + }, + { + "teal": 3988, + "source": "contracts/validatorRegistry.algo.ts:880", + "pc": [ + 3771, + 3772, + 3773 + ] + }, + { + "teal": 3993, + "source": "contracts/validatorRegistry.algo.ts:881", + "pc": [ + 3774, + 3775 + ] + }, + { + "teal": 3994, + "source": "contracts/validatorRegistry.algo.ts:881", + "pc": [ + 3776 + ] + }, + { + "teal": 3995, + "source": "contracts/validatorRegistry.algo.ts:881", + "pc": [ + 3777 + ] + }, + { + "teal": 3996, + "source": "contracts/validatorRegistry.algo.ts:881", + "pc": [ + 3778, + 3779 + ] + }, + { + "teal": 3997, + "source": "contracts/validatorRegistry.algo.ts:881", + "pc": [ + 3780 + ] + }, + { + "teal": 4000, + "source": "contracts/validatorRegistry.algo.ts:881", + "errorMessage": "can't move to same node", + "pc": [ + 3781 + ] + }, + { + "teal": 4004, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3782, + 3783 + ] + }, + { + "teal": 4005, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3784, + 3785 + ] + }, + { + "teal": 4006, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3786 + ] + }, + { + "teal": 4007, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3787 + ] + }, + { + "teal": 4008, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3788 + ] + }, + { + "teal": 4009, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3789 + ] + }, + { + "teal": 4010, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3790 + ] + }, + { + "teal": 4011, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3791, + 3792 + ] + }, + { + "teal": 4012, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3793 + ] + }, + { + "teal": 4013, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3794 + ] + }, + { + "teal": 4014, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3795 + ] + }, + { + "teal": 4015, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3796, + 3797 + ] + }, + { + "teal": 4016, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3798 + ] + }, + { + "teal": 4017, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3799, + 3800 + ] + }, + { + "teal": 4018, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3801 + ] + }, + { + "teal": 4019, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3802 + ] + }, + { + "teal": 4020, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3803, + 3804 + ] + }, + { + "teal": 4021, + "source": "contracts/validatorRegistry.algo.ts:883", + "pc": [ + 3805 + ] + }, + { + "teal": 4027, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3806 + ] + }, + { + "teal": 4028, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3807, + 3808 + ] + }, + { + "teal": 4029, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3809, + 3810 + ] + }, + { + "teal": 4030, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3811, + 3812, + 3813, + 3814, + 3815, + 3816 + ] + }, + { + "teal": 4031, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3817, + 3818 + ] + }, + { + "teal": 4035, + "source": "contracts/validatorRegistry.algo.ts:887", + "pc": [ + 3819, + 3820 + ] + }, + { + "teal": 4036, + "source": "contracts/validatorRegistry.algo.ts:887", + "pc": [ + 3821, + 3822 + ] + }, + { + "teal": 4039, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3823 + ] + }, + { + "teal": 4040, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3824, + 3825 + ] + }, + { + "teal": 4043, + "source": "contracts/validatorRegistry.algo.ts:886", + "pc": [ + 3826 + ] + }, + { + "teal": 4047, + "source": "contracts/validatorRegistry.algo.ts:891", + "pc": [ + 3827, + 3828 + ] + }, + { + "teal": 4048, + "source": "contracts/validatorRegistry.algo.ts:891", + "pc": [ + 3829, + 3830 + ] + }, + { + "teal": 4049, + "source": "contracts/validatorRegistry.algo.ts:891", + "pc": [ + 3831, + 3832 + ] + }, + { + "teal": 4050, + "source": "contracts/validatorRegistry.algo.ts:891", + "pc": [ + 3833, + 3834, + 3835 + ] + }, + { + "teal": 4054, + "source": "contracts/validatorRegistry.algo.ts:892", + "pc": [ + 3836 + ] + }, + { + "teal": 4061, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3837, + 3838 + ] + }, + { + "teal": 4062, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3839 + ] + }, + { + "teal": 4063, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3840 + ] + }, + { + "teal": 4064, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3841, + 3842 + ] + }, + { + "teal": 4065, + "source": "contracts/validatorRegistry.algo.ts:879", + "pc": [ + 3843, + 3844, + 3845 + ] + }, + { + "teal": 4072, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3846, + 3847 + ] + }, + { + "teal": 4073, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3848 + ] + }, + { + "teal": 4074, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3849 + ] + }, + { + "teal": 4075, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3850, + 3851 + ] + }, + { + "teal": 4076, + "source": "contracts/validatorRegistry.algo.ts:878", + "pc": [ + 3852, + 3853, + 3854 + ] + }, + { + "teal": 4080, + "source": "contracts/validatorRegistry.algo.ts:896", + "errorMessage": "couldn't find pool app id in nodes to move", + "pc": [ + 3855 + ] + }, + { + "teal": 4081, + "source": "contracts/validatorRegistry.algo.ts:872", + "pc": [ + 3856 + ] + }, + { + "teal": 4086, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3857 + ] + }, + { + "teal": 4089, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3858, + 3859, + 3860 + ] + }, + { + "teal": 4090, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3861 + ] + }, + { + "teal": 4091, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3862 + ] + }, + { + "teal": 4092, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3863, + 3864 + ] + }, + { + "teal": 4093, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3865 + ] + }, + { + "teal": 4096, + "source": "contracts/validatorRegistry.algo.ts:910", + "errorMessage": "argument 0 (receiver) for emptyTokenRewards must be a address", + "pc": [ + 3866 + ] + }, + { + "teal": 4099, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3867, + 3868, + 3869 + ] + }, + { + "teal": 4100, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3870 + ] + }, + { + "teal": 4103, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3871, + 3872, + 3873 + ] + }, + { + "teal": 4104, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3874 + ] + }, + { + "teal": 4105, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3875 + ] + }, + { + "teal": 4106, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3876 + ] + }, + { + "teal": 4107, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3877 + ] + }, + { + "teal": 4108, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3878 + ] + }, + { + "teal": 4122, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3879, + 3880, + 3881 + ] + }, + { + "teal": 4125, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3882 + ] + }, + { + "teal": 4126, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3883, + 3884 + ] + }, + { + "teal": 4130, + "source": "contracts/validatorRegistry.algo.ts:911", + "pc": [ + 3885, + 3886 + ] + }, + { + "teal": 4131, + "source": "contracts/validatorRegistry.algo.ts:911", + "pc": [ + 3887, + 3888, + 3889 + ] + }, + { + "teal": 4135, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3890, + 3891 + ] + }, + { + "teal": 4136, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3892 + ] + }, + { + "teal": 4137, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3893 + ] + }, + { + "teal": 4138, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3894, + 3895 + ] + }, + { + "teal": 4139, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3896 + ] + }, + { + "teal": 4140, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3897 + ] + }, + { + "teal": 4141, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3898, + 3899 + ] + }, + { + "teal": 4142, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3900 + ] + }, + { + "teal": 4143, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3901 + ] + }, + { + "teal": 4144, + "source": "contracts/validatorRegistry.algo.ts:912", + "pc": [ + 3902, + 3903 + ] + }, + { + "teal": 4148, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3904, + 3905 + ] + }, + { + "teal": 4149, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3906 + ] + }, + { + "teal": 4150, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3907 + ] + }, + { + "teal": 4151, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3908, + 3909 + ] + }, + { + "teal": 4152, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3910 + ] + }, + { + "teal": 4153, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3911 + ] + }, + { + "teal": 4154, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3912, + 3913 + ] + }, + { + "teal": 4155, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3914 + ] + }, + { + "teal": 4156, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3915 + ] + }, + { + "teal": 4157, + "source": "contracts/validatorRegistry.algo.ts:913", + "pc": [ + 3916, + 3917 + ] + }, + { + "teal": 4161, + "source": "contracts/validatorRegistry.algo.ts:914", + "pc": [ + 3918, + 3919 + ] + }, + { + "teal": 4162, + "source": "contracts/validatorRegistry.algo.ts:914", + "pc": [ + 3920 + ] + }, + { + "teal": 4163, + "source": "contracts/validatorRegistry.algo.ts:914", + "pc": [ + 3921 + ] + }, + { + "teal": 4166, + "source": "contracts/validatorRegistry.algo.ts:914", + "errorMessage": "this validator doesn't have a reward token defined", + "pc": [ + 3922 + ] + }, + { + "teal": 4170, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3923, + 3924 + ] + }, + { + "teal": 4171, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3925 + ] + }, + { + "teal": 4172, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3926 + ] + }, + { + "teal": 4173, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3927, + 3928 + ] + }, + { + "teal": 4174, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3929 + ] + }, + { + "teal": 4175, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3930 + ] + }, + { + "teal": 4176, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3931, + 3932 + ] + }, + { + "teal": 4177, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3933 + ] + }, + { + "teal": 4178, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3934 + ] + }, + { + "teal": 4179, + "source": "contracts/validatorRegistry.algo.ts:915", + "pc": [ + 3935, + 3936 + ] + }, + { + "teal": 4184, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3937, + 3938 + ] + }, + { + "teal": 4185, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3939, + 3940 + ] + }, + { + "teal": 4186, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3941 + ] + }, + { + "teal": 4187, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3942, + 3943 + ] + }, + { + "teal": 4188, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3944, + 3945 + ] + }, + { + "teal": 4189, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3946 + ] + }, + { + "teal": 4190, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3947, + 3948 + ] + }, + { + "teal": 4191, + "source": "contracts/validatorRegistry.algo.ts:918", + "pc": [ + 3949 + ] + }, + { + "teal": 4192, + "source": "contracts/validatorRegistry.algo.ts:917", + "pc": [ + 3950, + 3951 + ] + }, + { + "teal": 4199, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3952 + ] + }, + { + "teal": 4200, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3953, + 3954 + ] + }, + { + "teal": 4201, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3955, + 3956 + ] + }, + { + "teal": 4202, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3957, + 3958 + ] + }, + { + "teal": 4203, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3959, + 3960 + ] + }, + { + "teal": 4207, + "source": "contracts/validatorRegistry.algo.ts:922", + "pc": [ + 3961, + 3962 + ] + }, + { + "teal": 4208, + "source": "contracts/validatorRegistry.algo.ts:922", + "pc": [ + 3963, + 3964 + ] + }, + { + "teal": 4212, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3965, + 3966 + ] + }, + { + "teal": 4213, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3967, + 3968 + ] + }, + { + "teal": 4214, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3969, + 3970 + ] + }, + { + "teal": 4215, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3971 + ] + }, + { + "teal": 4216, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3972, + 3973 + ] + }, + { + "teal": 4217, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3974, + 3975 + ] + }, + { + "teal": 4218, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3976 + ] + }, + { + "teal": 4219, + "source": "contracts/validatorRegistry.algo.ts:923", + "pc": [ + 3977, + 3978 + ] + }, + { + "teal": 4222, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3979 + ] + }, + { + "teal": 4223, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3980, + 3981 + ] + }, + { + "teal": 4226, + "source": "contracts/validatorRegistry.algo.ts:921", + "pc": [ + 3982 + ] + }, + { + "teal": 4233, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3983, + 3984 + ] + }, + { + "teal": 4234, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3985, + 3986 + ] + }, + { + "teal": 4235, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3987 + ] + }, + { + "teal": 4236, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3988, + 3989 + ] + }, + { + "teal": 4237, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3990, + 3991 + ] + }, + { + "teal": 4238, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3992 + ] + }, + { + "teal": 4239, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3993, + 3994 + ] + }, + { + "teal": 4240, + "source": "contracts/validatorRegistry.algo.ts:926", + "pc": [ + 3995 + ] + }, + { + "teal": 4243, + "source": "contracts/validatorRegistry.algo.ts:925", + "errorMessage": "balance of remaining reward tokens should match the held back amount", + "pc": [ + 3996 + ] + }, + { + "teal": 4247, + "source": "contracts/validatorRegistry.algo.ts:929", + "pc": [ + 3997, + 3998 + ] + }, + { + "teal": 4250, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 3999, + 4000 + ] + }, + { + "teal": 4253, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 4001, + 4002 + ] + }, + { + "teal": 4254, + "source": "contracts/validatorRegistry.algo.ts:910", + "pc": [ + 4003 + ] + }, + { + "teal": 4258, + "source": "contracts/validatorRegistry.algo.ts:1021", + "pc": [ + 4004, + 4005, + 4006 + ] + }, + { + "teal": 4265, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4007, + 4008 + ] + }, + { + "teal": 4266, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4009 + ] + }, + { + "teal": 4267, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4010, + 4011 + ] + }, + { + "teal": 4268, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4012 + ] + }, + { + "teal": 4269, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4013, + 4014 + ] + }, + { + "teal": 4270, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4015 + ] + }, + { + "teal": 4271, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4016 + ] + }, + { + "teal": 4272, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4017, + 4018 + ] + }, + { + "teal": 4273, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4019 + ] + }, + { + "teal": 4274, + "source": "contracts/validatorRegistry.algo.ts:1023", + "pc": [ + 4020 + ] + }, + { + "teal": 4277, + "source": "contracts/validatorRegistry.algo.ts:1022", + "errorMessage": "can only be called by validator owner", + "pc": [ + 4021 + ] + }, + { + "teal": 4278, + "source": "contracts/validatorRegistry.algo.ts:1021", + "pc": [ + 4022 + ] + }, + { + "teal": 4282, + "source": "contracts/validatorRegistry.algo.ts:1028", + "pc": [ + 4023, + 4024, + 4025 + ] + }, + { + "teal": 4290, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4026, + 4027 + ] + }, + { + "teal": 4291, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4028 + ] + }, + { + "teal": 4292, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4029, + 4030 + ] + }, + { + "teal": 4293, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4031 + ] + }, + { + "teal": 4294, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4032, + 4033 + ] + }, + { + "teal": 4295, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4034 + ] + }, + { + "teal": 4296, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4035 + ] + }, + { + "teal": 4297, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4036, + 4037 + ] + }, + { + "teal": 4298, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4038 + ] + }, + { + "teal": 4299, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4039 + ] + }, + { + "teal": 4300, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4040 + ] + }, + { + "teal": 4301, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4041, + 4042, + 4043 + ] + }, + { + "teal": 4302, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4044, + 4045 + ] + }, + { + "teal": 4303, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4046, + 4047 + ] + }, + { + "teal": 4304, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4048, + 4049 + ] + }, + { + "teal": 4305, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4050 + ] + }, + { + "teal": 4306, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4051, + 4052 + ] + }, + { + "teal": 4307, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4053 + ] + }, + { + "teal": 4308, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4054 + ] + }, + { + "teal": 4309, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4055, + 4056 + ] + }, + { + "teal": 4310, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4057 + ] + }, + { + "teal": 4311, + "source": "contracts/validatorRegistry.algo.ts:1031", + "pc": [ + 4058 + ] + }, + { + "teal": 4312, + "source": "contracts/validatorRegistry.algo.ts:1030", + "pc": [ + 4059 + ] + }, + { + "teal": 4316, + "source": "contracts/validatorRegistry.algo.ts:1029", + "errorMessage": "can only be called by owner or manager of validator", + "pc": [ + 4060 + ] + }, + { + "teal": 4317, + "source": "contracts/validatorRegistry.algo.ts:1028", + "pc": [ + 4061 + ] + }, + { + "teal": 4325, + "source": "contracts/validatorRegistry.algo.ts:1041", + "pc": [ + 4062, + 4063, + 4064 + ] + }, + { + "teal": 4329, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4065 + ] + }, + { + "teal": 4330, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4066, + 4067 + ] + }, + { + "teal": 4331, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4068, + 4069, + 4070 + ] + }, + { + "teal": 4332, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4071 + ] + }, + { + "teal": 4333, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4072 + ] + }, + { + "teal": 4334, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4073 + ] + }, + { + "teal": 4335, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4074 + ] + }, + { + "teal": 4336, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4075 + ] + }, + { + "teal": 4337, + "source": "contracts/validatorRegistry.algo.ts:1042", + "pc": [ + 4076 + ] + }, + { + "teal": 4340, + "source": "contracts/validatorRegistry.algo.ts:1042", + "errorMessage": "the specified validator id isn't valid", + "pc": [ + 4077 + ] + }, + { + "teal": 4344, + "source": "contracts/validatorRegistry.algo.ts:1043", + "pc": [ + 4078, + 4079 + ] + }, + { + "teal": 4345, + "source": "contracts/validatorRegistry.algo.ts:1043", + "pc": [ + 4080, + 4081, + 4082 + ] + }, + { + "teal": 4346, + "source": "contracts/validatorRegistry.algo.ts:1043", + "pc": [ + 4083 + ] + }, + { + "teal": 4347, + "source": "contracts/constants.algo.ts:30", + "pc": [ + 4084 + ] + }, + { + "teal": 4348, + "source": "contracts/validatorRegistry.algo.ts:1043", + "pc": [ + 4085 + ] + }, + { + "teal": 4351, + "source": "contracts/validatorRegistry.algo.ts:1043", + "errorMessage": "pool id not in valid range", + "pc": [ + 4086 + ] + }, + { + "teal": 4358, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4087, + 4088 + ] + }, + { + "teal": 4359, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4089, + 4090, + 4091 + ] + }, + { + "teal": 4360, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4092 + ] + }, + { + "teal": 4361, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4093 + ] + }, + { + "teal": 4362, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4094 + ] + }, + { + "teal": 4363, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4095 + ] + }, + { + "teal": 4364, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4096, + 4097, + 4098 + ] + }, + { + "teal": 4365, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4099, + 4100 + ] + }, + { + "teal": 4366, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4101, + 4102, + 4103 + ] + }, + { + "teal": 4367, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4104 + ] + }, + { + "teal": 4368, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4105, + 4106 + ] + }, + { + "teal": 4369, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4107, + 4108 + ] + }, + { + "teal": 4370, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4109 + ] + }, + { + "teal": 4371, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4110, + 4111 + ] + }, + { + "teal": 4372, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4112, + 4113, + 4114 + ] + }, + { + "teal": 4373, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4115 + ] + }, + { + "teal": 4374, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4116 + ] + }, + { + "teal": 4375, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4117 + ] + }, + { + "teal": 4376, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4118, + 4119 + ] + }, + { + "teal": 4377, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4120 + ] + }, + { + "teal": 4378, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4121 + ] + }, + { + "teal": 4379, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4122 + ] + }, + { + "teal": 4380, + "source": "contracts/validatorRegistry.algo.ts:1045", + "pc": [ + 4123 + ] + }, + { + "teal": 4384, + "source": "contracts/validatorRegistry.algo.ts:1044", + "errorMessage": "pool id outside of range of pools created for this validator", + "pc": [ + 4124 + ] + }, + { + "teal": 4391, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4125, + 4126 + ] + }, + { + "teal": 4392, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4127, + 4128, + 4129 + ] + }, + { + "teal": 4393, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4130 + ] + }, + { + "teal": 4394, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4131, + 4132 + ] + }, + { + "teal": 4395, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4133, + 4134 + ] + }, + { + "teal": 4396, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4135, + 4136, + 4137 + ] + }, + { + "teal": 4397, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4138 + ] + }, + { + "teal": 4398, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4139 + ] + }, + { + "teal": 4399, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4140 + ] + }, + { + "teal": 4400, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4141, + 4142 + ] + }, + { + "teal": 4401, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4143 + ] + }, + { + "teal": 4402, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4144 + ] + }, + { + "teal": 4403, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4145 + ] + }, + { + "teal": 4404, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4146 + ] + }, + { + "teal": 4405, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4147 + ] + }, + { + "teal": 4406, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4148 + ] + }, + { + "teal": 4407, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4149, + 4150 + ] + }, + { + "teal": 4408, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4151, + 4152, + 4153 + ] + }, + { + "teal": 4409, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4154 + ] + }, + { + "teal": 4410, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4155 + ] + }, + { + "teal": 4411, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4156 + ] + }, + { + "teal": 4412, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4157, + 4158 + ] + }, + { + "teal": 4413, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4159 + ] + }, + { + "teal": 4414, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4160 + ] + }, + { + "teal": 4415, + "source": "contracts/validatorRegistry.algo.ts:1051", + "pc": [ + 4161 + ] + }, + { + "teal": 4418, + "source": "contracts/validatorRegistry.algo.ts:1050", + "errorMessage": "The passed in app id doesn't match the passed in ids", + "pc": [ + 4162 + ] + }, + { + "teal": 4422, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4163, + 4164 + ] + }, + { + "teal": 4423, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4165, + 4166 + ] + }, + { + "teal": 4424, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4167, + 4168, + 4169 + ] + }, + { + "teal": 4425, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4170 + ] + }, + { + "teal": 4426, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4171, + 4172 + ] + }, + { + "teal": 4427, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4173 + ] + }, + { + "teal": 4428, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4174 + ] + }, + { + "teal": 4429, + "source": "contracts/validatorRegistry.algo.ts:1055", + "pc": [ + 4175 + ] + }, + { + "teal": 4433, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4176, + 4177 + ] + }, + { + "teal": 4434, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4178, + 4179, + 4180 + ] + }, + { + "teal": 4435, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4181 + ] + }, + { + "teal": 4436, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4182, + 4183 + ] + }, + { + "teal": 4437, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4184, + 4185, + 4186 + ] + }, + { + "teal": 4438, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4187 + ] + }, + { + "teal": 4439, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200 + ] + }, + { + "teal": 4440, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4201 + ] + }, + { + "teal": 4443, + "source": "contracts/validatorRegistry.algo.ts:1057", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')", + "pc": [ + 4202 + ] + }, + { + "teal": 4444, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4203 + ] + }, + { + "teal": 4445, + "source": "contracts/validatorRegistry.algo.ts:1057", + "pc": [ + 4204 + ] + }, + { + "teal": 4449, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4205, + 4206 + ] + }, + { + "teal": 4450, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4207, + 4208, + 4209 + ] + }, + { + "teal": 4451, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4210 + ] + }, + { + "teal": 4452, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4211, + 4212 + ] + }, + { + "teal": 4453, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4213, + 4214, + 4215 + ] + }, + { + "teal": 4454, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4216 + ] + }, + { + "teal": 4455, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4217, + 4218, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224 + ] + }, + { + "teal": 4456, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4225 + ] + }, + { + "teal": 4459, + "source": "contracts/validatorRegistry.algo.ts:1058", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')", + "pc": [ + 4226 + ] + }, + { + "teal": 4460, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4227 + ] + }, + { + "teal": 4461, + "source": "contracts/validatorRegistry.algo.ts:1058", + "pc": [ + 4228 + ] + }, + { + "teal": 4462, + "source": "contracts/validatorRegistry.algo.ts:1041", + "pc": [ + 4229 + ] + }, + { + "teal": 4471, + "source": "contracts/validatorRegistry.algo.ts:1067", + "pc": [ + 4230, + 4231, + 4232 + ] + }, + { + "teal": 4474, + "source": "contracts/validatorRegistry.algo.ts:1067", + "pc": [ + 4233 + ] + }, + { + "teal": 4475, + "source": "contracts/validatorRegistry.algo.ts:1067", + "pc": [ + 4234 + ] + }, + { + "teal": 4479, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4235 + ] + }, + { + "teal": 4480, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4236, + 4237 + ] + }, + { + "teal": 4481, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4238 + ] + }, + { + "teal": 4482, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4239 + ] + }, + { + "teal": 4483, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4240, + 4241 + ] + }, + { + "teal": 4488, + "source": "contracts/validatorRegistry.algo.ts:1069", + "pc": [ + 4242, + 4243 + ] + }, + { + "teal": 4489, + "source": "contracts/validatorRegistry.algo.ts:1069", + "pc": [ + 4244 + ] + }, + { + "teal": 4490, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4245 + ] + }, + { + "teal": 4491, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4246, + 4247 + ] + }, + { + "teal": 4492, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4248 + ] + }, + { + "teal": 4493, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4249 + ] + }, + { + "teal": 4494, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4250, + 4251 + ] + }, + { + "teal": 4495, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4252 + ] + }, + { + "teal": 4496, + "source": "contracts/validatorRegistry.algo.ts:1069", + "pc": [ + 4253 + ] + }, + { + "teal": 4497, + "source": "contracts/validatorRegistry.algo.ts:1069", + "pc": [ + 4254 + ] + }, + { + "teal": 4498, + "source": "contracts/validatorRegistry.algo.ts:1069", + "pc": [ + 4255 + ] + }, + { + "teal": 4499, + "source": "contracts/validatorRegistry.algo.ts:1069", + "pc": [ + 4256, + 4257, + 4258 + ] + }, + { + "teal": 4504, + "source": "contracts/validatorRegistry.algo.ts:1072", + "pc": [ + 4259, + 4260 + ] + }, + { + "teal": 4505, + "source": "contracts/validatorRegistry.algo.ts:1072", + "pc": [ + 4261 + ] + }, + { + "teal": 4506, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4262 + ] + }, + { + "teal": 4507, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4263, + 4264 + ] + }, + { + "teal": 4508, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4265 + ] + }, + { + "teal": 4509, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4266 + ] + }, + { + "teal": 4510, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4267, + 4268 + ] + }, + { + "teal": 4511, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4269 + ] + }, + { + "teal": 4512, + "source": "contracts/validatorRegistry.algo.ts:1072", + "pc": [ + 4270 + ] + }, + { + "teal": 4513, + "source": "contracts/validatorRegistry.algo.ts:1072", + "pc": [ + 4271, + 4272 + ] + }, + { + "teal": 4514, + "source": "contracts/validatorRegistry.algo.ts:1072", + "pc": [ + 4273 + ] + }, + { + "teal": 4517, + "source": "contracts/validatorRegistry.algo.ts:1072", + "errorMessage": "global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')", + "pc": [ + 4274 + ] + }, + { + "teal": 4518, + "source": "contracts/validatorRegistry.algo.ts:1072", + "pc": [ + 4275, + 4276 + ] + }, + { + "teal": 4523, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4277 + ] + }, + { + "teal": 4524, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4278, + 4279 + ] + }, + { + "teal": 4525, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4280 + ] + }, + { + "teal": 4526, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4281, + 4282 + ] + }, + { + "teal": 4527, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4283 + ] + }, + { + "teal": 4528, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4284 + ] + }, + { + "teal": 4529, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4285, + 4286 + ] + }, + { + "teal": 4530, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4287 + ] + }, + { + "teal": 4531, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4288, + 4289 + ] + }, + { + "teal": 4532, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4290 + ] + }, + { + "teal": 4533, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4291 + ] + }, + { + "teal": 4534, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4292, + 4293, + 4294 + ] + }, + { + "teal": 4535, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4295, + 4296 + ] + }, + { + "teal": 4536, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4297, + 4298 + ] + }, + { + "teal": 4537, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4299 + ] + }, + { + "teal": 4538, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4300, + 4301 + ] + }, + { + "teal": 4539, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4302 + ] + }, + { + "teal": 4540, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4303 + ] + }, + { + "teal": 4541, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4304, + 4305 + ] + }, + { + "teal": 4542, + "source": "contracts/validatorRegistry.algo.ts:1068", + "pc": [ + 4306 + ] + }, + { + "teal": 4543, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4307, + 4308 + ] + }, + { + "teal": 4544, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4309 + ] + }, + { + "teal": 4545, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4310 + ] + }, + { + "teal": 4548, + "source": "contracts/validatorRegistry.algo.ts:1074", + "pc": [ + 4311, + 4312, + 4313 + ] + }, + { + "teal": 4553, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4314, + 4315 + ] + }, + { + "teal": 4554, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4316, + 4317 + ] + }, + { + "teal": 4555, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4318 + ] + }, + { + "teal": 4556, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4319, + 4320 + ] + }, + { + "teal": 4557, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4321 + ] + }, + { + "teal": 4558, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4322 + ] + }, + { + "teal": 4559, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4323, + 4324 + ] + }, + { + "teal": 4560, + "source": "contracts/validatorRegistry.algo.ts:1076", + "pc": [ + 4325 + ] + }, + { + "teal": 4565, + "source": "contracts/validatorRegistry.algo.ts:1067", + "pc": [ + 4326 + ] + }, + { + "teal": 4569, + "source": "contracts/validatorRegistry.algo.ts:1081", + "pc": [ + 4327, + 4328, + 4329 + ] + }, + { + "teal": 4573, + "source": "contracts/validatorRegistry.algo.ts:1083", + "pc": [ + 4330, + 4331 + ] + }, + { + "teal": 4574, + "source": "contracts/validatorRegistry.algo.ts:1083", + "pc": [ + 4332, + 4333, + 4334 + ] + }, + { + "teal": 4575, + "source": "contracts/validatorRegistry.algo.ts:1083", + "pc": [ + 4335, + 4336 + ] + }, + { + "teal": 4576, + "source": "contracts/validatorRegistry.algo.ts:1083", + "pc": [ + 4337 + ] + }, + { + "teal": 4577, + "source": "contracts/validatorRegistry.algo.ts:1083", + "pc": [ + 4338 + ] + }, + { + "teal": 4581, + "source": "contracts/validatorRegistry.algo.ts:1084", + "pc": [ + 4339, + 4340 + ] + }, + { + "teal": 4582, + "source": "contracts/validatorRegistry.algo.ts:1084", + "pc": [ + 4341, + 4342, + 4343 + ] + }, + { + "teal": 4583, + "source": "contracts/validatorRegistry.algo.ts:1084", + "pc": [ + 4344, + 4345 + ] + }, + { + "teal": 4584, + "source": "contracts/validatorRegistry.algo.ts:1084", + "pc": [ + 4346 + ] + }, + { + "teal": 4585, + "source": "contracts/validatorRegistry.algo.ts:1084", + "pc": [ + 4347 + ] + }, + { + "teal": 4589, + "source": "contracts/validatorRegistry.algo.ts:1085", + "pc": [ + 4348, + 4349 + ] + }, + { + "teal": 4590, + "source": "contracts/validatorRegistry.algo.ts:1085", + "pc": [ + 4350, + 4351 + ] + }, + { + "teal": 4591, + "source": "contracts/validatorRegistry.algo.ts:1085", + "pc": [ + 4352, + 4353, + 4354 + ] + }, + { + "teal": 4592, + "source": "contracts/validatorRegistry.algo.ts:1085", + "pc": [ + 4355 + ] + }, + { + "teal": 4595, + "source": "contracts/validatorRegistry.algo.ts:1085", + "errorMessage": "sender must be owner to add new validator", + "pc": [ + 4356 + ] + }, + { + "teal": 4602, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4357, + 4358 + ] + }, + { + "teal": 4603, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4359, + 4360, + 4361 + ] + }, + { + "teal": 4604, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4362 + ] + }, + { + "teal": 4605, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4363 + ] + }, + { + "teal": 4606, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4364 + ] + }, + { + "teal": 4607, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4365 + ] + }, + { + "teal": 4608, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4366, + 4367, + 4368 + ] + }, + { + "teal": 4609, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4369, + 4370 + ] + }, + { + "teal": 4610, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4371, + 4372, + 4373 + ] + }, + { + "teal": 4611, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4374 + ] + }, + { + "teal": 4612, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4375, + 4376 + ] + }, + { + "teal": 4613, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4377 + ] + }, + { + "teal": 4614, + "source": "contracts/validatorRegistry.algo.ts:1088", + "pc": [ + 4378 + ] + }, + { + "teal": 4618, + "source": "contracts/validatorRegistry.algo.ts:1087", + "errorMessage": "gating type not valid", + "pc": [ + 4379 + ] + }, + { + "teal": 4625, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4380, + 4381 + ] + }, + { + "teal": 4626, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4382, + 4383, + 4384 + ] + }, + { + "teal": 4627, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4385 + ] + }, + { + "teal": 4628, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4386 + ] + }, + { + "teal": 4629, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4387 + ] + }, + { + "teal": 4630, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4388 + ] + }, + { + "teal": 4631, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4389, + 4390, + 4391 + ] + }, + { + "teal": 4632, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4392, + 4393 + ] + }, + { + "teal": 4633, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4394, + 4395, + 4396 + ] + }, + { + "teal": 4634, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4397 + ] + }, + { + "teal": 4635, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4398, + 4399 + ] + }, + { + "teal": 4636, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4400 + ] + }, + { + "teal": 4637, + "source": "contracts/validatorRegistry.algo.ts:1092", + "pc": [ + 4401 + ] + }, + { + "teal": 4641, + "source": "contracts/validatorRegistry.algo.ts:1091", + "errorMessage": "epoch length not in allowable range", + "pc": [ + 4402 + ] + }, + { + "teal": 4648, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4403, + 4404 + ] + }, + { + "teal": 4649, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4405, + 4406, + 4407 + ] + }, + { + "teal": 4650, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4408 + ] + }, + { + "teal": 4651, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4409 + ] + }, + { + "teal": 4652, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4410 + ] + }, + { + "teal": 4653, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4411 + ] + }, + { + "teal": 4654, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4412, + 4413, + 4414 + ] + }, + { + "teal": 4655, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4415, + 4416 + ] + }, + { + "teal": 4656, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4417, + 4418, + 4419 + ] + }, + { + "teal": 4657, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4420 + ] + }, + { + "teal": 4658, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4421, + 4422 + ] + }, + { + "teal": 4659, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4423 + ] + }, + { + "teal": 4660, + "source": "contracts/validatorRegistry.algo.ts:1096", + "pc": [ + 4424 + ] + }, + { + "teal": 4664, + "source": "contracts/validatorRegistry.algo.ts:1095", + "errorMessage": "commission percentage not valid", + "pc": [ + 4425 + ] + }, + { + "teal": 4669, + "source": "contracts/validatorRegistry.algo.ts:1099", + "pc": [ + 4426, + 4427 + ] + }, + { + "teal": 4670, + "source": "contracts/validatorRegistry.algo.ts:1099", + "pc": [ + 4428, + 4429, + 4430 + ] + }, + { + "teal": 4671, + "source": "contracts/validatorRegistry.algo.ts:1099", + "pc": [ + 4431 + ] + }, + { + "teal": 4672, + "source": "contracts/validatorRegistry.algo.ts:1099", + "pc": [ + 4432 + ] + }, + { + "teal": 4673, + "source": "contracts/validatorRegistry.algo.ts:1099", + "pc": [ + 4433 + ] + }, + { + "teal": 4674, + "source": "contracts/validatorRegistry.algo.ts:1099", + "pc": [ + 4434, + 4435, + 4436 + ] + }, + { + "teal": 4682, + "source": "contracts/validatorRegistry.algo.ts:1101", + "pc": [ + 4437, + 4438 + ] + }, + { + "teal": 4683, + "source": "contracts/validatorRegistry.algo.ts:1101", + "pc": [ + 4439, + 4440, + 4441 + ] + }, + { + "teal": 4684, + "source": "contracts/validatorRegistry.algo.ts:1101", + "pc": [ + 4442, + 4443 + ] + }, + { + "teal": 4685, + "source": "contracts/validatorRegistry.algo.ts:1101", + "pc": [ + 4444 + ] + }, + { + "teal": 4688, + "source": "contracts/validatorRegistry.algo.ts:1100", + "errorMessage": "validatorCommissionAddress must be set if percent to validator is not 0", + "pc": [ + 4445 + ] + }, + { + "teal": 4693, + "source": "contracts/validatorRegistry.algo.ts:1105", + "pc": [ + 4446, + 4447 + ] + }, + { + "teal": 4694, + "source": "contracts/validatorRegistry.algo.ts:1105", + "pc": [ + 4448, + 4449, + 4450 + ] + }, + { + "teal": 4695, + "source": "contracts/validatorRegistry.algo.ts:1105", + "pc": [ + 4451 + ] + }, + { + "teal": 4696, + "source": "contracts/validatorRegistry.algo.ts:1105", + "pc": [ + 4452, + 4453 + ] + }, + { + "teal": 4697, + "source": "contracts/validatorRegistry.algo.ts:1105", + "pc": [ + 4454 + ] + }, + { + "teal": 4700, + "source": "contracts/validatorRegistry.algo.ts:1105", + "errorMessage": "staking pool must have minimum entry of 1 algo", + "pc": [ + 4455 + ] + }, + { + "teal": 4707, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4456, + 4457 + ] + }, + { + "teal": 4708, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4458, + 4459, + 4460 + ] + }, + { + "teal": 4709, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4461 + ] + }, + { + "teal": 4710, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4462 + ] + }, + { + "teal": 4711, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4463 + ] + }, + { + "teal": 4712, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4464 + ] + }, + { + "teal": 4713, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4465, + 4466, + 4467 + ] + }, + { + "teal": 4714, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4468, + 4469 + ] + }, + { + "teal": 4715, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4470, + 4471, + 4472 + ] + }, + { + "teal": 4716, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4473 + ] + }, + { + "teal": 4717, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4474, + 4475 + ] + }, + { + "teal": 4718, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4476 + ] + }, + { + "teal": 4719, + "source": "contracts/validatorRegistry.algo.ts:1108", + "pc": [ + 4477 + ] + }, + { + "teal": 4723, + "source": "contracts/validatorRegistry.algo.ts:1107", + "errorMessage": "number of pools per node must be be between 1 and the maximum allowed number", + "pc": [ + 4478 + ] + }, + { + "teal": 4728, + "source": "contracts/validatorRegistry.algo.ts:1111", + "pc": [ + 4479, + 4480 + ] + }, + { + "teal": 4729, + "source": "contracts/validatorRegistry.algo.ts:1111", + "pc": [ + 4481, + 4482, + 4483 + ] + }, + { + "teal": 4730, + "source": "contracts/validatorRegistry.algo.ts:1111", + "pc": [ + 4484 + ] + }, + { + "teal": 4731, + "source": "contracts/validatorRegistry.algo.ts:1111", + "pc": [ + 4485 + ] + }, + { + "teal": 4732, + "source": "contracts/validatorRegistry.algo.ts:1111", + "pc": [ + 4486 + ] + }, + { + "teal": 4733, + "source": "contracts/validatorRegistry.algo.ts:1111", + "pc": [ + 4487, + 4488, + 4489 + ] + }, + { + "teal": 4738, + "source": "contracts/validatorRegistry.algo.ts:1112", + "pc": [ + 4490, + 4491 + ] + }, + { + "teal": 4739, + "source": "contracts/validatorRegistry.algo.ts:1112", + "pc": [ + 4492, + 4493, + 4494 + ] + }, + { + "teal": 4740, + "source": "contracts/validatorRegistry.algo.ts:1112", + "pc": [ + 4495 + ] + }, + { + "teal": 4741, + "source": "contracts/validatorRegistry.algo.ts:1112", + "pc": [ + 4496, + 4497 + ] + }, + { + "teal": 4742, + "source": "contracts/validatorRegistry.algo.ts:1112", + "pc": [ + 4498 + ] + }, + { + "teal": 4745, + "source": "contracts/validatorRegistry.algo.ts:1112", + "errorMessage": "sunsettingOn must be later than now if set", + "pc": [ + 4499 + ] + }, + { + "teal": 4748, + "source": "contracts/validatorRegistry.algo.ts:1081", + "pc": [ + 4500 + ] + }, + { + "teal": 4762, + "source": "contracts/validatorRegistry.algo.ts:1127", + "pc": [ + 4501, + 4502, + 4503 + ] + }, + { + "teal": 4765, + "source": "contracts/validatorRegistry.algo.ts:1127", + "pc": [ + 4504 + ] + }, + { + "teal": 4766, + "source": "contracts/validatorRegistry.algo.ts:1127", + "pc": [ + 4505, + 4506 + ] + }, + { + "teal": 4770, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4507, + 4508 + ] + }, + { + "teal": 4771, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4509, + 4510 + ] + }, + { + "teal": 4772, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4511, + 4512, + 4513 + ] + }, + { + "teal": 4773, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4514 + ] + }, + { + "teal": 4774, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4515 + ] + }, + { + "teal": 4775, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4516 + ] + }, + { + "teal": 4776, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4517, + 4518 + ] + }, + { + "teal": 4777, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4519 + ] + }, + { + "teal": 4778, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4520 + ] + }, + { + "teal": 4779, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4521 + ] + }, + { + "teal": 4780, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4522 + ] + }, + { + "teal": 4781, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4523 + ] + }, + { + "teal": 4782, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4524 + ] + }, + { + "teal": 4783, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4525, + 4526 + ] + }, + { + "teal": 4784, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4527, + 4528, + 4529 + ] + }, + { + "teal": 4785, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4530 + ] + }, + { + "teal": 4786, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4531 + ] + }, + { + "teal": 4787, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4532 + ] + }, + { + "teal": 4788, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4533, + 4534 + ] + }, + { + "teal": 4789, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4535 + ] + }, + { + "teal": 4790, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4536 + ] + }, + { + "teal": 4791, + "source": "contracts/validatorRegistry.algo.ts:1134", + "pc": [ + 4537, + 4538 + ] + }, + { + "teal": 4804, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4539 + ] + }, + { + "teal": 4805, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4540 + ] + }, + { + "teal": 4806, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4541, + 4542 + ] + }, + { + "teal": 4810, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4543, + 4544 + ] + }, + { + "teal": 4811, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4545, + 4546 + ] + }, + { + "teal": 4812, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4547, + 4548 + ] + }, + { + "teal": 4813, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4549 + ] + }, + { + "teal": 4814, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4550, + 4551 + ] + }, + { + "teal": 4818, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4552, + 4553 + ] + }, + { + "teal": 4819, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4554, + 4555 + ] + }, + { + "teal": 4820, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4556 + ] + }, + { + "teal": 4821, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4557, + 4558 + ] + }, + { + "teal": 4824, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4559 + ] + }, + { + "teal": 4825, + "source": "contracts/validatorRegistry.algo.ts:1143", + "pc": [ + 4560, + 4561 + ] + }, + { + "teal": 4826, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4562 + ] + }, + { + "teal": 4827, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4563, + 4564 + ] + }, + { + "teal": 4828, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4565, + 4566 + ] + }, + { + "teal": 4829, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4567, + 4568, + 4569, + 4570, + 4571, + 4572 + ] + }, + { + "teal": 4830, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4573, + 4574 + ] + }, + { + "teal": 4834, + "source": "contracts/validatorRegistry.algo.ts:1139", + "pc": [ + 4575, + 4576 + ] + }, + { + "teal": 4835, + "source": "contracts/validatorRegistry.algo.ts:1139", + "pc": [ + 4577, + 4578 + ] + }, + { + "teal": 4845, + "source": "contracts/validatorRegistry.algo.ts:1145", + "pc": [ + 4579, + 4580 + ] + }, + { + "teal": 4846, + "source": "contracts/validatorRegistry.algo.ts:1145", + "pc": [ + 4581, + 4582 + ] + }, + { + "teal": 4847, + "source": "contracts/validatorRegistry.algo.ts:1145", + "pc": [ + 4583, + 4584 + ] + }, + { + "teal": 4850, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4585 + ] + }, + { + "teal": 4851, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4586, + 4587 + ] + }, + { + "teal": 4854, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4588 + ] + }, + { + "teal": 4855, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4589, + 4590 + ] + }, + { + "teal": 4856, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4591 + ] + }, + { + "teal": 4857, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4592 + ] + }, + { + "teal": 4858, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4593, + 4594 + ] + }, + { + "teal": 4859, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4595, + 4596, + 4597 + ] + }, + { + "teal": 4860, + "source": "contracts/validatorRegistry.algo.ts:1138", + "pc": [ + 4598 + ] + }, + { + "teal": 4865, + "source": "contracts/validatorRegistry.algo.ts:1148", + "pc": [ + 4599, + 4600 + ] + }, + { + "teal": 4866, + "source": "contracts/validatorRegistry.algo.ts:1148", + "pc": [ + 4601, + 4602, + 4603 + ] + }, + { + "teal": 4867, + "source": "contracts/validatorRegistry.algo.ts:1148", + "pc": [ + 4604 + ] + }, + { + "teal": 4868, + "source": "contracts/validatorRegistry.algo.ts:1148", + "pc": [ + 4605, + 4606, + 4607 + ] + }, + { + "teal": 4873, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4608 + ] + }, + { + "teal": 4874, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4609, + 4610 + ] + }, + { + "teal": 4875, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4611, + 4612 + ] + }, + { + "teal": 4876, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4613 + ] + }, + { + "teal": 4877, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4614, + 4615 + ] + }, + { + "teal": 4878, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4616, + 4617 + ] + }, + { + "teal": 4879, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4618 + ] + }, + { + "teal": 4880, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4619, + 4620 + ] + }, + { + "teal": 4881, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4621, + 4622 + ] + }, + { + "teal": 4882, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4623, + 4624 + ] + }, + { + "teal": 4883, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4625, + 4626 + ] + }, + { + "teal": 4884, + "source": "contracts/validatorRegistry.algo.ts:1149", + "pc": [ + 4627 + ] + }, + { + "teal": 4889, + "source": "contracts/validatorRegistry.algo.ts:1153", + "pc": [ + 4628, + 4629 + ] + }, + { + "teal": 4890, + "source": "contracts/validatorRegistry.algo.ts:1153", + "pc": [ + 4630, + 4631 + ] + }, + { + "teal": 4891, + "source": "contracts/validatorRegistry.algo.ts:1153", + "pc": [ + 4632 + ] + }, + { + "teal": 4894, + "source": "contracts/validatorRegistry.algo.ts:1153", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')", + "pc": [ + 4633 + ] + }, + { + "teal": 4895, + "source": "contracts/validatorRegistry.algo.ts:1153", + "pc": [ + 4634, + 4635 + ] + }, + { + "teal": 4899, + "source": "contracts/validatorRegistry.algo.ts:1154", + "pc": [ + 4636, + 4637 + ] + }, + { + "teal": 4900, + "source": "contracts/validatorRegistry.algo.ts:1154", + "pc": [ + 4638, + 4639 + ] + }, + { + "teal": 4901, + "source": "contracts/validatorRegistry.algo.ts:1154", + "pc": [ + 4640 + ] + }, + { + "teal": 4904, + "source": "contracts/validatorRegistry.algo.ts:1154", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')", + "pc": [ + 4641 + ] + }, + { + "teal": 4905, + "source": "contracts/validatorRegistry.algo.ts:1154", + "pc": [ + 4642, + 4643 + ] + }, + { + "teal": 4909, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4644, + 4645 + ] + }, + { + "teal": 4910, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4646, + 4647 + ] + }, + { + "teal": 4911, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4648, + 4649, + 4650 + ] + }, + { + "teal": 4912, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4651 + ] + }, + { + "teal": 4913, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4652 + ] + }, + { + "teal": 4914, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4653 + ] + }, + { + "teal": 4915, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4654, + 4655 + ] + }, + { + "teal": 4916, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4656 + ] + }, + { + "teal": 4917, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4657 + ] + }, + { + "teal": 4918, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4658 + ] + }, + { + "teal": 4919, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4659 + ] + }, + { + "teal": 4920, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4660, + 4661 + ] + }, + { + "teal": 4921, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4662 + ] + }, + { + "teal": 4922, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4663, + 4664, + 4665 + ] + }, + { + "teal": 4923, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4666 + ] + }, + { + "teal": 4924, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4667, + 4668 + ] + }, + { + "teal": 4925, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4669, + 4670, + 4671 + ] + }, + { + "teal": 4926, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4672 + ] + }, + { + "teal": 4927, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4673 + ] + }, + { + "teal": 4928, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4674 + ] + }, + { + "teal": 4929, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4675, + 4676 + ] + }, + { + "teal": 4930, + "source": "contracts/validatorRegistry.algo.ts:1155", + "pc": [ + 4677 + ] + }, + { + "teal": 4934, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4678, + 4679 + ] + }, + { + "teal": 4935, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4680, + 4681 + ] + }, + { + "teal": 4936, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4682, + 4683, + 4684 + ] + }, + { + "teal": 4937, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4685 + ] + }, + { + "teal": 4938, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4686 + ] + }, + { + "teal": 4939, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4687 + ] + }, + { + "teal": 4940, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4688, + 4689 + ] + }, + { + "teal": 4941, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4690 + ] + }, + { + "teal": 4942, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4691 + ] + }, + { + "teal": 4943, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4692, + 4693 + ] + }, + { + "teal": 4944, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4694 + ] + }, + { + "teal": 4945, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4695, + 4696 + ] + }, + { + "teal": 4946, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4697 + ] + }, + { + "teal": 4947, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4698 + ] + }, + { + "teal": 4948, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4699, + 4700 + ] + }, + { + "teal": 4949, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4701, + 4702, + 4703 + ] + }, + { + "teal": 4950, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4704 + ] + }, + { + "teal": 4951, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4705 + ] + }, + { + "teal": 4952, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4706 + ] + }, + { + "teal": 4953, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4707, + 4708 + ] + }, + { + "teal": 4954, + "source": "contracts/validatorRegistry.algo.ts:1156", + "pc": [ + 4709 + ] + }, + { + "teal": 4959, + "source": "contracts/validatorRegistry.algo.ts:1159", + "pc": [ + 4710, + 4711 + ] + }, + { + "teal": 4960, + "source": "contracts/validatorRegistry.algo.ts:1159", + "pc": [ + 4712, + 4713, + 4714 + ] + }, + { + "teal": 4965, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4715, + 4716 + ] + }, + { + "teal": 4966, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4717 + ] + }, + { + "teal": 4967, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4718 + ] + }, + { + "teal": 4968, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4719 + ] + }, + { + "teal": 4969, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4720, + 4721 + ] + }, + { + "teal": 4970, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4722, + 4723, + 4724 + ] + }, + { + "teal": 4971, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4725 + ] + }, + { + "teal": 4972, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4726 + ] + }, + { + "teal": 4973, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4727 + ] + }, + { + "teal": 4974, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4728, + 4729 + ] + }, + { + "teal": 4975, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4730 + ] + }, + { + "teal": 4976, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4731 + ] + }, + { + "teal": 4977, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4732 + ] + }, + { + "teal": 4978, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4733 + ] + }, + { + "teal": 4979, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4734 + ] + }, + { + "teal": 4980, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4735 + ] + }, + { + "teal": 4981, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4736, + 4737 + ] + }, + { + "teal": 4982, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4738, + 4739, + 4740 + ] + }, + { + "teal": 4983, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4741 + ] + }, + { + "teal": 4984, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4742 + ] + }, + { + "teal": 4985, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4743 + ] + }, + { + "teal": 4986, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4744, + 4745 + ] + }, + { + "teal": 4987, + "source": "contracts/validatorRegistry.algo.ts:1160", + "pc": [ + 4746 + ] + }, + { + "teal": 4993, + "source": "contracts/validatorRegistry.algo.ts:1162", + "pc": [ + 4747, + 4748 + ] + }, + { + "teal": 4994, + "source": "contracts/validatorRegistry.algo.ts:1162", + "pc": [ + 4749, + 4750, + 4751 + ] + }, + { + "teal": 4999, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4752, + 4753 + ] + }, + { + "teal": 5000, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4754 + ] + }, + { + "teal": 5001, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4755 + ] + }, + { + "teal": 5002, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4756 + ] + }, + { + "teal": 5003, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4757, + 4758 + ] + }, + { + "teal": 5004, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4759 + ] + }, + { + "teal": 5005, + "source": "contracts/validatorRegistry.algo.ts:1163", + "pc": [ + 4760 + ] + }, + { + "teal": 5010, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4761, + 4762 + ] + }, + { + "teal": 5011, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4763 + ] + }, + { + "teal": 5012, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4764 + ] + }, + { + "teal": 5013, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4765 + ] + }, + { + "teal": 5014, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4766, + 4767 + ] + }, + { + "teal": 5015, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4768, + 4769, + 4770 + ] + }, + { + "teal": 5016, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4771 + ] + }, + { + "teal": 5017, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4772 + ] + }, + { + "teal": 5018, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4773 + ] + }, + { + "teal": 5019, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4774, + 4775 + ] + }, + { + "teal": 5020, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4776 + ] + }, + { + "teal": 5021, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4777 + ] + }, + { + "teal": 5022, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4778, + 4779 + ] + }, + { + "teal": 5023, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4780, + 4781 + ] + }, + { + "teal": 5024, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4782, + 4783 + ] + }, + { + "teal": 5025, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4784 + ] + }, + { + "teal": 5026, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4785 + ] + }, + { + "teal": 5027, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4786 + ] + }, + { + "teal": 5028, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4787 + ] + }, + { + "teal": 5029, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4788, + 4789 + ] + }, + { + "teal": 5030, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4790, + 4791, + 4792 + ] + }, + { + "teal": 5031, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4793 + ] + }, + { + "teal": 5032, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4794 + ] + }, + { + "teal": 5033, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4795 + ] + }, + { + "teal": 5034, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4796, + 4797 + ] + }, + { + "teal": 5035, + "source": "contracts/validatorRegistry.algo.ts:1165", + "pc": [ + 4798 + ] + }, + { + "teal": 5039, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4799, + 4800 + ] + }, + { + "teal": 5040, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4801 + ] + }, + { + "teal": 5041, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4802, + 4803 + ] + }, + { + "teal": 5042, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4804, + 4805 + ] + }, + { + "teal": 5043, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4806, + 4807 + ] + }, + { + "teal": 5044, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4808 + ] + }, + { + "teal": 5045, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4809 + ] + }, + { + "teal": 5046, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4810, + 4811 + ] + }, + { + "teal": 5047, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4812 + ] + }, + { + "teal": 5048, + "source": "contracts/validatorRegistry.algo.ts:1166", + "pc": [ + 4813 + ] + }, + { + "teal": 5049, + "source": "contracts/validatorRegistry.algo.ts:1127", + "pc": [ + 4814 + ] + }, + { + "teal": 5053, + "source": "contracts/validatorRegistry.algo.ts:1169", + "pc": [ + 4815, + 4816, + 4817 + ] + }, + { + "teal": 5056, + "source": "contracts/validatorRegistry.algo.ts:1169", + "pc": [ + 4818 + ] + }, + { + "teal": 5057, + "source": "contracts/validatorRegistry.algo.ts:1169", + "pc": [ + 4819, + 4820 + ] + }, + { + "teal": 5061, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4821 + ] + }, + { + "teal": 5062, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4822, + 4823 + ] + }, + { + "teal": 5063, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4824 + ] + }, + { + "teal": 5064, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4825 + ] + }, + { + "teal": 5065, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4826 + ] + }, + { + "teal": 5066, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4827 + ] + }, + { + "teal": 5067, + "source": "contracts/validatorRegistry.algo.ts:1170", + "pc": [ + 4828 + ] + }, + { + "teal": 5071, + "source": "contracts/validatorRegistry.algo.ts:1172", + "pc": [ + 4829 + ] + }, + { + "teal": 5072, + "source": "contracts/validatorRegistry.algo.ts:1172", + "pc": [ + 4830, + 4831 + ] + }, + { + "teal": 5073, + "source": "contracts/validatorRegistry.algo.ts:1172", + "pc": [ + 4832 + ] + }, + { + "teal": 5074, + "source": "contracts/validatorRegistry.algo.ts:1172", + "pc": [ + 4833 + ] + }, + { + "teal": 5077, + "source": "contracts/validatorRegistry.algo.ts:1172", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "pc": [ + 4834 + ] + }, + { + "teal": 5078, + "source": "contracts/validatorRegistry.algo.ts:1172", + "pc": [ + 4835, + 4836 + ] + }, + { + "teal": 5082, + "source": "contracts/validatorRegistry.algo.ts:1173", + "pc": [ + 4837 + ] + }, + { + "teal": 5083, + "source": "contracts/validatorRegistry.algo.ts:1173", + "pc": [ + 4838, + 4839 + ] + }, + { + "teal": 5087, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4840 + ] + }, + { + "teal": 5088, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4841, + 4842 + ] + }, + { + "teal": 5093, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4843, + 4844 + ] + }, + { + "teal": 5094, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4845, + 4846 + ] + }, + { + "teal": 5095, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4847 + ] + }, + { + "teal": 5096, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4848, + 4849, + 4850 + ] + }, + { + "teal": 5101, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4851, + 4852 + ] + }, + { + "teal": 5102, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4853, + 4854 + ] + }, + { + "teal": 5103, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4855 + ] + }, + { + "teal": 5104, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4856 + ] + }, + { + "teal": 5105, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4857 + ] + }, + { + "teal": 5106, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4858 + ] + }, + { + "teal": 5107, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4859, + 4860 + ] + }, + { + "teal": 5108, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4861 + ] + }, + { + "teal": 5109, + "source": "contracts/validatorRegistry.algo.ts:1175", + "pc": [ + 4862, + 4863, + 4864 + ] + }, + { + "teal": 5114, + "source": "contracts/validatorRegistry.algo.ts:1177", + "pc": [ + 4865 + ] + }, + { + "teal": 5120, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4866, + 4867 + ] + }, + { + "teal": 5121, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4868 + ] + }, + { + "teal": 5122, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4869 + ] + }, + { + "teal": 5123, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4870 + ] + }, + { + "teal": 5124, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4871, + 4872, + 4873 + ] + }, + { + "teal": 5125, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4874, + 4875 + ] + }, + { + "teal": 5126, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4876, + 4877 + ] + }, + { + "teal": 5127, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4878 + ] + }, + { + "teal": 5128, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4879 + ] + }, + { + "teal": 5129, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4880 + ] + }, + { + "teal": 5130, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4881 + ] + }, + { + "teal": 5131, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4882 + ] + }, + { + "teal": 5132, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4883 + ] + }, + { + "teal": 5133, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4884 + ] + }, + { + "teal": 5134, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4885 + ] + }, + { + "teal": 5135, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4886 + ] + }, + { + "teal": 5136, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4887 + ] + }, + { + "teal": 5139, + "source": "contracts/validatorRegistry.algo.ts:1179", + "pc": [ + 4888, + 4889, + 4890 + ] + }, + { + "teal": 5144, + "source": "contracts/validatorRegistry.algo.ts:1180", + "pc": [ + 4891, + 4892 + ] + }, + { + "teal": 5145, + "source": "contracts/validatorRegistry.algo.ts:1180", + "pc": [ + 4893 + ] + }, + { + "teal": 5146, + "source": "contracts/validatorRegistry.algo.ts:1180", + "pc": [ + 4894 + ] + }, + { + "teal": 5147, + "source": "contracts/validatorRegistry.algo.ts:1180", + "pc": [ + 4895, + 4896 + ] + }, + { + "teal": 5154, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4897, + 4898 + ] + }, + { + "teal": 5155, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4899 + ] + }, + { + "teal": 5156, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4900 + ] + }, + { + "teal": 5157, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4901, + 4902 + ] + }, + { + "teal": 5158, + "source": "contracts/validatorRegistry.algo.ts:1174", + "pc": [ + 4903, + 4904, + 4905 + ] + }, + { + "teal": 5164, + "source": "contracts/validatorRegistry.algo.ts:1183", + "pc": [ + 4906, + 4907 + ] + }, + { + "teal": 5165, + "source": "contracts/validatorRegistry.algo.ts:1183", + "pc": [ + 4908 + ] + }, + { + "teal": 5166, + "source": "contracts/validatorRegistry.algo.ts:1183", + "pc": [ + 4909 + ] + }, + { + "teal": 5167, + "source": "contracts/validatorRegistry.algo.ts:1183", + "pc": [ + 4910, + 4911, + 4912 + ] + }, + { + "teal": 5171, + "source": "contracts/validatorRegistry.algo.ts:1184", + "errorMessage": "No empty slot available in the staker pool set", + "pc": [ + 4913 + ] + }, + { + "teal": 5176, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4914, + 4915 + ] + }, + { + "teal": 5177, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4916 + ] + }, + { + "teal": 5178, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4917 + ] + }, + { + "teal": 5179, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4918 + ] + }, + { + "teal": 5180, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4919 + ] + }, + { + "teal": 5181, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4920, + 4921 + ] + }, + { + "teal": 5182, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4922 + ] + }, + { + "teal": 5183, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4923, + 4924 + ] + }, + { + "teal": 5184, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4925 + ] + }, + { + "teal": 5185, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4926, + 4927 + ] + }, + { + "teal": 5186, + "source": "contracts/validatorRegistry.algo.ts:1186", + "pc": [ + 4928 + ] + }, + { + "teal": 5187, + "source": "contracts/validatorRegistry.algo.ts:1169", + "pc": [ + 4929 + ] + }, + { + "teal": 5198, + "source": "contracts/validatorRegistry.algo.ts:1197", + "pc": [ + 4930, + 4931, + 4932 + ] + }, + { + "teal": 5201, + "source": "contracts/validatorRegistry.algo.ts:1197", + "pc": [ + 4933 + ] + }, + { + "teal": 5202, + "source": "contracts/validatorRegistry.algo.ts:1197", + "pc": [ + 4934, + 4935 + ] + }, + { + "teal": 5206, + "source": "contracts/validatorRegistry.algo.ts:1199", + "pc": [ + 4936 + ] + }, + { + "teal": 5207, + "source": "contracts/validatorRegistry.algo.ts:1199", + "pc": [ + 4937, + 4938 + ] + }, + { + "teal": 5211, + "source": "contracts/validatorRegistry.algo.ts:1200", + "pc": [ + 4939 + ] + }, + { + "teal": 5212, + "source": "contracts/validatorRegistry.algo.ts:1200", + "pc": [ + 4940, + 4941 + ] + }, + { + "teal": 5216, + "source": "contracts/validatorRegistry.algo.ts:1201", + "pc": [ + 4942 + ] + }, + { + "teal": 5217, + "source": "contracts/validatorRegistry.algo.ts:1201", + "pc": [ + 4943, + 4944 + ] + }, + { + "teal": 5221, + "source": "contracts/validatorRegistry.algo.ts:1203", + "pc": [ + 4945 + ] + }, + { + "teal": 5222, + "source": "contracts/validatorRegistry.algo.ts:1203", + "pc": [ + 4946, + 4947 + ] + }, + { + "teal": 5223, + "source": "contracts/validatorRegistry.algo.ts:1203", + "pc": [ + 4948 + ] + }, + { + "teal": 5224, + "source": "contracts/validatorRegistry.algo.ts:1203", + "pc": [ + 4949 + ] + }, + { + "teal": 5227, + "source": "contracts/validatorRegistry.algo.ts:1203", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "pc": [ + 4950 + ] + }, + { + "teal": 5228, + "source": "contracts/validatorRegistry.algo.ts:1203", + "pc": [ + 4951, + 4952 + ] + }, + { + "teal": 5232, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 4953 + ] + }, + { + "teal": 5233, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 4954, + 4955 + ] + }, + { + "teal": 5238, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 4956, + 4957 + ] + }, + { + "teal": 5239, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 4958, + 4959 + ] + }, + { + "teal": 5240, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 4960 + ] + }, + { + "teal": 5241, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 4961, + 4962, + 4963 + ] + }, + { + "teal": 5246, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4964, + 4965 + ] + }, + { + "teal": 5247, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4966, + 4967 + ] + }, + { + "teal": 5248, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4968 + ] + }, + { + "teal": 5249, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4969 + ] + }, + { + "teal": 5250, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4970 + ] + }, + { + "teal": 5251, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4971 + ] + }, + { + "teal": 5252, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4972 + ] + }, + { + "teal": 5253, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4973 + ] + }, + { + "teal": 5254, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4974 + ] + }, + { + "teal": 5255, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4975 + ] + }, + { + "teal": 5256, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4976 + ] + }, + { + "teal": 5257, + "source": "contracts/validatorRegistry.algo.ts:1205", + "pc": [ + 4977, + 4978, + 4979 + ] + }, + { + "teal": 5260, + "source": "contracts/validatorRegistry.algo.ts:1206", + "pc": [ + 4980, + 4981, + 4982 + ] + }, + { + "teal": 5265, + "source": "contracts/validatorRegistry.algo.ts:1208", + "pc": [ + 4983, + 4984 + ] + }, + { + "teal": 5266, + "source": "contracts/validatorRegistry.algo.ts:1208", + "pc": [ + 4985 + ] + }, + { + "teal": 5267, + "source": "contracts/validatorRegistry.algo.ts:1208", + "pc": [ + 4986 + ] + }, + { + "teal": 5268, + "source": "contracts/validatorRegistry.algo.ts:1208", + "pc": [ + 4987, + 4988 + ] + }, + { + "teal": 5273, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4989, + 4990 + ] + }, + { + "teal": 5274, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4991, + 4992 + ] + }, + { + "teal": 5275, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4993 + ] + }, + { + "teal": 5276, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4994 + ] + }, + { + "teal": 5277, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4995 + ] + }, + { + "teal": 5278, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4996 + ] + }, + { + "teal": 5279, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4997 + ] + }, + { + "teal": 5280, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4998 + ] + }, + { + "teal": 5281, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 4999 + ] + }, + { + "teal": 5282, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 5000, + 5001 + ] + }, + { + "teal": 5283, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 5002, + 5003, + 5004 + ] + }, + { + "teal": 5284, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 5005 + ] + }, + { + "teal": 5285, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 5006 + ] + }, + { + "teal": 5286, + "source": "contracts/validatorRegistry.algo.ts:1209", + "pc": [ + 5007, + 5008, + 5009 + ] + }, + { + "teal": 5292, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5010, + 5011 + ] + }, + { + "teal": 5293, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5012, + 5013 + ] + }, + { + "teal": 5294, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5014 + ] + }, + { + "teal": 5295, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5015 + ] + }, + { + "teal": 5296, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5016 + ] + }, + { + "teal": 5297, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5017 + ] + }, + { + "teal": 5298, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5018, + 5019 + ] + }, + { + "teal": 5299, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5020 + ] + }, + { + "teal": 5300, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5021, + 5022, + 5023 + ] + }, + { + "teal": 5305, + "source": "contracts/validatorRegistry.algo.ts:1211", + "pc": [ + 5024 + ] + }, + { + "teal": 5306, + "source": "contracts/validatorRegistry.algo.ts:1211", + "pc": [ + 5025, + 5026 + ] + }, + { + "teal": 5310, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5027, + 5028 + ] + }, + { + "teal": 5311, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5029 + ] + }, + { + "teal": 5312, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5030 + ] + }, + { + "teal": 5313, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5037, + 5038, + 5039, + 5040, + 5041, + 5042, + 5043, + 5044, + 5045, + 5046, + 5047, + 5048, + 5049, + 5050, + 5051, + 5052, + 5053, + 5054, + 5055, + 5056 + ] + }, + { + "teal": 5314, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5057 + ] + }, + { + "teal": 5315, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5058, + 5059 + ] + }, + { + "teal": 5316, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5060 + ] + }, + { + "teal": 5317, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5061, + 5062 + ] + }, + { + "teal": 5318, + "source": "contracts/validatorRegistry.algo.ts:1213", + "pc": [ + 5063 + ] + }, + { + "teal": 5319, + "source": "contracts/validatorRegistry.algo.ts:1210", + "pc": [ + 5064, + 5065, + 5066 + ] + }, + { + "teal": 5324, + "source": "contracts/validatorRegistry.algo.ts:1215", + "pc": [ + 5067, + 5068 + ] + }, + { + "teal": 5325, + "source": "contracts/validatorRegistry.algo.ts:1215", + "pc": [ + 5069 + ] + }, + { + "teal": 5326, + "source": "contracts/validatorRegistry.algo.ts:1215", + "pc": [ + 5070 + ] + }, + { + "teal": 5327, + "source": "contracts/validatorRegistry.algo.ts:1215", + "pc": [ + 5071, + 5072 + ] + }, + { + "teal": 5336, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 5073, + 5074 + ] + }, + { + "teal": 5337, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 5075 + ] + }, + { + "teal": 5338, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 5076 + ] + }, + { + "teal": 5339, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 5077, + 5078 + ] + }, + { + "teal": 5340, + "source": "contracts/validatorRegistry.algo.ts:1204", + "pc": [ + 5079, + 5080, + 5081 + ] + }, + { + "teal": 5346, + "source": "contracts/validatorRegistry.algo.ts:1219", + "pc": [ + 5082, + 5083 + ] + }, + { + "teal": 5347, + "source": "contracts/validatorRegistry.algo.ts:1219", + "pc": [ + 5084 + ] + }, + { + "teal": 5348, + "source": "contracts/validatorRegistry.algo.ts:1219", + "pc": [ + 5085, + 5086, + 5087 + ] + }, + { + "teal": 5352, + "source": "contracts/validatorRegistry.algo.ts:1220", + "errorMessage": "No matching slot found when told to remove a pool from the stakers set", + "pc": [ + 5088 + ] + }, + { + "teal": 5357, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5089, + 5090 + ] + }, + { + "teal": 5358, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5091 + ] + }, + { + "teal": 5359, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5092, + 5093 + ] + }, + { + "teal": 5360, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5094 + ] + }, + { + "teal": 5361, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5095 + ] + }, + { + "teal": 5362, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5096 + ] + }, + { + "teal": 5363, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5097 + ] + }, + { + "teal": 5364, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5098, + 5099 + ] + }, + { + "teal": 5365, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5100 + ] + }, + { + "teal": 5366, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5101 + ] + }, + { + "teal": 5367, + "source": "contracts/validatorRegistry.algo.ts:1223", + "pc": [ + 5102 + ] + }, + { + "teal": 5370, + "source": "contracts/validatorRegistry.algo.ts:1197", + "pc": [ + 5103, + 5104 + ] + }, + { + "teal": 5373, + "source": "contracts/validatorRegistry.algo.ts:1197", + "pc": [ + 5105, + 5106 + ] + }, + { + "teal": 5374, + "source": "contracts/validatorRegistry.algo.ts:1197", + "pc": [ + 5107 + ] + }, + { + "teal": 5378, + "source": "contracts/validatorRegistry.algo.ts:1226", + "pc": [ + 5108, + 5109, + 5110 + ] + }, + { + "teal": 5381, + "source": "contracts/validatorRegistry.algo.ts:1226", + "pc": [ + 5111 + ] + }, + { + "teal": 5382, + "source": "contracts/validatorRegistry.algo.ts:1226", + "pc": [ + 5112, + 5113 + ] + }, + { + "teal": 5386, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5114, + 5115 + ] + }, + { + "teal": 5387, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5116, + 5117 + ] + }, + { + "teal": 5388, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5118 + ] + }, + { + "teal": 5389, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5119, + 5120 + ] + }, + { + "teal": 5390, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5121 + ] + }, + { + "teal": 5391, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5122 + ] + }, + { + "teal": 5392, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5123, + 5124 + ] + }, + { + "teal": 5393, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5125 + ] + }, + { + "teal": 5394, + "source": "contracts/validatorRegistry.algo.ts:1227", + "pc": [ + 5126, + 5127 + ] + }, + { + "teal": 5398, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5128, + 5129, + 5130 + ] + }, + { + "teal": 5399, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5131 + ] + }, + { + "teal": 5400, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5132 + ] + }, + { + "teal": 5401, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5133, + 5134 + ] + }, + { + "teal": 5402, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5135 + ] + }, + { + "teal": 5403, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5136 + ] + }, + { + "teal": 5404, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5137, + 5138 + ] + }, + { + "teal": 5405, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5139 + ] + }, + { + "teal": 5406, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5140 + ] + }, + { + "teal": 5407, + "source": "contracts/validatorRegistry.algo.ts:1228", + "pc": [ + 5141, + 5142 + ] + }, + { + "teal": 5411, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5143, + 5144 + ] + }, + { + "teal": 5412, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5145 + ] + }, + { + "teal": 5413, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5146 + ] + }, + { + "teal": 5414, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5147 + ] + }, + { + "teal": 5415, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5148, + 5149, + 5150 + ] + }, + { + "teal": 5416, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5151, + 5152 + ] + }, + { + "teal": 5417, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5153 + ] + }, + { + "teal": 5418, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5154 + ] + }, + { + "teal": 5419, + "source": "contracts/validatorRegistry.algo.ts:1230", + "pc": [ + 5155 + ] + }, + { + "teal": 5423, + "source": "contracts/validatorRegistry.algo.ts:1230", + "errorMessage": "node number not in valid range", + "pc": [ + 5156 + ] + }, + { + "teal": 5427, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5157 + ] + }, + { + "teal": 5428, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5158, + 5159 + ] + }, + { + "teal": 5433, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5160, + 5161 + ] + }, + { + "teal": 5434, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5162, + 5163 + ] + }, + { + "teal": 5435, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5164 + ] + }, + { + "teal": 5436, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5165, + 5166, + 5167 + ] + }, + { + "teal": 5441, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5168, + 5169 + ] + }, + { + "teal": 5442, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5170 + ] + }, + { + "teal": 5443, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5171, + 5172 + ] + }, + { + "teal": 5444, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5173 + ] + }, + { + "teal": 5445, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5174 + ] + }, + { + "teal": 5446, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5175 + ] + }, + { + "teal": 5447, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5176 + ] + }, + { + "teal": 5448, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5177 + ] + }, + { + "teal": 5449, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5178 + ] + }, + { + "teal": 5450, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5179 + ] + }, + { + "teal": 5451, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5180, + 5181 + ] + }, + { + "teal": 5452, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5182 + ] + }, + { + "teal": 5453, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5183 + ] + }, + { + "teal": 5454, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5184 + ] + }, + { + "teal": 5455, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5185 + ] + }, + { + "teal": 5456, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5186 + ] + }, + { + "teal": 5457, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5187 + ] + }, + { + "teal": 5458, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5188 + ] + }, + { + "teal": 5459, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5189 + ] + }, + { + "teal": 5460, + "source": "contracts/validatorRegistry.algo.ts:1233", + "pc": [ + 5190, + 5191, + 5192 + ] + }, + { + "teal": 5465, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5193, + 5194 + ] + }, + { + "teal": 5466, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5195, + 5196 + ] + }, + { + "teal": 5467, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5197 + ] + }, + { + "teal": 5468, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5198 + ] + }, + { + "teal": 5469, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5199 + ] + }, + { + "teal": 5470, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5200 + ] + }, + { + "teal": 5471, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5201 + ] + }, + { + "teal": 5472, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5202 + ] + }, + { + "teal": 5473, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5203 + ] + }, + { + "teal": 5474, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5204, + 5205 + ] + }, + { + "teal": 5475, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5206 + ] + }, + { + "teal": 5476, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5207 + ] + }, + { + "teal": 5477, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5208 + ] + }, + { + "teal": 5478, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5209, + 5210 + ] + }, + { + "teal": 5479, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5211 + ] + }, + { + "teal": 5480, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5212 + ] + }, + { + "teal": 5481, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5213, + 5214 + ] + }, + { + "teal": 5482, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5215 + ] + }, + { + "teal": 5483, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5216 + ] + }, + { + "teal": 5484, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5217, + 5218 + ] + }, + { + "teal": 5485, + "source": "contracts/validatorRegistry.algo.ts:1235", + "pc": [ + 5219 + ] + }, + { + "teal": 5489, + "source": "contracts/validatorRegistry.algo.ts:1236", + "pc": [ + 5220 + ] + }, + { + "teal": 5496, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5221, + 5222 + ] + }, + { + "teal": 5497, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5223 + ] + }, + { + "teal": 5498, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5224 + ] + }, + { + "teal": 5499, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5225, + 5226 + ] + }, + { + "teal": 5500, + "source": "contracts/validatorRegistry.algo.ts:1232", + "pc": [ + 5227, + 5228, + 5229 + ] + }, + { + "teal": 5504, + "source": "contracts/validatorRegistry.algo.ts:1239", + "errorMessage": "no available space in specified node for this pool", + "pc": [ + 5230 + ] + }, + { + "teal": 5505, + "source": "contracts/validatorRegistry.algo.ts:1226", + "pc": [ + 5231 + ] + }, + { + "teal": 5515, + "source": "contracts/validatorRegistry.algo.ts:1249", + "pc": [ + 5232, + 5233, + 5234 + ] + }, + { + "teal": 5518, + "source": "contracts/validatorRegistry.algo.ts:1249", + "pc": [ + 5235 + ] + }, + { + "teal": 5519, + "source": "contracts/validatorRegistry.algo.ts:1249", + "pc": [ + 5236, + 5237 + ] + }, + { + "teal": 5523, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5238, + 5239 + ] + }, + { + "teal": 5524, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5240 + ] + }, + { + "teal": 5525, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5241 + ] + }, + { + "teal": 5526, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5242, + 5243 + ] + }, + { + "teal": 5527, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5244 + ] + }, + { + "teal": 5528, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5245 + ] + }, + { + "teal": 5529, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5246, + 5247 + ] + }, + { + "teal": 5530, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5248 + ] + }, + { + "teal": 5531, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5249 + ] + }, + { + "teal": 5532, + "source": "contracts/validatorRegistry.algo.ts:1250", + "pc": [ + 5250, + 5251 + ] + }, + { + "teal": 5537, + "source": "contracts/validatorRegistry.algo.ts:1251", + "pc": [ + 5252, + 5253 + ] + }, + { + "teal": 5538, + "source": "contracts/validatorRegistry.algo.ts:1251", + "pc": [ + 5254 + ] + }, + { + "teal": 5539, + "source": "contracts/validatorRegistry.algo.ts:1251", + "pc": [ + 5255 + ] + }, + { + "teal": 5540, + "source": "contracts/validatorRegistry.algo.ts:1251", + "pc": [ + 5256, + 5257, + 5258 + ] + }, + { + "teal": 5545, + "source": "contracts/validatorRegistry.algo.ts:1252", + "pc": [ + 5259 + ] + }, + { + "teal": 5550, + "source": "contracts/validatorRegistry.algo.ts:1254", + "pc": [ + 5260, + 5261 + ] + }, + { + "teal": 5551, + "source": "contracts/validatorRegistry.algo.ts:1254", + "pc": [ + 5262, + 5263 + ] + }, + { + "teal": 5555, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5264 + ] + }, + { + "teal": 5556, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5265, + 5266 + ] + }, + { + "teal": 5557, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5267 + ] + }, + { + "teal": 5558, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5268, + 5269 + ] + }, + { + "teal": 5559, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5270 + ] + }, + { + "teal": 5560, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5271 + ] + }, + { + "teal": 5561, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5272, + 5273 + ] + }, + { + "teal": 5562, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5274 + ] + }, + { + "teal": 5563, + "source": "contracts/validatorRegistry.algo.ts:1255", + "pc": [ + 5275, + 5276 + ] + }, + { + "teal": 5570, + "source": "contracts/validatorRegistry.algo.ts:1259", + "pc": [ + 5277, + 5278 + ] + }, + { + "teal": 5571, + "source": "contracts/validatorRegistry.algo.ts:1259", + "pc": [ + 5279 + ] + }, + { + "teal": 5572, + "source": "contracts/validatorRegistry.algo.ts:1259", + "pc": [ + 5280 + ] + }, + { + "teal": 5573, + "source": "contracts/validatorRegistry.algo.ts:1259", + "pc": [ + 5281 + ] + }, + { + "teal": 5574, + "source": "contracts/validatorRegistry.algo.ts:1259", + "pc": [ + 5282, + 5283, + 5284 + ] + }, + { + "teal": 5575, + "source": "contracts/validatorRegistry.algo.ts:1260", + "pc": [ + 5285, + 5286 + ] + }, + { + "teal": 5576, + "source": "contracts/validatorRegistry.algo.ts:1260", + "pc": [ + 5287, + 5288 + ] + }, + { + "teal": 5577, + "source": "contracts/validatorRegistry.algo.ts:1260", + "pc": [ + 5289 + ] + }, + { + "teal": 5578, + "source": "contracts/validatorRegistry.algo.ts:1259", + "pc": [ + 5290 + ] + }, + { + "teal": 5581, + "source": "contracts/validatorRegistry.algo.ts:1260", + "pc": [ + 5291 + ] + }, + { + "teal": 5582, + "source": "contracts/validatorRegistry.algo.ts:1260", + "pc": [ + 5292, + 5293, + 5294 + ] + }, + { + "teal": 5583, + "source": "contracts/validatorRegistry.algo.ts:1261", + "pc": [ + 5295, + 5296 + ] + }, + { + "teal": 5584, + "source": "contracts/validatorRegistry.algo.ts:1261", + "pc": [ + 5297, + 5298 + ] + }, + { + "teal": 5585, + "source": "contracts/validatorRegistry.algo.ts:1261", + "pc": [ + 5299 + ] + }, + { + "teal": 5586, + "source": "contracts/validatorRegistry.algo.ts:1260", + "pc": [ + 5300 + ] + }, + { + "teal": 5589, + "source": "contracts/validatorRegistry.algo.ts:1258", + "pc": [ + 5301, + 5302, + 5303 + ] + }, + { + "teal": 5594, + "source": "contracts/validatorRegistry.algo.ts:1263", + "pc": [ + 5304, + 5305 + ] + }, + { + "teal": 5595, + "source": "contracts/validatorRegistry.algo.ts:1263", + "pc": [ + 5306 + ] + }, + { + "teal": 5596, + "source": "contracts/validatorRegistry.algo.ts:1263", + "pc": [ + 5307 + ] + }, + { + "teal": 5597, + "source": "contracts/validatorRegistry.algo.ts:1263", + "pc": [ + 5308 + ] + }, + { + "teal": 5601, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5309, + 5310 + ] + }, + { + "teal": 5602, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5311 + ] + }, + { + "teal": 5603, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5312 + ] + }, + { + "teal": 5604, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5313, + 5314 + ] + }, + { + "teal": 5605, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5315 + ] + }, + { + "teal": 5606, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5316 + ] + }, + { + "teal": 5607, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5317, + 5318 + ] + }, + { + "teal": 5608, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5319 + ] + }, + { + "teal": 5609, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5320 + ] + }, + { + "teal": 5610, + "source": "contracts/validatorRegistry.algo.ts:1264", + "pc": [ + 5321, + 5322 + ] + }, + { + "teal": 5615, + "source": "contracts/validatorRegistry.algo.ts:1265", + "pc": [ + 5323, + 5324 + ] + }, + { + "teal": 5616, + "source": "contracts/validatorRegistry.algo.ts:1265", + "pc": [ + 5325 + ] + }, + { + "teal": 5617, + "source": "contracts/validatorRegistry.algo.ts:1265", + "pc": [ + 5326 + ] + }, + { + "teal": 5618, + "source": "contracts/validatorRegistry.algo.ts:1265", + "pc": [ + 5327, + 5328, + 5329 + ] + }, + { + "teal": 5623, + "source": "contracts/validatorRegistry.algo.ts:1266", + "pc": [ + 5330 + ] + }, + { + "teal": 5624, + "source": "contracts/validatorRegistry.algo.ts:1266", + "pc": [ + 5331, + 5332 + ] + }, + { + "teal": 5632, + "source": "contracts/validatorRegistry.algo.ts:1269", + "pc": [ + 5333, + 5334 + ] + }, + { + "teal": 5633, + "source": "contracts/validatorRegistry.algo.ts:1269", + "pc": [ + 5335, + 5336 + ] + }, + { + "teal": 5634, + "source": "contracts/validatorRegistry.algo.ts:1269", + "pc": [ + 5337, + 5338 + ] + }, + { + "teal": 5635, + "source": "contracts/validatorRegistry.algo.ts:1269", + "pc": [ + 5339 + ] + }, + { + "teal": 5636, + "source": "contracts/validatorRegistry.algo.ts:1269", + "pc": [ + 5340, + 5341 + ] + }, + { + "teal": 5637, + "source": "contracts/validatorRegistry.algo.ts:1269", + "pc": [ + 5342 + ] + }, + { + "teal": 5640, + "source": "contracts/validatorRegistry.algo.ts:1268", + "errorMessage": "must have required minimum balance of validator defined token to add stake", + "pc": [ + 5343 + ] + }, + { + "teal": 5646, + "source": "contracts/validatorRegistry.algo.ts:1273", + "pc": [ + 5344, + 5345 + ] + }, + { + "teal": 5647, + "source": "contracts/validatorRegistry.algo.ts:1273", + "pc": [ + 5346 + ] + }, + { + "teal": 5648, + "source": "contracts/validatorRegistry.algo.ts:1273", + "pc": [ + 5347 + ] + }, + { + "teal": 5649, + "source": "contracts/validatorRegistry.algo.ts:1273", + "pc": [ + 5348, + 5349, + 5350 + ] + }, + { + "teal": 5657, + "source": "contracts/validatorRegistry.algo.ts:1275", + "pc": [ + 5351, + 5352 + ] + }, + { + "teal": 5658, + "source": "contracts/validatorRegistry.algo.ts:1275", + "pc": [ + 5353, + 5354 + ] + }, + { + "teal": 5659, + "source": "contracts/validatorRegistry.algo.ts:1275", + "pc": [ + 5355 + ] + }, + { + "teal": 5660, + "source": "contracts/validatorRegistry.algo.ts:1275", + "pc": [ + 5356, + 5357 + ] + }, + { + "teal": 5661, + "source": "contracts/validatorRegistry.algo.ts:1275", + "pc": [ + 5358, + 5359, + 5360 + ] + }, + { + "teal": 5662, + "source": "contracts/validatorRegistry.algo.ts:1275", + "pc": [ + 5361 + ] + }, + { + "teal": 5665, + "source": "contracts/validatorRegistry.algo.ts:1274", + "errorMessage": "specified asset must be created by creator that the validator defined as a requirement to stake", + "pc": [ + 5362 + ] + }, + { + "teal": 5671, + "source": "contracts/validatorRegistry.algo.ts:1279", + "pc": [ + 5363, + 5364 + ] + }, + { + "teal": 5672, + "source": "contracts/validatorRegistry.algo.ts:1279", + "pc": [ + 5365, + 5366 + ] + }, + { + "teal": 5673, + "source": "contracts/validatorRegistry.algo.ts:1279", + "pc": [ + 5367 + ] + }, + { + "teal": 5674, + "source": "contracts/validatorRegistry.algo.ts:1279", + "pc": [ + 5368, + 5369, + 5370 + ] + }, + { + "teal": 5679, + "source": "contracts/validatorRegistry.algo.ts:1280", + "pc": [ + 5371 + ] + }, + { + "teal": 5680, + "source": "contracts/validatorRegistry.algo.ts:1280", + "pc": [ + 5372, + 5373 + ] + }, + { + "teal": 5684, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5374, + 5375 + ] + }, + { + "teal": 5685, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5376, + 5377, + 5378 + ] + }, + { + "teal": 5686, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5379 + ] + }, + { + "teal": 5687, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5380, + 5381 + ] + }, + { + "teal": 5688, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5382, + 5383, + 5384 + ] + }, + { + "teal": 5689, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5385 + ] + }, + { + "teal": 5690, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5386, + 5387 + ] + }, + { + "teal": 5691, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5388 + ] + }, + { + "teal": 5692, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5389, + 5390 + ] + }, + { + "teal": 5698, + "source": "contracts/validatorRegistry.algo.ts:1282", + "pc": [ + 5391, + 5392 + ] + }, + { + "teal": 5699, + "source": "contracts/validatorRegistry.algo.ts:1282", + "pc": [ + 5393, + 5394 + ] + }, + { + "teal": 5700, + "source": "contracts/validatorRegistry.algo.ts:1282", + "pc": [ + 5395 + ] + }, + { + "teal": 5701, + "source": "contracts/validatorRegistry.algo.ts:1282", + "pc": [ + 5396, + 5397, + 5398 + ] + }, + { + "teal": 5706, + "source": "contracts/validatorRegistry.algo.ts:1283", + "pc": [ + 5399 + ] + }, + { + "teal": 5707, + "source": "contracts/validatorRegistry.algo.ts:1283", + "pc": [ + 5400, + 5401 + ] + }, + { + "teal": 5708, + "source": "contracts/validatorRegistry.algo.ts:1284", + "pc": [ + 5402, + 5403, + 5404 + ] + }, + { + "teal": 5714, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5405, + 5406 + ] + }, + { + "teal": 5715, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5407 + ] + }, + { + "teal": 5716, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5408 + ] + }, + { + "teal": 5717, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5409 + ] + }, + { + "teal": 5718, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5410, + 5411 + ] + }, + { + "teal": 5719, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5412 + ] + }, + { + "teal": 5720, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5413, + 5414, + 5415 + ] + }, + { + "teal": 5721, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5416, + 5417 + ] + }, + { + "teal": 5722, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5418, + 5419 + ] + }, + { + "teal": 5723, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5420, + 5421 + ] + }, + { + "teal": 5724, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5422 + ] + }, + { + "teal": 5725, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5423 + ] + }, + { + "teal": 5726, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5424 + ] + }, + { + "teal": 5727, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5425, + 5426 + ] + }, + { + "teal": 5728, + "source": "contracts/validatorRegistry.algo.ts:1281", + "pc": [ + 5427, + 5428, + 5429 + ] + }, + { + "teal": 5733, + "source": "contracts/validatorRegistry.algo.ts:1287", + "pc": [ + 5430, + 5431 + ] + }, + { + "teal": 5736, + "source": "contracts/validatorRegistry.algo.ts:1287", + "errorMessage": "specified asset must be identical to the asset id defined as a requirement to stake", + "pc": [ + 5432 + ] + }, + { + "teal": 5742, + "source": "contracts/validatorRegistry.algo.ts:1289", + "pc": [ + 5433, + 5434 + ] + }, + { + "teal": 5743, + "source": "contracts/validatorRegistry.algo.ts:1289", + "pc": [ + 5435, + 5436 + ] + }, + { + "teal": 5744, + "source": "contracts/validatorRegistry.algo.ts:1289", + "pc": [ + 5437 + ] + }, + { + "teal": 5745, + "source": "contracts/validatorRegistry.algo.ts:1289", + "pc": [ + 5438, + 5439, + 5440 + ] + }, + { + "teal": 5753, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5441, + 5442 + ] + }, + { + "teal": 5754, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5443, + 5444 + ] + }, + { + "teal": 5755, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5445 + ] + }, + { + "teal": 5756, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5446, + 5447 + ] + }, + { + "teal": 5757, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5448, + 5449, + 5450 + ] + }, + { + "teal": 5758, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5451 + ] + }, + { + "teal": 5759, + "source": "contracts/validatorRegistry.algo.ts:1293", + "pc": [ + 5452, + 5453, + 5454 + ] + }, + { + "teal": 5762, + "source": "contracts/validatorRegistry.algo.ts:1292", + "errorMessage": "specified asset must be created by creator that is one of the linked addresses in an nfd", + "pc": [ + 5455 + ] + }, + { + "teal": 5768, + "source": "contracts/validatorRegistry.algo.ts:1297", + "pc": [ + 5456, + 5457 + ] + }, + { + "teal": 5769, + "source": "contracts/validatorRegistry.algo.ts:1297", + "pc": [ + 5458, + 5459 + ] + }, + { + "teal": 5770, + "source": "contracts/validatorRegistry.algo.ts:1297", + "pc": [ + 5460 + ] + }, + { + "teal": 5771, + "source": "contracts/validatorRegistry.algo.ts:1297", + "pc": [ + 5461, + 5462, + 5463 + ] + }, + { + "teal": 5776, + "source": "contracts/validatorRegistry.algo.ts:1299", + "pc": [ + 5464, + 5465 + ] + }, + { + "teal": 5777, + "source": "contracts/validatorRegistry.algo.ts:1299", + "pc": [ + 5466, + 5467 + ] + }, + { + "teal": 5781, + "source": "contracts/validatorRegistry.algo.ts:1300", + "pc": [ + 5468, + 5469 + ] + }, + { + "teal": 5782, + "source": "contracts/validatorRegistry.algo.ts:1300", + "pc": [ + 5470, + 5471, + 5472 + ] + }, + { + "teal": 5785, + "source": "contracts/validatorRegistry.algo.ts:1300", + "errorMessage": "provided NFD must be valid", + "pc": [ + 5473 + ] + }, + { + "teal": 5793, + "source": "contracts/validatorRegistry.algo.ts:1304", + "pc": [ + 5474, + 5475 + ] + }, + { + "teal": 5794, + "source": "contracts/validatorRegistry.algo.ts:1304", + "pc": [ + 5476, + 5477 + ] + }, + { + "teal": 5795, + "source": "contracts/validatorRegistry.algo.ts:1304", + "pc": [ + 5478 + ] + }, + { + "teal": 5798, + "source": "contracts/validatorRegistry.algo.ts:1304", + "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')", + "pc": [ + 5479 + ] + }, + { + "teal": 5799, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5480, + 5481 + ] + }, + { + "teal": 5800, + "source": "contracts/validatorRegistry.algo.ts:1304", + "pc": [ + 5482 + ] + }, + { + "teal": 5801, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5483 + ] + }, + { + "teal": 5802, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5484, + 5485, + 5486 + ] + }, + { + "teal": 5803, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5487, + 5488 + ] + }, + { + "teal": 5804, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5489, + 5490 + ] + }, + { + "teal": 5805, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5491, + 5492, + 5493 + ] + }, + { + "teal": 5806, + "source": "contracts/validatorRegistry.algo.ts:1305", + "pc": [ + 5494 + ] + }, + { + "teal": 5810, + "source": "contracts/validatorRegistry.algo.ts:1303", + "errorMessage": "provided nfd for entry isn't owned or linked to the staker", + "pc": [ + 5495 + ] + }, + { + "teal": 5818, + "source": "contracts/validatorRegistry.algo.ts:1311", + "pc": [ + 5496, + 5497 + ] + }, + { + "teal": 5819, + "source": "contracts/validatorRegistry.algo.ts:1311", + "pc": [ + 5498, + 5499, + 5500, + 5501, + 5502, + 5503, + 5504, + 5505, + 5506, + 5507, + 5508, + 5509, + 5510, + 5511, + 5512 + ] + }, + { + "teal": 5820, + "source": "contracts/validatorRegistry.algo.ts:1311", + "pc": [ + 5513 + ] + }, + { + "teal": 5823, + "source": "contracts/validatorRegistry.algo.ts:1311", + "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')", + "pc": [ + 5514 + ] + }, + { + "teal": 5824, + "source": "contracts/validatorRegistry.algo.ts:1311", + "pc": [ + 5515 + ] + }, + { + "teal": 5825, + "source": "contracts/validatorRegistry.algo.ts:1312", + "pc": [ + 5516, + 5517 + ] + }, + { + "teal": 5826, + "source": "contracts/validatorRegistry.algo.ts:1312", + "pc": [ + 5518, + 5519, + 5520 + ] + }, + { + "teal": 5827, + "source": "contracts/validatorRegistry.algo.ts:1312", + "pc": [ + 5521 + ] + }, + { + "teal": 5828, + "source": "contracts/validatorRegistry.algo.ts:1311", + "pc": [ + 5522 + ] + }, + { + "teal": 5831, + "source": "contracts/validatorRegistry.algo.ts:1310", + "errorMessage": "specified nfd must be a segment of the nfd the validator specified as a requirement", + "pc": [ + 5523 + ] + }, + { + "teal": 5834, + "source": "contracts/validatorRegistry.algo.ts:1249", + "pc": [ + 5524 + ] + }, + { + "teal": 5846, + "source": "contracts/validatorRegistry.algo.ts:1327", + "pc": [ + 5525, + 5526, + 5527 + ] + }, + { + "teal": 5849, + "source": "contracts/validatorRegistry.algo.ts:1327", + "pc": [ + 5528 + ] + }, + { + "teal": 5853, + "source": "contracts/validatorRegistry.algo.ts:1329", + "pc": [ + 5529, + 5530 + ] + }, + { + "teal": 5854, + "source": "contracts/validatorRegistry.algo.ts:1329", + "pc": [ + 5531, + 5532, + 5533, + 5534, + 5535, + 5536, + 5537, + 5538 + ] + }, + { + "teal": 5855, + "source": "contracts/validatorRegistry.algo.ts:1329", + "pc": [ + 5539 + ] + }, + { + "teal": 5858, + "source": "contracts/validatorRegistry.algo.ts:1329", + "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')", + "pc": [ + 5540 + ] + }, + { + "teal": 5859, + "source": "contracts/validatorRegistry.algo.ts:1329", + "pc": [ + 5541, + 5542 + ] + }, + { + "teal": 5867, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5543 + ] + }, + { + "teal": 5868, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5544, + 5545 + ] + }, + { + "teal": 5869, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5546, + 5547 + ] + }, + { + "teal": 5870, + "source": "contracts/validatorRegistry.algo.ts:1333", + "pc": [ + 5548, + 5549, + 5550, + 5551, + 5552, + 5553 + ] + }, + { + "teal": 5871, + "source": "contracts/validatorRegistry.algo.ts:1333", + "pc": [ + 5554, + 5555 + ] + }, + { + "teal": 5875, + "source": "contracts/validatorRegistry.algo.ts:1332", + "pc": [ + 5556, + 5557 + ] + }, + { + "teal": 5876, + "source": "contracts/validatorRegistry.algo.ts:1332", + "pc": [ + 5558, + 5559 + ] + }, + { + "teal": 5880, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5560, + 5561 + ] + }, + { + "teal": 5881, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5562 + ] + }, + { + "teal": 5882, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5563 + ] + }, + { + "teal": 5883, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5564 + ] + }, + { + "teal": 5884, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5565, + 5566, + 5567 + ] + }, + { + "teal": 5885, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5568 + ] + }, + { + "teal": 5886, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5569 + ] + }, + { + "teal": 5887, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5570, + 5571 + ] + }, + { + "teal": 5888, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5572, + 5573 + ] + }, + { + "teal": 5889, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5574 + ] + }, + { + "teal": 5890, + "source": "contracts/validatorRegistry.algo.ts:1334", + "pc": [ + 5575, + 5576 + ] + }, + { + "teal": 5893, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5577 + ] + }, + { + "teal": 5894, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5578, + 5579 + ] + }, + { + "teal": 5897, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5580 + ] + }, + { + "teal": 5898, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5581, + 5582 + ] + }, + { + "teal": 5899, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5583 + ] + }, + { + "teal": 5900, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5584 + ] + }, + { + "teal": 5901, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5585, + 5586 + ] + }, + { + "teal": 5902, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5587, + 5588, + 5589 + ] + }, + { + "teal": 5903, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5590 + ] + }, + { + "teal": 5904, + "source": "contracts/validatorRegistry.algo.ts:1331", + "pc": [ + 5591 + ] + }, + { + "teal": 5907, + "source": "contracts/validatorRegistry.algo.ts:1327", + "pc": [ + 5592, + 5593 + ] + }, + { + "teal": 5908, + "source": "contracts/validatorRegistry.algo.ts:1327", + "pc": [ + 5594 + ] + }, + { + "teal": 5919, + "source": "contracts/validatorRegistry.algo.ts:1346", + "pc": [ + 5595, + 5596, + 5597 + ] + }, + { + "teal": 5922, + "source": "contracts/validatorRegistry.algo.ts:1346", + "pc": [ + 5598 + ] + }, + { + "teal": 5923, + "source": "contracts/validatorRegistry.algo.ts:1346", + "pc": [ + 5599, + 5600 + ] + }, + { + "teal": 5930, + "source": "contracts/validatorRegistry.algo.ts:1347", + "pc": [ + 5601 + ] + }, + { + "teal": 5931, + "source": "contracts/validatorRegistry.algo.ts:1347", + "pc": [ + 5602, + 5603 + ] + }, + { + "teal": 5932, + "source": "contracts/validatorRegistry.algo.ts:1347", + "pc": [ + 5604, + 5605 + ] + }, + { + "teal": 5936, + "source": "contracts/validatorRegistry.algo.ts:1348", + "pc": [ + 5606, + 5607 + ] + }, + { + "teal": 5937, + "source": "contracts/validatorRegistry.algo.ts:1348", + "pc": [ + 5608, + 5609 + ] + }, + { + "teal": 5941, + "source": "contracts/validatorRegistry.algo.ts:1349", + "pc": [ + 5610, + 5611, + 5612, + 5613, + 5614, + 5615, + 5616, + 5617, + 5618, + 5619, + 5620, + 5621, + 5622, + 5623, + 5624 + ] + }, + { + "teal": 5942, + "source": "contracts/validatorRegistry.algo.ts:1349", + "pc": [ + 5625, + 5626 + ] + }, + { + "teal": 5943, + "source": "contracts/validatorRegistry.algo.ts:1349", + "pc": [ + 5627, + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635, + 5636, + 5637, + 5638, + 5639, + 5640, + 5641 + ] + }, + { + "teal": 5944, + "source": "contracts/validatorRegistry.algo.ts:1349", + "pc": [ + 5642, + 5643 + ] + }, + { + "teal": 5947, + "source": "contracts/validatorRegistry.algo.ts:1347", + "pc": [ + 5644 + ] + }, + { + "teal": 5948, + "source": "contracts/validatorRegistry.algo.ts:1347", + "pc": [ + 5645, + 5646 + ] + }, + { + "teal": 5951, + "source": "contracts/validatorRegistry.algo.ts:1347", + "pc": [ + 5647 + ] + }, + { + "teal": 5955, + "source": "contracts/validatorRegistry.algo.ts:1351", + "pc": [ + 5648, + 5649 + ] + }, + { + "teal": 5956, + "source": "contracts/validatorRegistry.algo.ts:1351", + "pc": [ + 5650, + 5651 + ] + }, + { + "teal": 5960, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5652 + ] + }, + { + "teal": 5961, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5653, + 5654 + ] + }, + { + "teal": 5966, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5655, + 5656 + ] + }, + { + "teal": 5967, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5657, + 5658 + ] + }, + { + "teal": 5968, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5659 + ] + }, + { + "teal": 5969, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5660 + ] + }, + { + "teal": 5970, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5661, + 5662, + 5663 + ] + }, + { + "teal": 5974, + "source": "contracts/validatorRegistry.algo.ts:1353", + "pc": [ + 5664, + 5665 + ] + }, + { + "teal": 5975, + "source": "contracts/validatorRegistry.algo.ts:1353", + "pc": [ + 5666, + 5667 + ] + }, + { + "teal": 5976, + "source": "contracts/validatorRegistry.algo.ts:1353", + "pc": [ + 5668, + 5669 + ] + }, + { + "teal": 5977, + "source": "contracts/validatorRegistry.algo.ts:1353", + "pc": [ + 5670 + ] + }, + { + "teal": 5978, + "source": "contracts/validatorRegistry.algo.ts:1353", + "pc": [ + 5671, + 5672 + ] + }, + { + "teal": 5983, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5673, + 5674 + ] + }, + { + "teal": 5984, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5675, + 5676 + ] + }, + { + "teal": 5985, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5677 + ] + }, + { + "teal": 5986, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5678 + ] + }, + { + "teal": 5987, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5679, + 5680, + 5681 + ] + }, + { + "teal": 5988, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5682, + 5683 + ] + }, + { + "teal": 5989, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5684, + 5685 + ] + }, + { + "teal": 5990, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5686 + ] + }, + { + "teal": 5991, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5687 + ] + }, + { + "teal": 5994, + "source": "contracts/validatorRegistry.algo.ts:1354", + "pc": [ + 5688, + 5689, + 5690 + ] + }, + { + "teal": 5999, + "source": "contracts/validatorRegistry.algo.ts:1355", + "pc": [ + 5691 + ] + }, + { + "teal": 6000, + "source": "contracts/validatorRegistry.algo.ts:1355", + "pc": [ + 5692, + 5693, + 5694 + ] + }, + { + "teal": 6007, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5695, + 5696 + ] + }, + { + "teal": 6008, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5697, + 5698 + ] + }, + { + "teal": 6009, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5699 + ] + }, + { + "teal": 6010, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5700, + 5701 + ] + }, + { + "teal": 6011, + "source": "contracts/validatorRegistry.algo.ts:1352", + "pc": [ + 5702, + 5703, + 5704 + ] + }, + { + "teal": 6016, + "source": "contracts/validatorRegistry.algo.ts:1358", + "pc": [ + 5705 + ] + }, + { + "teal": 6020, + "source": "contracts/validatorRegistry.algo.ts:1346", + "pc": [ + 5706, + 5707 + ] + }, + { + "teal": 6023, + "source": "contracts/validatorRegistry.algo.ts:1346", + "pc": [ + 5708, + 5709 + ] + }, + { + "teal": 6024, + "source": "contracts/validatorRegistry.algo.ts:1346", + "pc": [ + 5710 + ] + }, + { + "teal": 6032, + "source": "contracts/validatorRegistry.algo.ts:1366", + "pc": [ + 5711, + 5712, + 5713 + ] + }, + { + "teal": 6035, + "source": "contracts/validatorRegistry.algo.ts:1366", + "pc": [ + 5714 + ] + }, + { + "teal": 6039, + "source": "contracts/validatorRegistry.algo.ts:1367", + "pc": [ + 5715, + 5716, + 5717 + ] + }, + { + "teal": 6040, + "source": "contracts/validatorRegistry.algo.ts:1367", + "pc": [ + 5718, + 5719 + ] + }, + { + "teal": 6044, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5720, + 5721 + ] + }, + { + "teal": 6045, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5722, + 5723 + ] + }, + { + "teal": 6046, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5724 + ] + }, + { + "teal": 6047, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5725 + ] + }, + { + "teal": 6048, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5726, + 5727 + ] + }, + { + "teal": 6049, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5728 + ] + }, + { + "teal": 6050, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5729 + ] + }, + { + "teal": 6051, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5730 + ] + }, + { + "teal": 6052, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5731 + ] + }, + { + "teal": 6053, + "source": "contracts/validatorRegistry.algo.ts:1369", + "pc": [ + 5732 + ] + }, + { + "teal": 6056, + "source": "contracts/validatorRegistry.algo.ts:1369", + "errorMessage": "wideRatio failed", + "pc": [ + 5733 + ] + }, + { + "teal": 6059, + "source": "contracts/validatorRegistry.algo.ts:1366", + "pc": [ + 5734, + 5735 + ] + }, + { + "teal": 6060, + "source": "contracts/validatorRegistry.algo.ts:1366", + "pc": [ + 5736 + ] + }, + { + "teal": 6067, + "source": "contracts/validatorRegistry.algo.ts:1376", + "pc": [ + 5737, + 5738, + 5739 + ] + }, + { + "teal": 6070, + "source": "contracts/validatorRegistry.algo.ts:1376", + "pc": [ + 5740 + ] + }, + { + "teal": 6074, + "source": "contracts/validatorRegistry.algo.ts:1377", + "pc": [ + 5741, + 5742, + 5743 + ] + }, + { + "teal": 6075, + "source": "contracts/validatorRegistry.algo.ts:1377", + "pc": [ + 5744, + 5745 + ] + }, + { + "teal": 6079, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5746, + 5747 + ] + }, + { + "teal": 6080, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5748, + 5749, + 5750 + ] + }, + { + "teal": 6081, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5751 + ] + }, + { + "teal": 6082, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5752 + ] + }, + { + "teal": 6083, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5753, + 5754 + ] + }, + { + "teal": 6084, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5755 + ] + }, + { + "teal": 6085, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5756 + ] + }, + { + "teal": 6086, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5757 + ] + }, + { + "teal": 6087, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5758 + ] + }, + { + "teal": 6088, + "source": "contracts/validatorRegistry.algo.ts:1379", + "pc": [ + 5759 + ] + }, + { + "teal": 6091, + "source": "contracts/validatorRegistry.algo.ts:1379", + "errorMessage": "wideRatio failed", + "pc": [ + 5760 + ] + }, + { + "teal": 6094, + "source": "contracts/validatorRegistry.algo.ts:1376", + "pc": [ + 5761, + 5762 + ] + }, + { + "teal": 6095, + "source": "contracts/validatorRegistry.algo.ts:1376", + "pc": [ + 5763 + ] + }, + { + "teal": 6101, + "source": "contracts/validatorRegistry.algo.ts:1385", + "pc": [ + 5764, + 5765, + 5766 + ] + }, + { + "teal": 6105, + "source": "contracts/validatorRegistry.algo.ts:1386", + "pc": [ + 5767, + 5768 + ] + }, + { + "teal": 6106, + "source": "contracts/validatorRegistry.algo.ts:1385", + "pc": [ + 5769 + ] + }, + { + "teal": 6110, + "source": "contracts/validatorRegistry.algo.ts:1389", + "pc": [ + 5770, + 5771, + 5772 + ] + }, + { + "teal": 6114, + "source": "contracts/validatorRegistry.algo.ts:1390", + "pc": [ + 5773 + ] + }, + { + "teal": 6115, + "source": "contracts/validatorRegistry.algo.ts:1389", + "pc": [ + 5774 + ] + }, + { + "teal": 6119, + "source": "contracts/validatorRegistry.algo.ts:1393", + "pc": [ + 5775, + 5776, + 5777 + ] + }, + { + "teal": 6122, + "source": "contracts/validatorRegistry.algo.ts:1393", + "pc": [ + 5778 + ] + }, + { + "teal": 6126, + "source": "contracts/validatorRegistry.algo.ts:1402", + "pc": [ + 5779, + 5780 + ] + }, + { + "teal": 6127, + "source": "contracts/validatorRegistry.algo.ts:1402", + "pc": [ + 5781, + 5782 + ] + }, + { + "teal": 6131, + "source": "contracts/validatorRegistry.algo.ts:1403", + "pc": [ + 5783, + 5784 + ] + }, + { + "teal": 6132, + "source": "contracts/validatorRegistry.algo.ts:1403", + "pc": [ + 5785, + 5786 + ] + }, + { + "teal": 6133, + "source": "contracts/validatorRegistry.algo.ts:1403", + "pc": [ + 5787, + 5788 + ] + }, + { + "teal": 6134, + "source": "contracts/validatorRegistry.algo.ts:1403", + "pc": [ + 5789 + ] + }, + { + "teal": 6135, + "source": "contracts/validatorRegistry.algo.ts:1403", + "pc": [ + 5790 + ] + }, + { + "teal": 6136, + "source": "contracts/validatorRegistry.algo.ts:1403", + "pc": [ + 5791, + 5792 + ] + }, + { + "teal": 6140, + "source": "contracts/validatorRegistry.algo.ts:1404", + "pc": [ + 5793, + 5794 + ] + }, + { + "teal": 6141, + "source": "contracts/validatorRegistry.algo.ts:1404", + "pc": [ + 5795, + 5796 + ] + }, + { + "teal": 6142, + "source": "contracts/validatorRegistry.algo.ts:1404", + "pc": [ + 5797, + 5798 + ] + }, + { + "teal": 6143, + "source": "contracts/validatorRegistry.algo.ts:1404", + "pc": [ + 5799 + ] + }, + { + "teal": 6144, + "source": "contracts/validatorRegistry.algo.ts:1404", + "pc": [ + 5800 + ] + }, + { + "teal": 6145, + "source": "contracts/validatorRegistry.algo.ts:1404", + "pc": [ + 5801, + 5802 + ] + }, + { + "teal": 6149, + "source": "contracts/validatorRegistry.algo.ts:1405", + "pc": [ + 5803, + 5804 + ] + }, + { + "teal": 6150, + "source": "contracts/validatorRegistry.algo.ts:1405", + "pc": [ + 5805, + 5806 + ] + }, + { + "teal": 6151, + "source": "contracts/validatorRegistry.algo.ts:1405", + "pc": [ + 5807, + 5808 + ] + }, + { + "teal": 6152, + "source": "contracts/validatorRegistry.algo.ts:1405", + "pc": [ + 5809 + ] + }, + { + "teal": 6153, + "source": "contracts/validatorRegistry.algo.ts:1405", + "pc": [ + 5810 + ] + }, + { + "teal": 6154, + "source": "contracts/validatorRegistry.algo.ts:1405", + "pc": [ + 5811, + 5812 + ] + }, + { + "teal": 6158, + "source": "contracts/validatorRegistry.algo.ts:1406", + "pc": [ + 5813, + 5814 + ] + }, + { + "teal": 6159, + "source": "contracts/validatorRegistry.algo.ts:1406", + "pc": [ + 5815, + 5816 + ] + }, + { + "teal": 6160, + "source": "contracts/validatorRegistry.algo.ts:1406", + "pc": [ + 5817, + 5818 + ] + }, + { + "teal": 6161, + "source": "contracts/validatorRegistry.algo.ts:1406", + "pc": [ + 5819 + ] + }, + { + "teal": 6162, + "source": "contracts/validatorRegistry.algo.ts:1406", + "pc": [ + 5820 + ] + }, + { + "teal": 6163, + "source": "contracts/validatorRegistry.algo.ts:1406", + "pc": [ + 5821, + 5822 + ] + }, + { + "teal": 6167, + "source": "contracts/validatorRegistry.algo.ts:1407", + "pc": [ + 5823, + 5824 + ] + }, + { + "teal": 6168, + "source": "contracts/validatorRegistry.algo.ts:1407", + "pc": [ + 5825, + 5826 + ] + }, + { + "teal": 6169, + "source": "contracts/validatorRegistry.algo.ts:1407", + "pc": [ + 5827, + 5828 + ] + }, + { + "teal": 6170, + "source": "contracts/validatorRegistry.algo.ts:1407", + "pc": [ + 5829 + ] + }, + { + "teal": 6171, + "source": "contracts/validatorRegistry.algo.ts:1407", + "pc": [ + 5830 + ] + }, + { + "teal": 6172, + "source": "contracts/validatorRegistry.algo.ts:1407", + "pc": [ + 5831, + 5832 + ] + }, + { + "teal": 6176, + "source": "contracts/validatorRegistry.algo.ts:1408", + "pc": [ + 5833, + 5834 + ] + }, + { + "teal": 6177, + "source": "contracts/validatorRegistry.algo.ts:1408", + "pc": [ + 5835, + 5836 + ] + }, + { + "teal": 6178, + "source": "contracts/validatorRegistry.algo.ts:1408", + "pc": [ + 5837, + 5838 + ] + }, + { + "teal": 6179, + "source": "contracts/validatorRegistry.algo.ts:1408", + "pc": [ + 5839 + ] + }, + { + "teal": 6180, + "source": "contracts/validatorRegistry.algo.ts:1408", + "pc": [ + 5840 + ] + }, + { + "teal": 6181, + "source": "contracts/validatorRegistry.algo.ts:1408", + "pc": [ + 5841, + 5842 + ] + }, + { + "teal": 6185, + "source": "contracts/validatorRegistry.algo.ts:1409", + "pc": [ + 5843, + 5844 + ] + }, + { + "teal": 6186, + "source": "contracts/validatorRegistry.algo.ts:1409", + "pc": [ + 5845, + 5846 + ] + }, + { + "teal": 6187, + "source": "contracts/validatorRegistry.algo.ts:1409", + "pc": [ + 5847, + 5848 + ] + }, + { + "teal": 6188, + "source": "contracts/validatorRegistry.algo.ts:1409", + "pc": [ + 5849 + ] + }, + { + "teal": 6189, + "source": "contracts/validatorRegistry.algo.ts:1409", + "pc": [ + 5850 + ] + }, + { + "teal": 6190, + "source": "contracts/validatorRegistry.algo.ts:1409", + "pc": [ + 5851, + 5852 + ] + }, + { + "teal": 6194, + "source": "contracts/validatorRegistry.algo.ts:1410", + "pc": [ + 5853, + 5854 + ] + }, + { + "teal": 6197, + "source": "contracts/validatorRegistry.algo.ts:1393", + "pc": [ + 5855, + 5856 + ] + }, + { + "teal": 6198, + "source": "contracts/validatorRegistry.algo.ts:1393", + "pc": [ + 5857 + ] + }, + { + "teal": 6202, + "source": "contracts/validatorRegistry.algo.ts:1413", + "pc": [ + 5858, + 5859, + 5860 + ] + }, + { + "teal": 6206, + "source": "contracts/validatorRegistry.algo.ts:1417", + "pc": [ + 5861, + 5862, + 5863 + ] + }, + { + "teal": 6207, + "source": "contracts/validatorRegistry.algo.ts:1417", + "pc": [ + 5864, + 5865 + ] + }, + { + "teal": 6208, + "source": "contracts/validatorRegistry.algo.ts:1417", + "pc": [ + 5866, + 5867, + 5868 + ] + }, + { + "teal": 6209, + "source": "contracts/validatorRegistry.algo.ts:1417", + "pc": [ + 5869 + ] + }, + { + "teal": 6210, + "source": "contracts/validatorRegistry.algo.ts:1417", + "pc": [ + 5870 + ] + }, + { + "teal": 6211, + "source": "contracts/validatorRegistry.algo.ts:1413", + "pc": [ + 5871 + ] + }, + { + "teal": 6214, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5872, + 5873, + 5874, + 5875, + 5876, + 5877 + ] + }, + { + "teal": 6215, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5878, + 5879, + 5880 + ] + }, + { + "teal": 6216, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5881, + 5882, + 5883, + 5884 + ] + }, + { + "teal": 6219, + "source": "contracts/validatorRegistry.algo.ts:50", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 5885 + ] + }, + { + "teal": 6222, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5886, + 5887, + 5888, + 5889, + 5890, + 5891 + ] + }, + { + "teal": 6223, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5892, + 5893, + 5894, + 5895, + 5896, + 5897 + ] + }, + { + "teal": 6224, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5898, + 5899, + 5900, + 5901, + 5902, + 5903 + ] + }, + { + "teal": 6225, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5904, + 5905, + 5906, + 5907, + 5908, + 5909 + ] + }, + { + "teal": 6226, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5910, + 5911, + 5912, + 5913, + 5914, + 5915 + ] + }, + { + "teal": 6227, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5916, + 5917, + 5918, + 5919, + 5920, + 5921 + ] + }, + { + "teal": 6228, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5922, + 5923, + 5924, + 5925, + 5926, + 5927 + ] + }, + { + "teal": 6229, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5928, + 5929, + 5930, + 5931, + 5932, + 5933 + ] + }, + { + "teal": 6230, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5934, + 5935, + 5936, + 5937, + 5938, + 5939 + ] + }, + { + "teal": 6231, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5940, + 5941, + 5942, + 5943, + 5944, + 5945 + ] + }, + { + "teal": 6232, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5946, + 5947, + 5948, + 5949, + 5950, + 5951 + ] + }, + { + "teal": 6233, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5952, + 5953, + 5954, + 5955, + 5956, + 5957 + ] + }, + { + "teal": 6234, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5958, + 5959, + 5960, + 5961, + 5962, + 5963 + ] + }, + { + "teal": 6235, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5964, + 5965, + 5966, + 5967, + 5968, + 5969 + ] + }, + { + "teal": 6236, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5970, + 5971, + 5972, + 5973, + 5974, + 5975 + ] + }, + { + "teal": 6237, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5976, + 5977, + 5978, + 5979, + 5980, + 5981 + ] + }, + { + "teal": 6238, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5982, + 5983, + 5984, + 5985, + 5986, + 5987 + ] + }, + { + "teal": 6239, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5988, + 5989, + 5990, + 5991, + 5992, + 5993 + ] + }, + { + "teal": 6240, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 5994, + 5995, + 5996, + 5997, + 5998, + 5999 + ] + }, + { + "teal": 6241, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6000, + 6001, + 6002, + 6003, + 6004, + 6005 + ] + }, + { + "teal": 6242, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6006, + 6007, + 6008, + 6009, + 6010, + 6011 + ] + }, + { + "teal": 6243, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6012, + 6013, + 6014, + 6015, + 6016, + 6017 + ] + }, + { + "teal": 6244, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6018, + 6019, + 6020, + 6021, + 6022, + 6023 + ] + }, + { + "teal": 6245, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6024, + 6025, + 6026, + 6027, + 6028, + 6029 + ] + }, + { + "teal": 6246, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6030, + 6031, + 6032, + 6033, + 6034, + 6035 + ] + }, + { + "teal": 6247, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6036, + 6037, + 6038, + 6039, + 6040, + 6041 + ] + }, + { + "teal": 6248, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6042, + 6043, + 6044, + 6045, + 6046, + 6047 + ] + }, + { + "teal": 6249, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6048, + 6049, + 6050, + 6051, + 6052, + 6053 + ] + }, + { + "teal": 6250, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6054, + 6055, + 6056, + 6057, + 6058, + 6059 + ] + }, + { + "teal": 6251, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6060, + 6061, + 6062, + 6063, + 6064, + 6065 + ] + }, + { + "teal": 6252, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6066, + 6067, + 6068, + 6069, + 6070, + 6071 + ] + }, + { + "teal": 6253, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6072, + 6073, + 6074, + 6075, + 6076, + 6077 + ] + }, + { + "teal": 6254, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6078, + 6079, + 6080, + 6081, + 6082, + 6083 + ] + }, + { + "teal": 6255, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6084, + 6085, + 6086 + ] + }, + { + "teal": 6256, + "source": "contracts/validatorRegistry.algo.ts:50", + "pc": [ + 6087, + 6088, + 6089, + 6090, + 6091, + 6092, + 6093, + 6094, + 6095, + 6096, + 6097, + 6098, + 6099, + 6100, + 6101, + 6102, + 6103, + 6104, + 6105, + 6106, + 6107, + 6108, + 6109, + 6110, + 6111, + 6112, + 6113, + 6114, + 6115, + 6116, + 6117, + 6118, + 6119, + 6120, + 6121, + 6122, + 6123, + 6124, + 6125, + 6126, + 6127, + 6128, + 6129, + 6130, + 6131, + 6132, + 6133, + 6134, + 6135, + 6136, + 6137, + 6138, + 6139, + 6140, + 6141, + 6142, + 6143, + 6144, + 6145, + 6146, + 6147, + 6148, + 6149, + 6150, + 6151, + 6152, + 6153, + 6154 + ] + }, + { + "teal": 6259, + "source": "contracts/validatorRegistry.algo.ts:50", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 6155 + ] + } + ], + "pcOffsetMethod": "cblocks" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50IDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKTogdm9pZApjcmVhdGVBcHBsaWNhdGlvbjoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyCgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZSAweDY5NmU2OTc0IC8vICJpbml0IgoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSAwCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlID0gMAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uY3JlYXRlKGFwcHJvdmFsUHJvZ3JhbVNpemUpCglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkCiphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGE6CgkvLyBkYXRhOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gb2Zmc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoJY2FsbHN1YiBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YQoJaW50IDEKCXJldHVybgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEob2Zmc2V0OiB1aW50NjQsIGRhdGE6IGJ5dGVzKTogdm9pZApsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YToKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGUgMHg2OTZlNjk3NCAvLyAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NQoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5yZXBsYWNlKG9mZnNldCwgZGF0YSkKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50IDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlIDB4Njk2ZTY5NzQgLy8gImluaXQiCglpbnQgMQoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50IDMKCWludCAxMQoJaW50IDAKCWR1cG4gMgoJaW50IDMKCWludCAxCgljYWxsc3ViIG1pbkJhbGFuY2VGb3JBY2NvdW50CglpdG9iCgljb25jYXQKCWludCAxMDAwMDAKCWludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglpbnQgMTc5CgljYWxsc3ViIGNvc3RGb3JCb3hTdG9yYWdlCglpdG9iCgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UHJvdG9jb2xDb25zdHJhaW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKTogQ29uc3RyYWludHMKLy8KLy8gUmV0dXJucyB0aGUgcHJvdG9jb2wgY29uc3RyYWludHMgc28gdGhhdCBVSXMgY2FuIGxpbWl0IHdoYXQgdXNlcnMgc3BlY2lmeSBmb3IgdmFsaWRhdG9yIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OQoJLy8gcmV0dXJuIHsKCS8vICAgICAgICAgICAgIGVwb2NoUGF5b3V0Um91bmRzTWluOiBNSU5fRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNYXg6IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBtaW5QY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1JTl9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWF4UGN0VG9WYWxpZGF0b3JXRm91ckRlY2ltYWxzOiBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICAgICAgIG1pbkVudHJ5U3Rha2U6IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLAoJLy8gICAgICAgICAgICAgbWF4QWxnb1BlclBvb2w6IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCksCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyVmFsaWRhdG9yOiB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgYW10Q29uc2lkZXJlZFNhdHVyYXRlZDogdGhpcy5hbGdvU2F0dXJhdGlvbkxldmVsKCksCgkvLyAgICAgICAgICAgICBtYXhOb2RlczogTUFYX05PREVTLAoJLy8gICAgICAgICAgICAgbWF4UG9vbHNQZXJOb2RlOiBNQVhfUE9PTFNfUEVSX05PREUsCgkvLyAgICAgICAgICAgICBtYXhTdGFrZXJzUGVyUG9vbDogTUFYX1NUQUtFUlNfUEVSX1BPT0wsCgkvLyAgICAgICAgIH0KCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGY0MjQwMDAwMDAwMDAwMDBmNDI0MAoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAzCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMGM4Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CiphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9yczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQKCWNhbGxzdWIgZ2V0TnVtVmFsaWRhdG9ycwoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE51bVZhbGlkYXRvcnMoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkYXRvcnMKZ2V0TnVtVmFsaWRhdG9yczoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE2OQoJLy8gcmV0dXJuIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZQoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglpbnQgMAoJaW50IDI0MgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludCAyNDIgLy8gaGVhZE9mZnNldAoJaW50IDI2CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50IDgKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJY29uY2F0CglyZXRzdWIKCi8vIGdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRQb29sczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoJY2FsbHN1YiBnZXRQb29scwoJZHVwCglsZW4KCWludCAxOAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sSW5mb1tdCi8vCi8vIFJldHVybiBsaXN0IG9mIGFsbCBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZAovLyBAcmV0dXJuIHtQb29sSW5mb1tdfSAtIGFycmF5IG9mIHBvb2xzCi8vIE5vdCBjYWxsYWJsZSBmcm9tIG90aGVyIGNvbnRyYWN0cyBiZWNhdXNlID4xSyByZXR1cm4gYnV0IGNhbiBiZSBjYWxsZWQgdy8gc2ltdWxhdGUgd2hpY2ggYnVtcHMgbG9nIHJldHVybnMKZ2V0UG9vbHM6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk5CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludCAyNjggLy8gaGVhZE9mZnNldAoJaW50IDQzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDEKCS8vIHBvb2xTZXRbaV0ucG9vbEFwcElkID09PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWYwX2VuZAoKCS8vICppZjBfY29uc2VxdWVudAoJYiAqZm9yXzBfZW5kCgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDE4CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA3CgkvLyByZXR1cm4gcmV0RGF0YQoJZnJhbWVfZGlnIDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZ2V0UG9vbEFwcElkOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBwb29sSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBnZXRQb29sQXBwSWQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBnZXRQb29sQXBwSWQodmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQpOiB1aW50NjQKLy8KLy8gZ2V0UG9vbEFwcElkIGlzIHVzZWZ1bCBmb3IgY2FsbGVycyB0byBkZXRlcm1pbmUgYXBwIHRvIGNhbGwgZm9yIHJlbW92aW5nIHN0YWtlIGlmIHRoZXkgZG9uJ3QgaGF2ZSBzdGFraW5nIG9yCi8vIHdhbnQgdG8gZ2V0IHN0YWtlciBsaXN0IGZvciBhbiBhY2NvdW50LiAgVGhlIHN0YWtpbmcgcG9vbCBhbHNvIHVzZXMgaXQgdG8gZ2V0IHRoZSBhcHAgaWQgb2Ygc3Rha2luZyBwb29sIDEKLy8gKHdoaWNoIGNvbnRhaW5zIHJld2FyZCB0b2tlbnMgaWYgYmVpbmcgdXNlZCkgc28gdGhhdCB0aGUgYW1vdW50IGF2YWlsYWJsZSBjYW4gYmUgZGV0ZXJtaW5lZC4KZ2V0UG9vbEFwcElkOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjE3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglieiAqc2tpcF9hbmQwCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAyNAoJPD0KCSYmCgoqc2tpcF9hbmQwOgoJLy8gcG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sSWQgLSAxXS5wb29sQXBwSWQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXJldHN1YgoKLy8gZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCiphYmlfcm91dGVfZ2V0UG9vbEluZm86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIGdldFBvb2xJbmZvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJY2FsbHN1YiBnZXRQb29sSW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xJbmZvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sSW5mbwpnZXRQb29sSW5mbzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIyNgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglpbnQgMjE3CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50IDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY3CgkvLyAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJYnogKmlmM19lbmQKCgkvLyAqaWYzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2OAoJLy8gcmV0dXJuIFtdCglieXRlIDB4CgliICpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuCgoqaWYzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MAoJLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzEKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKCWNhbGxzdWIgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModmFsaWRhdG9ySWQ6IHVpbnQ2NCk6IE5vZGVQb29sQXNzaWdubWVudENvbmZpZwpnZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJcHJvdG8gMSAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mjk0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoJY2FsbHN1YiBnZXRORkRSZWdpc3RyeUlECglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpOiB1aW50NjQKZ2V0TkZEUmVnaXN0cnlJRDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMwMQoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZAoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0CgljYWxsc3ViIGFkZFZhbGlkYXRvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFZhbGlkYXRvcihtYnJQYXltZW50OiBQYXlUeG4sIG5mZE5hbWU6IHN0cmluZywgY29uZmlnOiBWYWxpZGF0b3JDb25maWcpOiB1aW50NjQKLy8KLy8gQWRkcyBhIG5ldyB2YWxpZGF0b3IKLy8gUmVxdWlyZXMgYXQgbGVhc3QgMTAgQUxHTyBhcyB0aGUgJ2ZlZScgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBoZWxwIGRpc3N1YWRlIHNwYW1tZWQgdmFsaWRhdG9yIGFkZHMuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgdmFsaWRhdG9yIHN0b3JhZ2UKLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgKE9wdGlvbmFsKSBOYW1lIG9mIG5mZCAodXNlZCBhcyBkb3VibGUtY2hlY2sgYWdhaW5zdCBpZCBzcGVjaWZpZWQgaW4gY29uZmlnKQovLyBAcGFyYW0ge1ZhbGlkYXRvckNvbmZpZ30gY29uZmlnIFZhbGlkYXRvckNvbmZpZyBzdHJ1Y3QKLy8gQHJldHVybnMge3VpbnQ2NH0gdmFsaWRhdG9yIGlkCmFkZFZhbGlkYXRvcjoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzEzCgkvLyB0aGlzLnZhbGlkYXRlQ29uZmlnKGNvbmZpZykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJY2FsbHN1YiB2YWxpZGF0ZUNvbmZpZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNQoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNwoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCWludCAxMDAwMDAwMAoJPgoKCS8vIGZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gdmFsaWRhdG9ySWQgPSB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgKyAxCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuY3JlYXRlKCkKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaW50IDEwOTIKCWJveF9jcmVhdGUKCXBvcAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcgPSBjb25maWcKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmlkID0gdmFsaWRhdG9ySWQKCWludCAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGUgMHg2OTJlNmY3NzZlNjU3MjJlNjEgLy8gImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM4CgkvLyBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCWJ5dGUgMHhhOGRkMjFjYiAvLyByZXRpT1BfYWRkZWRWYWxpZGF0b3IodWludDY0LGFkZHJlc3MsYWRkcmVzcykKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXI6CgkvLyBtYW5hZ2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1hbmFnZXIpIGZvciBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcgoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBtYW5hZ2VyOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBWYWxpZGF0b3IgbWFuYWdlciBmb3IgYSBzcGVjaWZpYyBWYWxpZGF0b3IgaWQuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gY2hhbmdlIHRoZSBtYW5hZ2VyIGZvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBtYW5hZ2VyIC0gVGhlIG5ldyBtYW5hZ2VyIGFkZHJlc3MuCmNoYW5nZVZhbGlkYXRvck1hbmFnZXI6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTkKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MAoJLy8gYXNzZXJ0KG1hbmFnZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MsICduZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzJykKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gbmVlZHMgdG8gYXQgbGVhc3QgYmUgdmFsaWQgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyID0gbWFuYWdlcgoJaW50IDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCS8vIHN1bnNldHRpbmdUbzogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Vuc2V0dGluZ09uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbwoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdW5zZXR0aW5nT246IHVpbnQ2NCwgc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUpOiB2b2lkCi8vCi8vIFVwZGF0ZXMgdGhlIHN1bnNldCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiB2YWxpZGF0b3IuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ09uIC0gVGhlIG5ldyBzdW5zZXQgdGltZXN0YW1wLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ1RvIC0gVGhlIG5ldyBzdW5zZXQgdG8gdmFsaWRhdG9yIGlkLgpjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzczCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzQKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50IDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ1RvID0gc3Vuc2V0dGluZ1RvCglpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEOgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIG5mZEFwcElEOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JORkQKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBuZmRBcHBJRDogdWludDY0LCBuZmROYW1lOiBzdHJpbmcpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIE5GRCBmb3IgYSB2YWxpZGF0b3IgaW4gdGhlIHZhbGlkYXRvckxpc3QgY29udHJhY3QuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIE5GRCB0byBhc3NpZ24gdG8gdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgTkZEICh3aGljaCBtdXN0IG1hdGNoKQpjaGFuZ2VWYWxpZGF0b3JORkQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OQoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozOTEKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludCA3MgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDAzCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDQKCS8vIGFzc2VydChjb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglpbnQgMTc3CglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjAKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgRW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgRW50cnlHYXRpbmdUeXBlIDwgR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgICAgICAgJ2ludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPAoJJiYKCipza2lwX2FuZDE6CgkvLyBpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlCglhc3NlcnQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI2CgkvLyBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDEKCT09CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI3CgkvLyBhc3NlcnQoRW50cnlHYXRpbmdBZGRyZXNzICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoqaWY3X2VuZDoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzAKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICAgICAgICBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludCA4MAoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglpbnQgODEKCWZyYW1lX2RpZyAtMyAvLyBFbnRyeUdhdGluZ0FkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWZyYW1lX2RpZyAtNSAvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJaW50IDE2MQoJZnJhbWVfZGlnIC02IC8vIFJld2FyZFBlclBheW91dDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAobWJyUGF5bWVudCkgZm9yIGFkZFBvb2wgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkUG9vbAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFBvb2wobWJyUGF5bWVudDogUGF5VHhuLCB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBub2RlTnVtOiB1aW50NjQpOiBWYWxpZGF0b3JQb29sS2V5Ci8vCi8vIEFkZHMgYSBuZXcgcG9vbCB0byBhIHZhbGlkYXRvcidzIHBvb2wgc2V0LCByZXR1cm5pbmcgdGhlICdrZXknIHRvIHJlZmVyZW5jZSB0aGUgcG9vbCBpbiB0aGUgZnV0dXJlIGZvciBzdGFraW5nLCBldGMuCi8vIFRoZSBjYWxsZXIgbXVzdCBwYXkgdGhlIGNvc3Qgb2YgdGhlIHZhbGlkYXRvcnMgTUJSIGluY3JlYXNlIGFzIHdlbGwgYXMgdGhlIE1CUiB0aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgcG9vbCBpdHNlbGYuCi8vCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBjYWxsIF0KLy8gQHBhcmFtIHtQYXlUeG59IG1iclBheW1lbnQgcGF5bWVudCBmcm9tIGNhbGxlciB3aGljaCBjb3ZlcnMgbWJyIGluY3JlYXNlIG9mIGFkZGluZyBhIG5ldyBwb29sCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCBpcyBpZCBvZiB2YWxpZGF0b3IgdG8gcG9vbCB0byAobXVzdCBiZSBvd25lciBvciBtYW5hZ2VyKQovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bSBpcyBub2RlIG51bWJlciB0byBhZGQgdG8KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2wga2V5IHRvIGNyZWF0ZWQgcG9vbAphZGRQb29sOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NAoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU3CgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiB0aGlzLmdldE1ickFtb3VudHMoKS5hZGRQb29sTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTkKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY5CgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnQgMCAvLyBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCAwCglpbnQgNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCA0MDk2CglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfbGVuCgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUKCWFzc2VydAoJaW50IDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCWJ5dGUgYjY0IEN3PT0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzUKCS8vIGdsb2JhbE51bVVpbnQ6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtVWludAoJaW50IDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzYKCS8vIGdsb2JhbE51bUJ5dGVTbGljZTogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UKCWludCAzCglpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NwoJLy8gZXh0cmFQcm9ncmFtUGFnZXM6IDMKCWludCAzCglpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc4CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyBjcmVhdGluZ0NvbnRyYWN0SUQsIHZhbGlkYXRvcklkLCBwb29sSWQsIG1pbkVudHJ5U3Rha2UKCS8vICAgICAgICAgICAgICAgICBtZXRob2QoJ2NyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkJyksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih2YWxpZGF0b3JJZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYihudW1Qb29scyBhcyB1aW50NjQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICAgICAgICBdCgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnQgMjA5CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyA9IG51bVBvb2xzIGFzIHVpbnQxNgoJaW50IDI0MgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDkxCgkvLyBwb29sQXBwSWQgPSB0aGlzLml0eG4uY3JlYXRlZEFwcGxpY2F0aW9uSUQuaWQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWZyYW1lX2J1cnkgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tudW1Qb29scyAtIDFdLnBvb2xBcHBJZCA9IHBvb2xBcHBJZAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCWJ5dGUgMHhmYmNjMGY2YiAvLyByZXRpT1BfdmFsaWRhdG9yQWRkZWRQb29sKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnQgMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA1CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglpbnQgMTQ0Cglib3hfY3JlYXRlCglwb3AKCippZjExX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKyByZWFsQW1vdW50IDwgdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSwKCS8vICAgICAgICAgICAgICd0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAnLAoJLy8gICAgICAgICApCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJKwoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OAoJLy8gZmluZFJldCA9IHRoaXMuZmluZFBvb2xGb3JTdGFrZXIodmFsaWRhdG9ySWQsIHN0YWtlciwgcmVhbEFtb3VudCkKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJZnJhbWVfYnVyeSAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NTkKCS8vIHBvb2xLZXkgPSBmaW5kUmV0WzBdCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYyCgkvLyBwb29sS2V5LnBvb2xJZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEyX2VuZAoKCS8vICppZjEyX2NvbnNlcXVlbnQKCS8vIE5vIHBvb2wgYXZhaWxhYmxlIHdpdGggZnJlZSBzdGFrZS4gIFZhbGlkYXRvciBuZWVkcyB0byBhZGQgYW5vdGhlciBwb29sCgllcnIKCippZjEyX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2NwoJLy8gdGhpcy51cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlciwgcG9vbEtleSkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY2FsbHN1YiB1cGRhdGVTdGFrZXJQb29sU2V0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTcwCgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgICAgICAgcG9vbEtleSwKCS8vICAgICAgICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCWZyYW1lX2RpZyA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJY2FsbHN1YiBjYWxsUG9vbEFkZFN0YWtlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTc3CgkvLyB0aGlzLnJldGlPUF9zdGFrZUFkZGVkLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogdmFsaWRhdG9ySWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYW1vdW50U3Rha2VkOiByZWFsQW1vdW50LAoJLy8gICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgIH0pCglieXRlIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglpdG9iCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTg1CgkvLyByZXR1cm4gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gOAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNQoJLy8gcG9vbDFBcHBJRCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkCglpbnQgMjY4CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTUKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNgoJLy8gbGFzdFBheW91dFVwZGF0ZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby51cGRhdGVkRm9yUGF5b3V0CglpbnQgODkyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCgkvLyAqaWYxNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNwoJLy8gbGFzdFBheW91dFVwZGF0ZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglpbnQgMAoJIT0KCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vICppZjE1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE5CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjIKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJaW50IDE2OQoJaW50IDQKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNQoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTZfZW5kCgoJLy8gKmlmMTZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI2CgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvCglpbnQgNzAwIC8vIGhlYWRPZmZzZXQKCWludCAyMDAKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnQgODkyCglmcmFtZV9kaWcgMSAvLyBjdXJSb3VuZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50IDI0MgoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnQgMV8wMDBfMDAwCgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVtpXSA9IG91clBvb2xQY3RPZldob2xlCglpbnQgNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50IDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAxMCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayArPSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkCglpbnQgMjYwCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NQoJLy8gdGhpcy5yZXZlcmlmeU5GRE93bmVyc2hpcChwb29sS2V5LmlkKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgljYWxsc3ViIHJldmVyaWZ5TkZET3duZXJzaGlwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc3CgkvLyB0aGlzLnJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZS5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYWxnb0FkZGVkOiBhbGdvVG9BZGQsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkhlbGRCYWNrOiByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkLAoJLy8gICAgICAgICAgICAgc2F0dXJhdGVkQnVyblRvRmVlU2luazogc2F0dXJhdGVkQnVyblRvRmVlU2luaywKCS8vICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb246IHZhbGlkYXRvckNvbW1pc3Npb24sCgkvLyAgICAgICAgIH0pCglieXRlIDB4YjNlNDdjM2QgLy8gcmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlKHVpbnQ2NCx1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNSAvLyBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZDoKCS8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXJSZW1vdmVkKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBib29sCglhc3NlcnQKCWludCAwCglnZXRiaXQKCgkvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMyAoc3Rha2VyKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoJY2FsbHN1YiBzdGFrZVJlbW92ZWQKCWludCAxCglyZXR1cm4KCi8vIHN0YWtlUmVtb3ZlZChwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NCwgcmV3YXJkUmVtb3ZlZDogdWludDY0LCBzdGFrZXJSZW1vdmVkOiBib29sZWFuKTogdm9pZAovLwovLyBzdGFrZVJlbW92ZWQgaXMgY2FsbGVkIGJ5IFN0YWtpbmcgcG9vbHMgdG8gaW5mb3JtIHRoZSB2YWxpZGF0b3IgKHVzKSB0aGF0IGEgcGFydGljdWxhciBhbW91bnQgb2YgdG90YWwgc3Rha2UgaGFzIGJlZW4gcmVtb3ZlZAovLyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIElmIGFueSBhbW91bnQgb2YgcmV3YXJkUmVtb3ZlZCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhhdCBhbW91bnQgb2YgcmV3YXJkIGlzIHNlbnQgdG8gdGhlIHVzZQovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgY2FsbGluZyB1cyBmcm9tIHdoaWNoIHN0YWtlIHdhcyByZW1vdmVkCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRSZW1vdmVkIC0gYWxnbyBhbW91bnQgcmVtb3ZlZAovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkUmVtb3ZlZCAtIGlmIGFwcGxpY2FibGUsIGFtb3VudCBvZiB0b2tlbiByZXdhcmQgcmVtb3ZlZCAoYnkgcG9vbCAxIGNhbGxlcikgb3IgVE8gcmVtb3ZlIGFuZCBwYXkgb3V0ICh2aWEgcG9vbCAxIGZyb20gZGlmZmVyZW50IHBvb2wgY2FsbGVyKQovLyBAcGFyYW0ge2Jvb2xlYW59IHN0YWtlclJlbW92ZWQKc3Rha2VSZW1vdmVkOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vICppZjE3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA3CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxN19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTAKCS8vIHRoaXMudmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWNhbGxzdWIgdmVyaWZ5UG9vbEtleUNhbGxlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxNAoJLy8gYXNzZXJ0KGFtb3VudFJlbW92ZWQgPiAwIHx8IHJld2FyZFJlbW92ZWQgPiAwLCAnc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkJykKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+CglkdXAKCWJueiAqc2tpcF9vcjIKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+Cgl8fAoKKnNraXBfb3IyOgoJLy8gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gKmlmMThfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjEKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMThfZWxzZQoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMgoJLy8gcmV3YXJkVG9rZW5JRCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMwoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSUQgIT09IDAsICJyZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpbnQgMAoJIT0KCgkvLyByZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyNAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrID49IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgJ3Jld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgICAgICkKCWludCAyNjAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCT49CgoJLy8gcmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczMAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgLT0gcmV3YXJkUmVtb3ZlZAoJaW50IDI2MAoJZHVwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZCkKCWludCAyNjgKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczOAoJLy8gbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0KCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjE5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc0MQoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VSZW1vdmVkLmxvZyh7CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgYW1vdW50VW5zdGFrZWQ6IGFtb3VudFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JRCksCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWIgKmlmMThfZW5kCgoqaWYxOF9lbHNlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzUxCgkvLyB0aGlzLnJldGlPUF9zdGFrZVJlbW92ZWQubG9nKHsKCS8vICAgICAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICBzdGFrZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICBhbW91bnRVbnN0YWtlZDogYW1vdW50UmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAvLyBubyB0b2tlbnMgcmV3YXJkZWQuLgoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC56ZXJvSW5kZXgsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IDAsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludCAyNDQKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzkKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wKCWZyYW1lX2RpZyAzIC8vIHN0YWtlck91dE9mUHJvdG9jb2w6IGJvb2wKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc4MAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNgoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDYKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjRfZW5kOgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjEKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjI1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNAoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmFsc2UKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjUKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNwoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyOQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sU2V0W2ldLnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgOCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMzCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF0KCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjdfZW5kOgoKKmlmMjZfZW5kOgoKKmZvcl8zX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJaW50IDIwOQoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ2CgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWludCA0MzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ3CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl80OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ5CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlIDB4MDAKCWludCAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludCAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50IDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzYKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgOAoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc4CgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCA8IE1BWF9OT0RFUwoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgOAoJPAoJYnogKmZvcl81X2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MAoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID09PSBwb29sQXBwSWQKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MQoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50IDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODgzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludCA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4NgoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODg3CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MQoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyOV9lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggKz0gMQoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgkvLyBjb3VsZG4ndCBmaW5kIHBvb2wgYXBwIGlkIGluIG5vZGVzIHRvIG1vdmUKCWVycgoJcmV0c3ViCgovLyBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAocmVjZWl2ZXIpIGZvciBlbXB0eVRva2VuUmV3YXJkcyBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGVtcHR5VG9rZW5SZXdhcmRzCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZW1wdHlUb2tlblJld2FyZHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcmVjZWl2ZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gU2VuZHMgdGhlIHJld2FyZCB0b2tlbnMgaGVsZCBpbiBwb29sIDEgdG8gc3BlY2lmaWVkIHJlY2VpdmVyLgovLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIG93bmVyIHdoZW4gdGhleSB3YW50IHRvIGdldCByZXdhcmQgdG9rZW5zICdiYWNrJyB3aGljaCB0aGV5IHNlbnQgdG8KLy8gdGhlIGZpcnN0IHBvb2wgKGxpa2VseSBiZWNhdXNlIHZhbGlkYXRvciBpcyBzdW5zZXR0aW5nLiAgQW55IHRva2VucyBjdXJyZW50bHkgJ3Jlc2VydmVkJyBmb3Igc3Rha2VycyB0byBjbGFpbSB3aWxsCi8vIE5PVCBiZSBzZW50IGFzIHRoZXkgbXVzdCBiZSBoZWxkIGJhY2sgZm9yIHN0YWtlcnMgdG8gbGF0ZXIgY2xhaW0uCi8vIFsgT05MWSBPV05FUiBDQU4gQ0FMTF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gcmVjZWl2ZXIgLSB0aGUgYWNjb3VudCB0byBzZW5kIHRoZSB0b2tlbnMgdG8gKG11c3QgYWxyZWFkeSBiZSBvcHRlZC1pbiB0byB0aGUgcmV3YXJkIHRva2VuKQovLyBAcmV0dXJucyB7dWludDY0fSB0aGUgYW1vdW50IG9mIHJld2FyZCB0b2tlbiBzZW50CmVtcHR5VG9rZW5SZXdhcmRzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxMQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEyCgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEzCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrCglpbnQgMjYwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTQKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnQgMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE1CgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50IDI2OAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTcKCS8vIHRva2VuUmV3YXJkQmFsID0KCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkyMQoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5wYXlUb2tlblJld2FyZD4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3JlY2VpdmVyLCByZXdhcmRUb2tlbklkLCB0b2tlblJld2FyZEJhbF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDI5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyIHx8CgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWludCA4CglpbnQgMzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnQgNDAKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyB2ZXJpZnlQb29sS2V5Q2FsbGVyIHZlcmlmaWVzIHRoZSBwYXNzZWQgaW4ga2V5IChmcm9tIGEgc3Rha2luZyBwb29sIGNhbGxpbmcgdXMgdG8gdXBkYXRlIG1ldHJpY3MpIGlzIHZhbGlkCi8vIGFuZCBtYXRjaGVzIHRoZSBpbmZvcm1hdGlvbiB3ZSBoYXZlIGluIG91ciBzdGF0ZS4gICdGYWtlJyBwb29scyBjb3VsZCBjYWxsIHVzIHRvIHVwZGF0ZSBvdXIgZGF0YSwgYnV0IHRoZXkKLy8gY2FuJ3QgZmFrZSB0aGUgaWRzIGFuZCBtb3N0IGltcG9ydGFudGx5IGFwcGxpY2F0aW9uIGlkKCEpIG9mIHRoZSBjYWxsZXIgdGhhdCBoYXMgdG8gbWF0Y2guCnZlcmlmeVBvb2xLZXlDYWxsZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQyCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBhc3NlcnQocG9vbEtleS5pZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCd2YWxpZGF0b3JJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OAoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjkKCS8vIHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvICE9PSAwCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMF9lbmQKCgkvLyAqaWYzMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDcyCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzQKCS8vIHZhbGlkYXRvckNvbmZpZy5vd25lciAhPT0gbmZkT3duZXIgJiYgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIgIT09IG5mZE93bmVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnQgNzIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDkxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA+PSBNSU5fRVBPQ0hfTEVOR1RIICYmIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIDw9IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICAnZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA+PSBNSU5fUENUX1RPX1ZBTElEQVRPUiAmJiBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yIDw9IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgJ2NvbW1pc3Npb24gcGVyY2VudGFnZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ3CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludCAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMDcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXInLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludCAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50IDMKCTw9CgkmJgoKKnNraXBfYW5kODoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTExMQoJLy8gY29uZmlnLnN1bnNldHRpbmdPbiAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTIKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMzX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzNAoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQzCgkvLyByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWl0eG5fbmV4dAoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTM5CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQwCgkvLyBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDgKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgNTAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYzNF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTUzCgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsU3Rha2VycyA9IHBvb2xOdW1TdGFrZXJzIGFzIHVpbnQxNgoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCA9IHBvb2xBbGdvU3Rha2VkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnQgMjQ0CglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAxCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sCglmcmFtZV9kaWcgLTUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuCglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkrCglieXRlIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgLy8gIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludCAyNTIKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTY2CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzAKCS8vIGFzc2VydCh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMpCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3MgoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDEKCS0KCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyByZW1vdmVGcm9tU3Rha2VyUG9vbFNldChzdGFrZXI6IEFkZHJlc3MsIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBbYm9vbGVhbiwgYm9vbGVhbl0KLy8KLy8gUmVtb3ZlcyBhIHBvb2wga2V5IGZyb20gdGhlIHN0YWtlcidzIGFjdGl2ZSBwb29sIHNldCAtIGZhaWxzIGlmIG5vdCBmb3VuZCAoISkKLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUgcG9vbCBrZXkgdGhleSBzaG91bGQgYmUgc3RvcmVkIGluCi8vCi8vIEByZXR1cm4gW2Jvb2xlYW4sIGJvb2xlYW5dIFtpcyB0aGUgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHMgb2YgdGhlIGdpdmVuIFZBTElEQVRPUiwgYW5kIGlzIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzXQpyZW1vdmVGcm9tU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk5CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMAoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAxCgkvLyBmb3VuZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl84OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNQoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0MF9lbmQKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwOAoJLy8gaW5BbnlQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA5CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWY0MV9lbmQKCgkvLyAqaWY0MV9jb25zZXF1ZW50CgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDJfZWxzZQoKCS8vICppZjQyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTEKCS8vIGZvdW5kID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTMKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0Ml9lbmQKCippZjQyX2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzgKCipmb3JfOF9lbmQ6CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTkKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyMwoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXQoJYnl0ZSAweDAwCglpbnQgMAoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAwCgk9PQoJc2V0Yml0CglpbnQgMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDAKCT09CglzZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIGFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKYWRkUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJaW50IDIyNQoJaW50IDEKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJLQoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludCA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgktCglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50IDgwCglpbnQgMQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50IDAKCWludCAyNDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0Nl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRCB8fAoJLy8gICAgICAgICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50IDEKCT09CglkdXAKCWJueiAqc2tpcF9vcjQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50IDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAyCgk9PQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MAoJLy8gZm91bmQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MgoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MwoJLy8gZm91bmQgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgliICpmb3JPZl8wX2VuZAoKKmlmNTBfZW5kOgoKKmZvck9mXzBfY29udGludWU6CgkvLyBpbmNyZW1lbnQgb2Zmc2V0IGFuZCBsb29wIGlmIG5vdCBvdXQgb2YgYm91bmRzCglmcmFtZV9kaWcgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoJaW50IDgKCSsKCWR1cAoJaW50IDMyIC8vIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnQgOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0OV9lbmQ6CgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAzCgk9PQoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNTFfZW5kOgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk3CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxMAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTJfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOQoJLy8gdXNlck9mZmVyZWRORkROYW1lID0gQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpIGFzIHN0cmluZwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiaXNWYWxpZE5mZEFwcElkKHN0cmluZyx1aW50NjQpYm9vbCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglsb2FkIDIwMCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnQgMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDkKCS8vIGFwcGxpY2F0aW9uQXJnczogWydyZWFkX3Byb3BlcnR5JywgJ3YuY2FBbGdvLjAuYXMnXQoJYnl0ZSAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWJ5dGUgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjYUFsZ29EYXRhLmxlbmd0aDsgaSArPSAzMikKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgoqZm9yXzEwOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTMKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU0CgkvLyBhZGRyICE9PSByYXdCeXRlcyhnbG9iYWxzLnplcm9BZGRyZXNzKSAmJiBhZGRyID09PSByYXdCeXRlcyhhZGRyVG9GaW5kKQoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDExCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWZyYW1lX2RpZyAtMiAvLyBhZGRyVG9GaW5kOiBBZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDExOgoJYnogKmlmNTNfZW5kCgoJLy8gKmlmNTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1NQoJLy8gcmV0dXJuIHRydWUKCWludCAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1M19lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSArPSAzMgoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCSsKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCWIgKmZvcl8xMAoKKmZvcl8xMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU4CgkvLyByZXR1cm4gZmFsc2UKCWludCAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfSEFSRF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxNTAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludCAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIG1pbkJhbCArPSBjb250cmFjdHMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyBjb250cmFjdHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNAoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludCAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNgoJLy8gbWluQmFsICs9IGxvY2FsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC00IC8vIGxvY2FsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDcKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA5CgkvLyBtaW5CYWwgKz0gZ2xvYmFsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTcgLy8gZ2xvYmFsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDEwCgkvLyByZXR1cm4gbWluQmFsCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDE3CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEUKCWludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCgltZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCW1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCgltZXRob2QgImdhcygpdm9pZCIKCW1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCgltZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCW1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCgltZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCgltZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCgltZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCW1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCW1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCW1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCW1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCW1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "templateVariables": { diff --git a/contracts/contracts/artifacts/ValidatorRegistry.src_map.json b/contracts/contracts/artifacts/ValidatorRegistry.src_map.json index d2cfeaff..40a7f976 100644 --- a/contracts/contracts/artifacts/ValidatorRegistry.src_map.json +++ b/contracts/contracts/artifacts/ValidatorRegistry.src_map.json @@ -1,28195 +1,28009 @@ [ { "teal": 1, - "source": 50, - "pc": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170 - ] + "source": "contracts/validatorRegistry.algo.ts:50" + }, + { + "teal": 2, + "source": "contracts/validatorRegistry.algo.ts:50" + }, + { + "teal": 3, + "source": "contracts/validatorRegistry.algo.ts:50" }, { - "teal": 9, - "source": 50, + "teal": 15, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 171, - 172 + 1, + 2 ] }, { - "teal": 10, - "source": 50, + "teal": 16, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 173 + 3 ] }, { - "teal": 11, - "source": 50, + "teal": 17, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 174, - 175 + 4, + 5 ] }, { "teal": 18, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 176, - 177 + 6 ] }, { "teal": 19, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 178 + 7, + 8 ] }, { "teal": 20, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 179, - 180 + 9 ] }, { "teal": 21, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 181 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35 ] }, { - "teal": 22, - "source": 50, + "teal": 25, + "source": "contracts/validatorRegistry.algo.ts:50", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", "pc": [ - 182, - 183 + 36 ] }, { - "teal": 23, - "source": 50, + "teal": 30, + "source": "contracts/validatorRegistry.algo.ts:81", "pc": [ - 184 + 37, + 38, + 39 ] }, { - "teal": 24, - "source": 50, + "teal": 31, + "source": "contracts/validatorRegistry.algo.ts:81", "pc": [ - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210 + 40 ] }, { - "teal": 28, - "source": 50, - "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "teal": 32, + "source": "contracts/validatorRegistry.algo.ts:81", "pc": [ - 211 + 41 ] }, { - "teal": 33, - "source": 81, + "teal": 36, + "source": "contracts/validatorRegistry.algo.ts:81", "pc": [ - 212, - 213, - 214 + 42, + 43, + 44 ] }, { - "teal": 34, - "source": 81, + "teal": 40, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 215 + 45, + 46 ] }, { - "teal": 35, - "source": 81, + "teal": 41, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 216 + 47 ] }, { - "teal": 39, - "source": 81, + "teal": 42, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 217, - 218, - 219 + 48, + 49 ] }, { "teal": 43, - "source": 82, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 220, - 221 + 50 ] }, { "teal": 44, - "source": 82, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 222 + 51, + 52 ] }, { "teal": 45, - "source": 82, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 223, - 224 + 53 ] }, { "teal": 46, - "source": 82, + "source": "contracts/validatorRegistry.algo.ts:82", "pc": [ - 225 + 54 ] }, { - "teal": 47, - "source": 82, + "teal": 50, + "source": "contracts/validatorRegistry.algo.ts:83", "pc": [ - 226, - 227 + 55, + 56 ] }, { - "teal": 48, - "source": 82, + "teal": 51, + "source": "contracts/validatorRegistry.algo.ts:83", "pc": [ - 228 + 57 ] }, { - "teal": 49, - "source": 82, + "teal": 52, + "source": "contracts/validatorRegistry.algo.ts:83", "pc": [ - 229 + 58 ] }, { - "teal": 53, - "source": 83, + "teal": 56, + "source": "contracts/validatorRegistry.algo.ts:84", "pc": [ - 230, - 231 + 59, + 60 ] }, { - "teal": 54, - "source": 83, + "teal": 57, + "source": "contracts/validatorRegistry.algo.ts:84", "pc": [ - 232 + 61 ] }, { - "teal": 55, - "source": 83, + "teal": 58, + "source": "contracts/validatorRegistry.algo.ts:84", "pc": [ - 233 + 62 ] }, { - "teal": 59, - "source": 84, + "teal": 62, + "source": "contracts/validatorRegistry.algo.ts:85", "pc": [ - 234, - 235 + 63, + 64 ] }, { - "teal": 60, - "source": 84, + "teal": 63, + "source": "contracts/validatorRegistry.algo.ts:85", "pc": [ - 236 + 65 ] }, { - "teal": 61, - "source": 84, + "teal": 64, + "source": "contracts/validatorRegistry.algo.ts:85", "pc": [ - 237 + 66 ] }, { "teal": 65, - "source": 85, + "source": "contracts/validatorRegistry.algo.ts:81", "pc": [ - 238, - 239 + 67 ] }, { - "teal": 66, - "source": 85, + "teal": 70, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 240 + 68, + 69, + 70 ] }, { - "teal": 67, - "source": 85, + "teal": 71, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 241 + 71 ] }, { - "teal": 68, - "source": 81, + "teal": 74, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 242 + 72, + 73, + 74 ] }, { - "teal": 73, - "source": 88, + "teal": 75, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 243, - 244, - 245 + 75 ] }, { - "teal": 74, - "source": 88, + "teal": 76, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 246 + 76 ] }, { - "teal": 77, - "source": 88, + "teal": 80, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 247, - 248, - 249 + 77, + 78, + 79 ] }, { - "teal": 78, - "source": 88, + "teal": 84, + "source": "contracts/validatorRegistry.algo.ts:90", "pc": [ - 250 + 80, + 81 ] }, { - "teal": 79, - "source": 88, + "teal": 85, + "source": "contracts/validatorRegistry.algo.ts:90", "pc": [ - 251 + 82, + 83 ] }, { - "teal": 83, - "source": 88, + "teal": 86, + "source": "contracts/validatorRegistry.algo.ts:90", "pc": [ - 252, - 253, - 254 + 84 ] }, { "teal": 87, - "source": 90, + "source": "contracts/validatorRegistry.algo.ts:90", "pc": [ - 255, - 256 + 85 ] }, { "teal": 88, - "source": 90, + "source": "contracts/validatorRegistry.algo.ts:88", "pc": [ - 257, - 258 + 86 ] }, { - "teal": 89, - "source": 90, + "teal": 93, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 259 + 87, + 88, + 89 ] }, { - "teal": 90, - "source": 90, + "teal": 94, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 260 + 90, + 91, + 92 ] }, { - "teal": 91, - "source": 88, + "teal": 97, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 261 + 93, + 94, + 95 ] }, { - "teal": 96, - "source": 93, + "teal": 98, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 262, - 263, - 264 + 96 ] }, { - "teal": 97, - "source": 93, + "teal": 101, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 265, - 266, - 267 + 97, + 98, + 99 ] }, { - "teal": 100, - "source": 93, + "teal": 102, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 268, - 269, - 270 + 100 ] }, { - "teal": 101, - "source": 93, + "teal": 103, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 271 + 101 ] }, { - "teal": 104, - "source": 93, + "teal": 107, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 272, - 273, - 274 + 102, + 103, + 104 ] }, { - "teal": 105, - "source": 93, + "teal": 111, + "source": "contracts/validatorRegistry.algo.ts:94", "pc": [ - 275 + 105, + 106 ] }, { - "teal": 106, - "source": 93, + "teal": 112, + "source": "contracts/validatorRegistry.algo.ts:94", "pc": [ - 276 + 107 ] }, { - "teal": 110, - "source": 93, + "teal": 113, + "source": "contracts/validatorRegistry.algo.ts:94", "pc": [ - 277, - 278, - 279 + 108 ] }, { "teal": 114, - "source": 94, + "source": "contracts/validatorRegistry.algo.ts:94", "pc": [ - 280, - 281 + 109 ] }, { "teal": 115, - "source": 94, + "source": "contracts/validatorRegistry.algo.ts:94", "pc": [ - 282 + 110 ] }, { "teal": 116, - "source": 94, + "source": "contracts/validatorRegistry.algo.ts:94", "pc": [ - 283 + 111 ] }, { - "teal": 117, - "source": 94, + "teal": 120, + "source": "contracts/validatorRegistry.algo.ts:95", "pc": [ - 284 + 112, + 113 ] }, { - "teal": 118, - "source": 94, + "teal": 121, + "source": "contracts/validatorRegistry.algo.ts:95", "pc": [ - 285 + 114, + 115 ] }, { - "teal": 119, - "source": 94, + "teal": 122, + "source": "contracts/validatorRegistry.algo.ts:95", "pc": [ - 286 + 116, + 117 ] }, { "teal": 123, - "source": 95, + "source": "contracts/validatorRegistry.algo.ts:95", "pc": [ - 287, - 288 + 118 ] }, { "teal": 124, - "source": 95, + "source": "contracts/validatorRegistry.algo.ts:93", "pc": [ - 289, - 290 + 119 ] }, { - "teal": 125, - "source": 95, + "teal": 129, + "source": "contracts/validatorRegistry.algo.ts:98", "pc": [ - 291, - 292 + 120, + 121, + 122 ] }, { - "teal": 126, - "source": 95, + "teal": 130, + "source": "contracts/validatorRegistry.algo.ts:98", "pc": [ - 293 + 123 ] }, { - "teal": 127, - "source": 93, + "teal": 131, + "source": "contracts/validatorRegistry.algo.ts:98", "pc": [ - 294 + 124 ] }, { - "teal": 132, - "source": 98, + "teal": 135, + "source": "contracts/validatorRegistry.algo.ts:98", "pc": [ - 295, - 296, - 297 + 125, + 126, + 127 ] }, { - "teal": 133, - "source": 98, + "teal": 139, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 298 + 128, + 129 ] }, { - "teal": 134, - "source": 98, + "teal": 140, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 299 + 130 ] }, { - "teal": 138, - "source": 98, + "teal": 141, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 300, - 301, - 302 + 131, + 132 ] }, { "teal": 142, - "source": 99, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 303, - 304 + 133 ] }, { "teal": 143, - "source": 99, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 305 + 134, + 135 ] }, { "teal": 144, - "source": 99, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 306, - 307 + 136 ] }, { "teal": 145, - "source": 99, + "source": "contracts/validatorRegistry.algo.ts:99", "pc": [ - 308 + 137 ] }, { "teal": 146, - "source": 99, + "source": "contracts/validatorRegistry.algo.ts:98", "pc": [ - 309, - 310 + 138 ] }, { - "teal": 147, - "source": 99, + "teal": 151, + "source": "contracts/validatorRegistry.algo.ts:105", "pc": [ - 311 + 139, + 140, + 141 ] }, { - "teal": 148, - "source": 99, + "teal": 152, + "source": "contracts/validatorRegistry.algo.ts:105", "pc": [ - 312 + 142 ] }, { - "teal": 149, - "source": 98, + "teal": 153, + "source": "contracts/validatorRegistry.algo.ts:105", "pc": [ - 313 + 143 ] }, { - "teal": 154, - "source": 105, + "teal": 159, + "source": "contracts/validatorRegistry.algo.ts:105", "pc": [ - 314, - 315, - 316 + 144, + 145, + 146 ] }, { - "teal": 155, - "source": 105, + "teal": 160, + "source": "contracts/validatorRegistry.algo.ts:105", "pc": [ - 317 + 147 ] }, { - "teal": 156, - "source": 105, + "teal": 165, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 318 + 148 ] }, { - "teal": 162, - "source": 105, + "teal": 168, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 319, - 320, - 321 + 149, + 150, + 151 ] }, { - "teal": 163, - "source": 105, + "teal": 169, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 322 + 152 ] }, { - "teal": 168, - "source": 116, + "teal": 170, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 323 + 153 ] }, { "teal": 171, - "source": 116, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 324, - 325, - 326 + 154 ] }, { "teal": 172, - "source": 116, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 327 + 155 ] }, { - "teal": 173, - "source": 116, + "teal": 184, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 328 + 156, + 157, + 158 ] }, { - "teal": 174, - "source": 116, + "teal": 209, + "source": "contracts/validatorRegistry.algo.ts:121", "pc": [ - 329 + 159, + 160, + 161 ] }, { - "teal": 175, - "source": 116, + "teal": 210, + "source": "contracts/validatorRegistry.algo.ts:121", "pc": [ - 330 + 162, + 163, + 164 ] }, { - "teal": 187, - "source": 116, + "teal": 211, + "source": "contracts/validatorRegistry.algo.ts:121", "pc": [ - 331, - 332, - 333 + 165 ] }, { "teal": 212, - "source": 121, + "source": "contracts/validatorRegistry.algo.ts:131", "pc": [ - 334, - 335, - 336 + 166, + 167 ] }, { "teal": 213, - "source": 121, + "source": "contracts/validatorRegistry.algo.ts:130", "pc": [ - 337, - 338, - 339 + 168, + 169 ] }, { "teal": 214, - "source": 121, + "source": "contracts/validatorRegistry.algo.ts:129", "pc": [ - 340 + 170 ] }, { "teal": 215, - "source": 131, + "source": "contracts/validatorRegistry.algo.ts:129", "pc": [ - 341, - 342 - ] + 171, + 172 + ] }, { "teal": 216, - "source": 130, + "source": "contracts/validatorRegistry.algo.ts:126", "pc": [ - 343, - 344 + 173, + 174 ] }, { "teal": 217, - "source": 129, + "source": "contracts/validatorRegistry.algo.ts:123", "pc": [ - 345 + 175 ] }, { "teal": 218, - "source": 129, + "source": "contracts/validatorRegistry.algo.ts:122", "pc": [ - 346, - 347 + 176, + 177, + 178 ] }, { "teal": 219, - "source": 126, + "source": "contracts/validatorRegistry.algo.ts:122", "pc": [ - 348, - 349 + 179 ] }, { "teal": 220, - "source": 123, + "source": "contracts/validatorRegistry.algo.ts:122", "pc": [ - 350 + 180 ] }, { "teal": 221, - "source": 122, + "source": "contracts/validatorRegistry.algo.ts:134", "pc": [ - 351, - 352, - 353 + 181, + 182 ] }, { "teal": 222, - "source": 122, + "source": "contracts/validatorRegistry.algo.ts:135", "pc": [ - 354 + 183, + 184, + 185 ] }, { "teal": 223, - "source": 122, + "source": "contracts/validatorRegistry.algo.ts:135", "pc": [ - 355 + 186, + 187, + 188 ] }, { "teal": 224, - "source": 134, + "source": "contracts/validatorRegistry.algo.ts:134", "pc": [ - 356, - 357 + 189 ] }, { "teal": 225, - "source": 135, + "source": "contracts/validatorRegistry.algo.ts:134", "pc": [ - 358, - 359, - 360 + 190 ] }, { "teal": 226, - "source": 135, + "source": "contracts/validatorRegistry.algo.ts:134", "pc": [ - 361, - 362, - 363 + 191 ] }, { "teal": 227, - "source": 134, + "source": "contracts/validatorRegistry.algo.ts:139", "pc": [ - 364 + 192, + 193, + 194 ] }, { "teal": 228, - "source": 134, + "source": "contracts/validatorRegistry.algo.ts:138", "pc": [ - 365 + 195, + 196, + 197 ] }, { "teal": 229, - "source": 134, + "source": "contracts/validatorRegistry.algo.ts:138", "pc": [ - 366 + 198 ] }, { "teal": 230, - "source": 139, + "source": "contracts/validatorRegistry.algo.ts:138", "pc": [ - 367, - 368, - 369 + 199 ] }, { "teal": 231, - "source": 138, + "source": "contracts/validatorRegistry.algo.ts:116", "pc": [ - 370, - 371, - 372 + 200 ] }, { - "teal": 232, - "source": 138, + "teal": 236, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 373 + 201 ] }, { - "teal": 233, - "source": 138, + "teal": 239, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 374 + 202, + 203, + 204 ] }, { - "teal": 234, - "source": 116, + "teal": 240, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 375 + 205 ] }, { - "teal": 239, - "source": 147, + "teal": 241, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 376 + 206 ] }, { "teal": 242, - "source": 147, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 377, - 378, - 379 + 207 ] }, { "teal": 243, - "source": 147, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 380 + 208 ] }, { - "teal": 244, - "source": 147, + "teal": 249, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 381 + 209, + 210, + 211 ] }, { - "teal": 245, - "source": 147, + "teal": 265, + "source": "contracts/validatorRegistry.algo.ts:154", "pc": [ - 382 + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253 ] }, { - "teal": 246, - "source": 147, + "teal": 266, + "source": "contracts/validatorRegistry.algo.ts:155", "pc": [ - 383 + 254, + 255, + 256 ] }, { - "teal": 252, - "source": 147, + "teal": 267, + "source": "contracts/validatorRegistry.algo.ts:155", "pc": [ - 384, - 385, - 386 + 257 ] }, { "teal": 268, - "source": 154, + "source": "contracts/validatorRegistry.algo.ts:155", "pc": [ - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428 + 258 ] }, { "teal": 269, - "source": 155, + "source": "contracts/validatorRegistry.algo.ts:156", "pc": [ - 429, - 430, - 431 + 259, + 260, + 261 ] }, { "teal": 270, - "source": 155, + "source": "contracts/validatorRegistry.algo.ts:156", "pc": [ - 432 + 262 ] }, { "teal": 271, - "source": 155, + "source": "contracts/validatorRegistry.algo.ts:156", "pc": [ - 433 + 263 ] }, { "teal": 272, - "source": 156, + "source": "contracts/validatorRegistry.algo.ts:157", "pc": [ - 434, - 435, - 436 + 264, + 265, + 266 ] }, { "teal": 273, - "source": 156, + "source": "contracts/validatorRegistry.algo.ts:157", "pc": [ - 437 + 267 ] }, { "teal": 274, - "source": 156, + "source": "contracts/validatorRegistry.algo.ts:157", "pc": [ - 438 + 268 ] }, { "teal": 275, - "source": 157, + "source": "contracts/validatorRegistry.algo.ts:158", "pc": [ - 439, - 440, - 441 + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278 ] }, { "teal": 276, - "source": 157, + "source": "contracts/validatorRegistry.algo.ts:158", "pc": [ - 442 + 279 ] }, { "teal": 277, - "source": 157, + "source": "contracts/validatorRegistry.algo.ts:159", "pc": [ - 443 + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289 ] }, { "teal": 278, - "source": 158, + "source": "contracts/validatorRegistry.algo.ts:159", "pc": [ - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453 + 290 ] }, { "teal": 279, - "source": 158, + "source": "contracts/validatorRegistry.algo.ts:160", "pc": [ - 454 + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300 ] }, { "teal": 280, - "source": 159, + "source": "contracts/validatorRegistry.algo.ts:160", "pc": [ - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464 + 301 ] }, { "teal": 281, - "source": 159, + "source": "contracts/validatorRegistry.algo.ts:147", "pc": [ - 465 + 302 ] }, { - "teal": 282, - "source": 160, + "teal": 286, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475 + 303 ] }, { - "teal": 283, - "source": 160, + "teal": 289, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 476 + 304, + 305, + 306 ] }, { - "teal": 284, - "source": 147, + "teal": 290, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 477 + 307 ] }, { - "teal": 289, - "source": 167, + "teal": 291, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 478 + 308 ] }, { "teal": 292, - "source": 167, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 479, - 480, - 481 + 309 ] }, { "teal": 293, - "source": 167, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 482 + 310 ] }, { "teal": 294, - "source": 167, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 483 + 311 ] }, { - "teal": 295, - "source": 167, + "teal": 300, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 484 + 312, + 313, + 314 ] }, { - "teal": 296, - "source": 167, + "teal": 304, + "source": "contracts/validatorRegistry.algo.ts:169", "pc": [ - 485 + 315, + 316 ] }, { - "teal": 297, - "source": 167, + "teal": 305, + "source": "contracts/validatorRegistry.algo.ts:169", "pc": [ - 486 + 317 ] }, { - "teal": 303, - "source": 167, + "teal": 306, + "source": "contracts/validatorRegistry.algo.ts:167", "pc": [ - 487, - 488, - 489 + 318 ] }, { - "teal": 307, - "source": 169, + "teal": 311, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 490, - 491 + 319 ] }, { - "teal": 308, - "source": 169, + "teal": 314, + "source": "contracts/validatorRegistry.algo.ts:173", "pc": [ - 492 + 320, + 321, + 322 ] }, { - "teal": 309, - "source": 167, + "teal": 315, + "source": "contracts/validatorRegistry.algo.ts:173", "pc": [ - 493 + 323 ] }, { - "teal": 314, - "source": 172, + "teal": 318, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 494 + 324, + 325, + 326 ] }, { - "teal": 317, - "source": 173, + "teal": 319, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 495, - 496, - 497 + 327 ] }, { - "teal": 318, - "source": 173, + "teal": 320, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 498 + 328 ] }, { "teal": 321, - "source": 172, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 499, - 500, - 501 + 329 ] }, { "teal": 322, - "source": 172, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 502 + 330 ] }, { - "teal": 323, - "source": 172, + "teal": 326, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 503 + 331, + 332, + 333 ] }, { - "teal": 324, - "source": 172, + "teal": 330, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 504 + 334 ] }, { - "teal": 325, - "source": 172, + "teal": 331, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 505 + 335, + 336 ] }, { - "teal": 329, - "source": 172, + "teal": 332, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 506, - 507, - 508 + 337 ] }, { "teal": 333, - "source": 174, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 509 + 338, + 339 ] }, { "teal": 334, - "source": 174, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 510, - 511 + 340 ] }, { "teal": 335, - "source": 174, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 512 + 341 ] }, { "teal": 336, - "source": 174, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 513, - 514 + 342, + 343 ] }, { "teal": 337, - "source": 174, + "source": "contracts/validatorRegistry.algo.ts:174", "pc": [ - 515 + 344 ] }, { "teal": 338, - "source": 174, + "source": "contracts/validatorRegistry.algo.ts:172", "pc": [ - 516 + 345 ] }, { - "teal": 339, - "source": 174, + "teal": 343, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 517, - 518 + 346 ] }, { - "teal": 340, - "source": 174, + "teal": 346, + "source": "contracts/validatorRegistry.algo.ts:178", "pc": [ - 519 + 347, + 348, + 349 ] }, { - "teal": 341, - "source": 172, + "teal": 347, + "source": "contracts/validatorRegistry.algo.ts:178", "pc": [ - 520 + 350 ] }, { - "teal": 346, - "source": 177, + "teal": 350, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 521 + 351, + 352, + 353 ] }, { - "teal": 349, - "source": 178, + "teal": 351, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 522, - 523, - 524 + 354 ] }, { - "teal": 350, - "source": 178, + "teal": 352, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 525 + 355 ] }, { "teal": 353, - "source": 177, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 526, - 527, - 528 + 356 ] }, { "teal": 354, - "source": 177, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 529 + 357 ] }, { - "teal": 355, - "source": 177, + "teal": 358, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 530 + 358, + 359, + 360 ] }, { - "teal": 356, - "source": 177, + "teal": 362, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 531 + 361, + 362 ] }, { - "teal": 357, - "source": 177, + "teal": 363, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 532 + 363, + 364 ] }, { - "teal": 361, - "source": 177, + "teal": 364, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 533, - 534, - 535 + 365 ] }, { "teal": 365, - "source": 179, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 536, - 537 + 366, + 367 ] }, { "teal": 366, - "source": 179, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 538, - 539 + 368 ] }, { "teal": 367, - "source": 179, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 540 + 369 ] }, { "teal": 368, - "source": 179, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 541, - 542 + 370, + 371 ] }, { "teal": 369, - "source": 179, + "source": "contracts/validatorRegistry.algo.ts:179", "pc": [ - 543 + 372 ] }, { "teal": 370, - "source": 179, + "source": "contracts/validatorRegistry.algo.ts:177", "pc": [ - 544 + 373 ] }, { - "teal": 371, - "source": 179, + "teal": 375, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 545, - 546 + 374 ] }, { - "teal": 372, - "source": 179, + "teal": 378, + "source": "contracts/validatorRegistry.algo.ts:183", "pc": [ - 547 + 375, + 376, + 377 ] }, { - "teal": 373, - "source": 177, + "teal": 379, + "source": "contracts/validatorRegistry.algo.ts:183", "pc": [ - 548 + 378 ] }, { - "teal": 378, - "source": 182, + "teal": 382, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 549 + 379, + 380, + 381 ] }, { - "teal": 381, - "source": 183, + "teal": 383, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 550, - 551, - 552 + 382 ] }, { - "teal": 382, - "source": 183, + "teal": 384, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 553 + 383 ] }, { "teal": 385, - "source": 182, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 554, - 555, - 556 + 384 ] }, { "teal": 386, - "source": 182, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 557 + 385 ] }, { - "teal": 387, - "source": 182, + "teal": 390, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 558 + 386, + 387, + 388 ] }, { - "teal": 388, - "source": 182, + "teal": 397, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 559 + 389 ] }, { - "teal": 389, - "source": 182, + "teal": 398, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 560 + 390, + 391 ] }, { - "teal": 393, - "source": 182, + "teal": 399, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 561, - 562, - 563 + 392 ] }, { "teal": 400, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 564 + 393, + 394 ] }, { "teal": 401, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 565, - 566 + 395 ] }, { "teal": 402, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 567 + 396 ] }, { "teal": 403, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 568, - 569 + 397, + 398 ] }, { "teal": 404, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:185", "pc": [ - 570 + 399 ] }, { "teal": 405, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 571 + 400, + 401 ] }, { "teal": 406, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 572, - 573 + 402, + 403 ] }, { "teal": 407, - "source": 185, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 574 + 404 ] }, { "teal": 408, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 575, - 576 + 405, + 406 ] }, { "teal": 409, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 577, - 578 + 407 ] }, { "teal": 410, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 579 + 408 ] }, { "teal": 411, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 580, - 581 + 409, + 410 ] }, { "teal": 412, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 582 + 411 ] }, { "teal": 413, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:186", "pc": [ - 583 + 412 ] }, { "teal": 414, - "source": 186, + "source": "contracts/validatorRegistry.algo.ts:182", "pc": [ - 584, - 585 + 413 ] }, { - "teal": 415, - "source": 186, + "teal": 419, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 586 + 414 ] }, { - "teal": 416, - "source": 186, + "teal": 422, + "source": "contracts/validatorRegistry.algo.ts:197", "pc": [ - 587 - ] + 415, + 416, + 417 + ] }, { - "teal": 417, - "source": 182, + "teal": 423, + "source": "contracts/validatorRegistry.algo.ts:197", "pc": [ - 588 + 418 ] }, { - "teal": 422, - "source": 196, + "teal": 426, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 589 + 419, + 420, + 421 ] }, { - "teal": 425, - "source": 197, + "teal": 427, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 590, - 591, - 592 + 422 ] }, { - "teal": 426, - "source": 197, + "teal": 428, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 593 + 423 ] }, { "teal": 429, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 594, - 595, - 596 + 424, + 425 ] }, { "teal": 430, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 597 + 426 ] }, { "teal": 431, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 598 + 427 ] }, { "teal": 432, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 599, - 600 + 428, + 429, + 430 ] }, { "teal": 433, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 601 + 431 ] }, { "teal": 434, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 602 + 432 ] }, { "teal": 435, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 603, - 604, - 605 + 433 ] }, { "teal": 436, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 606 + 434 ] }, { "teal": 437, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 607 + 435 ] }, { "teal": 438, - "source": 196, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 608 + 436 ] }, { - "teal": 439, - "source": 196, + "teal": 447, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 609 + 437, + 438, + 439 ] }, { - "teal": 440, - "source": 196, + "teal": 450, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 610 + 440 ] }, { - "teal": 441, - "source": 196, + "teal": 451, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 611 + 441, + 442 ] }, { - "teal": 450, - "source": 196, + "teal": 455, + "source": "contracts/validatorRegistry.algo.ts:198", "pc": [ - 612, - 613, - 614 + 443 ] }, { - "teal": 453, - "source": 196, + "teal": 456, + "source": "contracts/validatorRegistry.algo.ts:198", "pc": [ - 615 + 444, + 445 ] }, { - "teal": 454, - "source": 196, + "teal": 460, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 616, - 617 + 446, + 447 ] }, { - "teal": 458, - "source": 198, + "teal": 461, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 618 + 448, + 449 ] }, { - "teal": 459, - "source": 198, + "teal": 462, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 619, - 620 + 450 ] }, { "teal": 463, - "source": 199, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 621, - 622 + 451, + 452 ] }, { "teal": 464, - "source": 199, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 623, - 624 + 453 ] }, { "teal": 465, - "source": 199, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 625 + 454 ] }, { "teal": 466, - "source": 199, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 626, - 627 + 455, + 456 ] }, { "teal": 467, - "source": 199, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 628 + 457 ] }, { "teal": 468, - "source": 199, + "source": "contracts/validatorRegistry.algo.ts:199", "pc": [ - 629 + 458, + 459 ] }, { - "teal": 469, - "source": 199, + "teal": 472, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 630, - 631 + 460 ] }, { - "teal": 470, - "source": 199, + "teal": 473, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 632 + 461, + 462 ] }, { - "teal": 471, - "source": 199, + "teal": 478, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 633, - 634 + 463, + 464 ] }, { - "teal": 475, - "source": 200, + "teal": 479, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 635 + 465 ] }, { - "teal": 476, - "source": 200, + "teal": 480, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 636, - 637 + 466 ] }, { "teal": 481, - "source": 200, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 638, - 639 + 467, + 468, + 469 ] }, { - "teal": 482, - "source": 200, + "teal": 486, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 640 + 470, + 471 ] }, { - "teal": 483, - "source": 200, + "teal": 487, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 641 + 472, + 473 ] }, { - "teal": 484, - "source": 200, + "teal": 488, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 642, - 643, - 644 + 474, + 475 ] }, { "teal": 489, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 645, - 646 + 476 ] }, { "teal": 490, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 647, - 648 + 477 ] }, { "teal": 491, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 649, - 650 + 478 ] }, { "teal": 492, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 651 + 479 ] }, { "teal": 493, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 652 + 480 ] }, { "teal": 494, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 653 + 481 ] }, { "teal": 495, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 654 + 482 ] }, { "teal": 496, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 655 + 483 ] }, { "teal": 497, - "source": 201, + "source": "contracts/validatorRegistry.algo.ts:201", "pc": [ - 656 + 484, + 485, + 486 ] }, { - "teal": 498, - "source": 201, + "teal": 500, + "source": "contracts/validatorRegistry.algo.ts:203", "pc": [ - 657 + 487, + 488, + 489 ] }, { - "teal": 499, - "source": 201, + "teal": 505, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 658 + 490, + 491 ] }, { - "teal": 500, - "source": 201, + "teal": 506, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 659, - 660, - 661 + 492, + 493 ] }, { - "teal": 503, - "source": 203, + "teal": 507, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 662, - 663, - 664 + 494, + 495 ] }, { "teal": 508, - "source": 205, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 665, - 666 + 496, + 497 ] }, { "teal": 509, - "source": 205, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 667, - 668 + 498 ] }, { "teal": 510, - "source": 205, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 669, - 670 + 499, + 500 ] }, { "teal": 511, - "source": 205, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 671, - 672 + 501 ] }, { "teal": 512, - "source": 205, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 673 + 502 ] }, { "teal": 513, - "source": 205, + "source": "contracts/validatorRegistry.algo.ts:205", "pc": [ - 674, - 675 + 503, + 504 ] }, { - "teal": 514, - "source": 205, + "teal": 518, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 676 + 505, + 506 ] }, { - "teal": 515, - "source": 205, + "teal": 519, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 677 + 507 ] }, { - "teal": 516, - "source": 205, + "teal": 520, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 678, - 679 + 508 ] }, { "teal": 521, - "source": 200, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 680, - 681 + 509, + 510 ] }, { "teal": 522, - "source": 200, + "source": "contracts/validatorRegistry.algo.ts:200", "pc": [ - 682 + 511, + 512, + 513 ] }, { - "teal": 523, - "source": 200, + "teal": 527, + "source": "contracts/validatorRegistry.algo.ts:207", "pc": [ - 683 + 514, + 515 ] }, { - "teal": 524, - "source": 200, + "teal": 530, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 684, - 685 + 516, + 517 ] }, { - "teal": 525, - "source": 200, + "teal": 533, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 686, - 687, - 688 + 518, + 519 ] }, { - "teal": 530, - "source": 207, + "teal": 534, + "source": "contracts/validatorRegistry.algo.ts:196", "pc": [ - 689, - 690 + 520 ] }, { - "teal": 533, - "source": 196, + "teal": 539, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 691, - 692 + 521 ] }, { - "teal": 536, - "source": 196, + "teal": 542, + "source": "contracts/validatorRegistry.algo.ts:216", "pc": [ - 693, - 694 + 522, + 523, + 524 ] }, { - "teal": 537, - "source": 196, + "teal": 543, + "source": "contracts/validatorRegistry.algo.ts:216", "pc": [ - 695 + 525 ] }, { - "teal": 542, - "source": 215, + "teal": 546, + "source": "contracts/validatorRegistry.algo.ts:216", "pc": [ - 696 + 526, + 527, + 528 ] }, { - "teal": 545, - "source": 216, + "teal": 547, + "source": "contracts/validatorRegistry.algo.ts:216", "pc": [ - 697, - 698, - 699 + 529 ] }, { - "teal": 546, - "source": 216, + "teal": 550, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 700 + 530, + 531, + 532 ] }, { - "teal": 549, - "source": 216, + "teal": 551, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 701, - 702, - 703 + 533 ] }, { - "teal": 550, - "source": 216, + "teal": 552, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 704 + 534 ] }, { "teal": 553, - "source": 215, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 705, - 706, - 707 + 535 ] }, { "teal": 554, - "source": 215, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 708 + 536 ] }, { "teal": 555, - "source": 215, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 709 + 537 ] }, { - "teal": 556, - "source": 215, + "teal": 563, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 710 + 538, + 539, + 540 ] }, { - "teal": 557, - "source": 215, + "teal": 570, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 711 + 541, + 542 ] }, { - "teal": 558, - "source": 215, + "teal": 571, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 712 + 543 ] }, { - "teal": 566, - "source": 215, + "teal": 572, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 713, - 714, - 715 + 544 ] }, { "teal": 573, - "source": 218, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 716, - 717 + 545 ] }, { "teal": 574, - "source": 218, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 718 + 546, + 547, + 548 ] }, { "teal": 575, - "source": 218, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 719 + 549, + 550 ] }, { "teal": 576, - "source": 218, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 720 + 551 ] }, { "teal": 577, - "source": 218, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 721, - 722, - 723 + 552 ] }, { "teal": 578, - "source": 218, + "source": "contracts/validatorRegistry.algo.ts:218", "pc": [ - 724, - 725 + 553 ] }, { - "teal": 579, - "source": 218, + "teal": 582, + "source": "contracts/validatorRegistry.algo.ts:217", + "errorMessage": "pool id must be between 1 and number of pools for this validator", "pc": [ - 726 + 554 ] }, { - "teal": 580, - "source": 218, + "teal": 586, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 727 + 555, + 556 ] }, { - "teal": 581, - "source": 218, + "teal": 587, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 728 + 557, + 558 ] }, { - "teal": 585, - "source": 217, - "errorMessage": "pool id must be between 1 and number of pools for this validator", + "teal": 588, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 729 + 559 ] }, { "teal": 589, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 730, - 731 + 560 ] }, { "teal": 590, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 732, - 733 + 561, + 562 ] }, { "teal": 591, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 734 + 563 ] }, { "teal": 592, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 735 + 564 ] }, { "teal": 593, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 736, - 737 + 565 ] }, { "teal": 594, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 738 + 566 ] }, { "teal": 595, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 739 + 567 ] }, { "teal": 596, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 740 + 568 ] }, { "teal": 597, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 741 + 569, + 570 ] }, { "teal": 598, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 742 + 571 ] }, { "teal": 599, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 743 + 572 ] }, { "teal": 600, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 744, - 745 + 573, + 574 ] }, { "teal": 601, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 746 + 575 ] }, { "teal": 602, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:221", "pc": [ - 747 + 576 ] }, { "teal": 603, - "source": 221, + "source": "contracts/validatorRegistry.algo.ts:215", "pc": [ - 748, - 749 + 577 ] }, { - "teal": 604, - "source": 221, + "teal": 608, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 750 + 578 ] }, { - "teal": 605, - "source": 221, + "teal": 611, + "source": "contracts/validatorRegistry.algo.ts:225", "pc": [ - 751 + 579, + 580, + 581 ] }, { - "teal": 606, - "source": 215, + "teal": 612, + "source": "contracts/validatorRegistry.algo.ts:225", "pc": [ - 752 + 582 ] }, { - "teal": 611, - "source": 224, + "teal": 613, + "source": "contracts/validatorRegistry.algo.ts:225", "pc": [ - 753 + 583 ] }, { "teal": 614, - "source": 225, + "source": "contracts/validatorRegistry.algo.ts:225", "pc": [ - 754, - 755, - 756 + 584 ] }, { "teal": 615, - "source": 225, + "source": "contracts/validatorRegistry.algo.ts:225", "pc": [ - 757 + 585 ] }, { - "teal": 616, - "source": 225, + "teal": 618, + "source": "contracts/validatorRegistry.algo.ts:225", + "errorMessage": "argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)", "pc": [ - 758 + 586 ] }, { - "teal": 617, - "source": 225, + "teal": 621, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 759 + 587, + 588, + 589 ] }, { - "teal": 618, - "source": 225, + "teal": 622, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 760 + 590 ] }, { - "teal": 621, - "source": 225, - "errorMessage": "argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)", + "teal": 623, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 761 + 591 ] }, { "teal": 624, - "source": 224, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 762, - 763, - 764 + 592 ] }, { "teal": 625, - "source": 224, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 765 + 593 ] }, { - "teal": 626, - "source": 224, + "teal": 629, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 766 + 594, + 595, + 596 ] }, { - "teal": 627, - "source": 224, + "teal": 633, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 767 + 597, + 598 ] }, { - "teal": 628, - "source": 224, + "teal": 634, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 768 + 599, + 600 ] }, { - "teal": 632, - "source": 224, + "teal": 635, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 769, - 770, - 771 + 601, + 602, + 603 ] }, { "teal": 636, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 772, - 773 + 604 ] }, { "teal": 637, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 774, - 775 + 605 ] }, { "teal": 638, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 776, - 777, - 778 + 606 ] }, { "teal": 639, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 779 + 607, + 608 ] }, { "teal": 640, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 780 + 609 ] }, { "teal": 641, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 781 + 610 ] }, { "teal": 642, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 782, - 783 + 611, + 612 ] }, { "teal": 643, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 784 + 613 ] }, { "teal": 644, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 785 + 614, + 615 ] }, { "teal": 645, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 786, - 787 + 616, + 617, + 618 ] }, { "teal": 646, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 788 + 619 ] }, { "teal": 647, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 789, - 790 + 620 ] }, { "teal": 648, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 791, - 792, - 793 + 621 ] }, { "teal": 649, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 794 + 622, + 623 ] }, { "teal": 650, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:226", "pc": [ - 795 + 624 ] }, { "teal": 651, - "source": 226, + "source": "contracts/validatorRegistry.algo.ts:224", "pc": [ - 796 + 625 ] }, { - "teal": 652, - "source": 226, + "teal": 656, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 797, - 798 + 626 ] }, { - "teal": 653, - "source": 226, + "teal": 659, + "source": "contracts/validatorRegistry.algo.ts:237", "pc": [ - 799 + 627, + 628, + 629 ] }, { - "teal": 654, - "source": 224, + "teal": 660, + "source": "contracts/validatorRegistry.algo.ts:237", "pc": [ - 800 + 630 ] }, { - "teal": 659, - "source": 236, + "teal": 663, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 801 + 631, + 632, + 633 ] }, { - "teal": 662, - "source": 237, + "teal": 664, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 802, - 803, - 804 + 634 ] }, { - "teal": 663, - "source": 237, + "teal": 665, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 805 + 635 ] }, { "teal": 666, - "source": 236, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 806, - 807, - 808 + 636 ] }, { "teal": 667, - "source": 236, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 809 + 637 ] }, { "teal": 668, - "source": 236, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 810 + 638 ] }, { - "teal": 669, - "source": 236, + "teal": 678, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 811 + 639, + 640, + 641 ] }, { - "teal": 670, - "source": 236, + "teal": 681, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 812 + 642 ] }, { - "teal": 671, - "source": 236, + "teal": 682, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 813 + 643, + 644 ] }, { - "teal": 681, - "source": 236, + "teal": 686, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 814, - 815, - 816 + 645, + 646 ] }, { - "teal": 684, - "source": 236, + "teal": 687, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 817 + 647, + 648 ] }, { - "teal": 685, - "source": 236, + "teal": 688, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 818, - 819 + 649 ] }, { "teal": 689, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 820, - 821 + 650, + 651 ] }, { "teal": 690, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 822, - 823 + 652 ] }, { "teal": 691, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 824 + 653 ] }, { "teal": 692, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 825, - 826 + 654, + 655 ] }, { "teal": 693, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 827 + 656 ] }, { "teal": 694, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 828 + 657 ] }, { "teal": 695, - "source": 238, + "source": "contracts/validatorRegistry.algo.ts:238", "pc": [ - 829, - 830 + 658, + 659 ] }, { - "teal": 696, - "source": 238, + "teal": 699, + "source": "contracts/validatorRegistry.algo.ts:239", "pc": [ - 831 + 660, + 661, + 662 ] }, { - "teal": 697, - "source": 238, + "teal": 700, + "source": "contracts/validatorRegistry.algo.ts:239", "pc": [ - 832 + 663, + 664 ] }, { - "teal": 698, - "source": 238, + "teal": 701, + "source": "contracts/validatorRegistry.algo.ts:239", "pc": [ - 833, - 834 + 665 ] }, { "teal": 702, - "source": 239, + "source": "contracts/validatorRegistry.algo.ts:239", "pc": [ - 835, - 836, - 837 + 666, + 667 ] }, { - "teal": 703, - "source": 239, + "teal": 706, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 838, - 839 + 668, + 669, + 670 ] }, { - "teal": 704, - "source": 239, + "teal": 707, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 840 + 671 ] }, { - "teal": 705, - "source": 239, + "teal": 708, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 841, - 842 + 672 ] }, { "teal": 709, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 843, - 844, - 845 + 673, + 674 ] }, { "teal": 710, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 846 + 675 ] }, { "teal": 711, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 847 + 676 ] }, { "teal": 712, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 848, - 849 + 677, + 678 ] }, { "teal": 713, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 850 + 679 ] }, { "teal": 714, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 851 + 680 ] }, { "teal": 715, - "source": 240, + "source": "contracts/validatorRegistry.algo.ts:240", "pc": [ - 852, - 853 + 681, + 682 ] }, { - "teal": 716, - "source": 240, + "teal": 720, + "source": "contracts/validatorRegistry.algo.ts:241", "pc": [ - 854 + 683, + 684 ] }, { - "teal": 717, - "source": 240, + "teal": 721, + "source": "contracts/validatorRegistry.algo.ts:241", "pc": [ - 855 + 685 ] }, { - "teal": 718, - "source": 240, + "teal": 722, + "source": "contracts/validatorRegistry.algo.ts:241", "pc": [ - 856, - 857 + 686 ] }, { "teal": 723, - "source": 241, + "source": "contracts/validatorRegistry.algo.ts:241", "pc": [ - 858, - 859 + 687, + 688, + 689 ] }, { - "teal": 724, - "source": 241, + "teal": 728, + "source": "contracts/validatorRegistry.algo.ts:242", "pc": [ - 860 + 690, + 691, + 692 ] }, { - "teal": 725, - "source": 241, + "teal": 729, + "source": "contracts/validatorRegistry.algo.ts:242", "pc": [ - 861 + 693, + 694 ] }, { - "teal": 726, - "source": 241, + "teal": 735, + "source": "contracts/validatorRegistry.algo.ts:244", "pc": [ - 862, - 863, - 864 + 695, + 696 ] }, { - "teal": 731, - "source": 242, + "teal": 736, + "source": "contracts/validatorRegistry.algo.ts:244", "pc": [ - 865, - 866, - 867 + 697, + 698 ] }, { - "teal": 732, - "source": 242, + "teal": 737, + "source": "contracts/validatorRegistry.algo.ts:244", "pc": [ - 868, - 869 + 699 ] }, { "teal": 738, - "source": 244, + "source": "contracts/validatorRegistry.algo.ts:244", "pc": [ - 870, - 871 + 700, + 701, + 702 ] }, { - "teal": 739, - "source": 244, + "teal": 743, + "source": "contracts/validatorRegistry.algo.ts:245", "pc": [ - 872, - 873 + 703, + 704 ] }, { - "teal": 740, - "source": 244, + "teal": 744, + "source": "contracts/validatorRegistry.algo.ts:245", "pc": [ - 874 + 705, + 706 ] }, { - "teal": 741, - "source": 244, + "teal": 749, + "source": "contracts/validatorRegistry.algo.ts:247", "pc": [ - 875, - 876, - 877 + 707, + 708 ] }, { - "teal": 746, - "source": 245, + "teal": 752, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 878, - 879 + 709, + 710 ] }, { - "teal": 747, - "source": 245, + "teal": 755, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 880, - 881 + 711, + 712 ] }, { - "teal": 752, - "source": 247, + "teal": 756, + "source": "contracts/validatorRegistry.algo.ts:236", "pc": [ - 882, - 883 + 713 ] }, { - "teal": 755, - "source": 236, + "teal": 761, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 884, - 885 + 714 ] }, { - "teal": 758, - "source": 236, + "teal": 764, + "source": "contracts/validatorRegistry.algo.ts:255", "pc": [ - 886, - 887 + 715, + 716, + 717 ] }, { - "teal": 759, - "source": 236, + "teal": 765, + "source": "contracts/validatorRegistry.algo.ts:255", "pc": [ - 888 + 718 ] }, { - "teal": 764, - "source": 254, + "teal": 766, + "source": "contracts/validatorRegistry.algo.ts:255", "pc": [ - 889 + 719 ] }, { "teal": 767, - "source": 255, + "source": "contracts/validatorRegistry.algo.ts:255", "pc": [ - 890, - 891, - 892 + 720, + 721 ] }, { "teal": 768, - "source": 255, + "source": "contracts/validatorRegistry.algo.ts:255", "pc": [ - 893 + 722 ] }, { - "teal": 769, - "source": 255, + "teal": 771, + "source": "contracts/validatorRegistry.algo.ts:255", + "errorMessage": "argument 0 (staker) for doesStakerNeedToPayMBR must be a address", "pc": [ - 894 + 723 ] }, { - "teal": 770, - "source": 255, + "teal": 774, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 895, - 896 + 724, + 725, + 726 ] }, { - "teal": 771, - "source": 255, + "teal": 775, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 897 + 727, + 728 ] }, { - "teal": 774, - "source": 255, - "errorMessage": "argument 0 (staker) for doesStakerNeedToPayMBR must be a address", + "teal": 776, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 898 + 729 ] }, { "teal": 777, - "source": 254, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 899, - 900, - 901 + 730, + 731 ] }, { "teal": 778, - "source": 254, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 902, - 903 + 732 ] }, { "teal": 779, - "source": 254, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 904 + 733 ] }, { "teal": 780, - "source": 254, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 905, - 906 + 734 ] }, { "teal": 781, - "source": 254, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 907 + 735 ] }, { "teal": 782, - "source": 254, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 908 + 736 ] }, { - "teal": 783, - "source": 254, + "teal": 789, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 909 + 737, + 738, + 739 ] }, { - "teal": 784, - "source": 254, + "teal": 793, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 910 + 740 ] }, { - "teal": 785, - "source": 254, + "teal": 794, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 911 + 741, + 742 ] }, { - "teal": 792, - "source": 254, + "teal": 795, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 912, - 913, - 914 + 743 ] }, { "teal": 796, - "source": 256, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 915 + 744 ] }, { "teal": 797, - "source": 256, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 916, - 917 + 745 ] }, { "teal": 798, - "source": 256, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 918 + 746 ] }, { "teal": 799, - "source": 256, + "source": "contracts/validatorRegistry.algo.ts:256", "pc": [ - 919 + 747 ] }, { "teal": 800, - "source": 256, + "source": "contracts/validatorRegistry.algo.ts:254", "pc": [ - 920 + 748 ] }, { - "teal": 801, - "source": 256, + "teal": 805, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 921 + 749 ] }, { - "teal": 802, - "source": 256, + "teal": 808, + "source": "contracts/validatorRegistry.algo.ts:266", "pc": [ - 922 + 750, + 751, + 752 ] }, { - "teal": 803, - "source": 254, + "teal": 809, + "source": "contracts/validatorRegistry.algo.ts:266", "pc": [ - 923 + 753 ] }, { - "teal": 808, - "source": 265, + "teal": 810, + "source": "contracts/validatorRegistry.algo.ts:266", "pc": [ - 924 + 754 ] }, { "teal": 811, - "source": 266, + "source": "contracts/validatorRegistry.algo.ts:266", "pc": [ - 925, - 926, - 927 + 755, + 756 ] }, { "teal": 812, - "source": 266, + "source": "contracts/validatorRegistry.algo.ts:266", "pc": [ - 928 + 757 ] }, { - "teal": 813, - "source": 266, + "teal": 815, + "source": "contracts/validatorRegistry.algo.ts:266", + "errorMessage": "argument 0 (staker) for getStakedPoolsForAccount must be a address", "pc": [ - 929 + 758 ] }, { - "teal": 814, - "source": 266, + "teal": 818, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 930, - 931 + 759, + 760, + 761 ] }, { - "teal": 815, - "source": 266, + "teal": 819, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 932 + 762 ] }, { - "teal": 818, - "source": 266, - "errorMessage": "argument 0 (staker) for getStakedPoolsForAccount must be a address", + "teal": 820, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 933 + 763 ] }, { "teal": 821, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 934, - 935, - 936 + 764 ] }, { "teal": 822, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 937 + 765 ] }, { "teal": 823, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 938 + 766 ] }, { "teal": 824, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 939 + 767, + 768, + 769 ] }, { "teal": 825, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 940 + 770 ] }, { "teal": 826, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 941 + 771 ] }, { "teal": 827, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 942, - 943, - 944 + 772 ] }, { "teal": 828, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 945 + 773 ] }, { "teal": 829, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 946 + 774 ] }, { "teal": 830, - "source": 265, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 947 + 775 ] }, { - "teal": 831, - "source": 265, + "teal": 839, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 948 + 776, + 777, + 778 ] }, { - "teal": 832, - "source": 265, + "teal": 842, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 949 + 779 ] }, { - "teal": 833, - "source": 265, + "teal": 843, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 950 + 780, + 781 ] }, { - "teal": 842, - "source": 265, + "teal": 848, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 951, - 952, - 953 + 782 ] }, { - "teal": 845, - "source": 265, + "teal": 849, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 954 + 783, + 784 ] }, { - "teal": 846, - "source": 265, + "teal": 850, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 955, - 956 + 785 ] }, { "teal": 851, - "source": 267, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 957 + 786 ] }, { "teal": 852, - "source": 267, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 958, - 959 + 787 ] }, { "teal": 853, - "source": 267, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 960 + 788 ] }, { "teal": 854, - "source": 267, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 961 + 789 ] }, { "teal": 855, - "source": 267, + "source": "contracts/validatorRegistry.algo.ts:267", "pc": [ - 962 + 790, + 791, + 792 ] }, { - "teal": 856, - "source": 267, + "teal": 860, + "source": "contracts/validatorRegistry.algo.ts:268", "pc": [ - 963 + 793 ] }, { - "teal": 857, - "source": 267, + "teal": 861, + "source": "contracts/validatorRegistry.algo.ts:268", "pc": [ - 964 + 794, + 795, + 796 ] }, { - "teal": 858, - "source": 267, + "teal": 866, + "source": "contracts/validatorRegistry.algo.ts:270", "pc": [ - 965, - 966, - 967 + 797 ] }, { - "teal": 863, - "source": 268, + "teal": 867, + "source": "contracts/validatorRegistry.algo.ts:270", "pc": [ - 968 + 798, + 799 ] }, { - "teal": 864, - "source": 268, + "teal": 871, + "source": "contracts/validatorRegistry.algo.ts:271", "pc": [ - 969, - 970, - 971 + 800 ] }, { - "teal": 869, - "source": 270, + "teal": 872, + "source": "contracts/validatorRegistry.algo.ts:271", "pc": [ - 972 + 801, + 802 ] }, { - "teal": 870, - "source": 270, + "teal": 873, + "source": "contracts/validatorRegistry.algo.ts:271", "pc": [ - 973, - 974 + 803 ] }, { "teal": 874, - "source": 271, + "source": "contracts/validatorRegistry.algo.ts:271", "pc": [ - 975 + 804 ] }, { - "teal": 875, - "source": 271, + "teal": 877, + "source": "contracts/validatorRegistry.algo.ts:271", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 976, - 977 + 805 ] }, { - "teal": 876, - "source": 271, + "teal": 878, + "source": "contracts/validatorRegistry.algo.ts:271", "pc": [ - 978 + 806, + 807 ] }, { - "teal": 877, - "source": 271, + "teal": 882, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 979 + 808 ] }, { - "teal": 880, - "source": 271, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "teal": 883, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 980 + 809, + 810 ] }, { - "teal": 881, - "source": 271, + "teal": 888, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 981, - 982 + 811, + 812 ] }, { - "teal": 885, - "source": 272, + "teal": 889, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 983 + 813, + 814 ] }, { - "teal": 886, - "source": 272, + "teal": 890, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 984, - 985 + 815 ] }, { "teal": 891, - "source": 272, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 986, - 987 + 816, + 817, + 818 ] }, { - "teal": 892, - "source": 272, + "teal": 896, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 988, - 989 + 819, + 820 ] }, { - "teal": 893, - "source": 272, + "teal": 897, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 990 + 821, + 822 ] }, { - "teal": 894, - "source": 272, + "teal": 898, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 991, - 992, - 993 + 823 ] }, { "teal": 899, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 994, - 995 + 824 ] }, { "teal": 900, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 996, - 997 + 825 ] }, { "teal": 901, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 998 + 826 ] }, { "teal": 902, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 999 + 827 ] }, { "teal": 903, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 1000 + 828 ] }, { "teal": 904, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 1001 + 829 ] }, { "teal": 905, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 1002 + 830 ] }, { "teal": 906, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 1003 + 831 ] }, { "teal": 907, - "source": 273, + "source": "contracts/validatorRegistry.algo.ts:273", "pc": [ - 1004 + 832, + 833, + 834 ] }, { - "teal": 908, - "source": 273, + "teal": 912, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1005 + 835, + 836 ] }, { - "teal": 909, - "source": 273, + "teal": 913, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1006 + 837, + 838 ] }, { - "teal": 910, - "source": 273, + "teal": 914, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1007, - 1008, - 1009 + 839, + 840 ] }, { "teal": 915, - "source": 274, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1010, - 1011 + 841 ] }, { "teal": 916, - "source": 274, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1012, - 1013 + 842 ] }, { "teal": 917, - "source": 274, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1014, - 1015 + 843 ] }, { "teal": 918, - "source": 274, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1016 + 844 ] }, { "teal": 919, - "source": 274, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1017 + 845 ] }, { "teal": 920, - "source": 274, + "source": "contracts/validatorRegistry.algo.ts:274", "pc": [ - 1018 + 846, + 847 ] }, { - "teal": 921, - "source": 274, + "teal": 927, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 1019 + 848, + 849 ] }, { - "teal": 922, - "source": 274, + "teal": 928, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 1020 + 850 ] }, { - "teal": 923, - "source": 274, + "teal": 929, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 1021, - 1022 + 851 ] }, { "teal": 930, - "source": 272, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 1023, - 1024 + 852, + 853 ] }, { "teal": 931, - "source": 272, + "source": "contracts/validatorRegistry.algo.ts:272", "pc": [ - 1025 + 854, + 855, + 856 ] }, { - "teal": 932, - "source": 272, + "teal": 936, + "source": "contracts/validatorRegistry.algo.ts:277", "pc": [ - 1026 + 857, + 858 ] }, { - "teal": 933, - "source": 272, + "teal": 940, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 1027, - 1028 + 859, + 860 ] }, { - "teal": 934, - "source": 272, + "teal": 943, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 1029, - 1030, - 1031 + 861, + 862 ] }, { - "teal": 939, - "source": 277, + "teal": 944, + "source": "contracts/validatorRegistry.algo.ts:265", "pc": [ - 1032, - 1033 + 863 ] }, { - "teal": 943, - "source": 265, + "teal": 949, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1034, - 1035 + 864 ] }, { - "teal": 946, - "source": 265, + "teal": 952, + "source": "contracts/validatorRegistry.algo.ts:288", "pc": [ - 1036, - 1037 + 865, + 866, + 867 ] }, { - "teal": 947, - "source": 265, + "teal": 953, + "source": "contracts/validatorRegistry.algo.ts:288", "pc": [ - 1038 + 868 ] }, { - "teal": 952, - "source": 287, + "teal": 956, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1039 + 869, + 870, + 871 ] }, { - "teal": 955, - "source": 288, + "teal": 957, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1040, - 1041, - 1042 + 872 ] }, { - "teal": 956, - "source": 288, + "teal": 958, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1043 + 873 ] }, { "teal": 959, - "source": 287, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1044, - 1045, - 1046 + 874 ] }, { "teal": 960, - "source": 287, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1047 + 875 ] }, { - "teal": 961, - "source": 287, + "teal": 970, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1048 + 876, + 877, + 878 ] }, { - "teal": 962, - "source": 287, + "teal": 974, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1049 + 879, + 880 ] }, { - "teal": 963, - "source": 287, + "teal": 975, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1050 + 881, + 882 ] }, { - "teal": 973, - "source": 287, + "teal": 976, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1051, - 1052, - 1053 + 883 ] }, { "teal": 977, - "source": 289, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1054, - 1055 + 884, + 885 ] }, { "teal": 978, - "source": 289, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1056, - 1057 + 886 ] }, { "teal": 979, - "source": 289, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1058 + 887 ] }, { "teal": 980, - "source": 289, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1059, - 1060 + 888, + 889 ] }, { "teal": 981, - "source": 289, + "source": "contracts/validatorRegistry.algo.ts:289", "pc": [ - 1061 + 890 ] }, { "teal": 982, - "source": 289, + "source": "contracts/validatorRegistry.algo.ts:287", "pc": [ - 1062 + 891 ] }, { - "teal": 983, - "source": 289, + "teal": 987, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1063, - 1064 + 892 ] }, { - "teal": 984, - "source": 289, + "teal": 990, + "source": "contracts/validatorRegistry.algo.ts:293", "pc": [ - 1065 + 893, + 894, + 895 ] }, { - "teal": 985, - "source": 287, + "teal": 991, + "source": "contracts/validatorRegistry.algo.ts:293", "pc": [ - 1066 + 896 ] }, { - "teal": 990, - "source": 292, + "teal": 994, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1067 + 897, + 898, + 899 ] }, { - "teal": 993, - "source": 293, + "teal": 995, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1068, - 1069, - 1070 + 900 ] }, { - "teal": 994, - "source": 293, + "teal": 996, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1071 + 901 ] }, { "teal": 997, - "source": 292, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1072, - 1073, - 1074 + 902 ] }, { "teal": 998, - "source": 292, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1075 + 903 ] }, { - "teal": 999, - "source": 292, + "teal": 1002, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1076 + 904, + 905, + 906 ] }, { - "teal": 1000, - "source": 292, + "teal": 1006, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1077 + 907 ] }, { - "teal": 1001, - "source": 292, + "teal": 1007, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1078 + 908, + 909 ] }, { - "teal": 1005, - "source": 292, + "teal": 1008, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1079, - 1080, - 1081 + 910 ] }, { "teal": 1009, - "source": 294, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1082 + 911 ] }, { "teal": 1010, - "source": 294, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1083, - 1084 + 912 ] }, { "teal": 1011, - "source": 294, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1085 + 913 ] }, { "teal": 1012, - "source": 294, + "source": "contracts/validatorRegistry.algo.ts:294", "pc": [ - 1086 + 914 ] }, { - "teal": 1013, - "source": 294, + "teal": 1015, + "source": "contracts/validatorRegistry.algo.ts:294", + "errorMessage": "the specified validator id doesn't exist", "pc": [ - 1087 + 915 ] }, { - "teal": 1014, - "source": 294, + "teal": 1019, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1088 + 916, + 917 ] }, { - "teal": 1015, - "source": 294, + "teal": 1020, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1089 + 918, + 919 ] }, { - "teal": 1018, - "source": 294, - "errorMessage": "the specified validator id doesn't exist", + "teal": 1021, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1090 + 920 ] }, { "teal": 1022, - "source": 296, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1091, - 1092 + 921, + 922 ] }, { "teal": 1023, - "source": 296, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1093, - 1094 + 923 ] }, { "teal": 1024, - "source": 296, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1095 + 924 ] }, { "teal": 1025, - "source": 296, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1096, - 1097 + 925, + 926 ] }, { "teal": 1026, - "source": 296, + "source": "contracts/validatorRegistry.algo.ts:296", "pc": [ - 1098 + 927 ] }, { "teal": 1027, - "source": 296, + "source": "contracts/validatorRegistry.algo.ts:292", "pc": [ - 1099 + 928 ] }, { - "teal": 1028, - "source": 296, + "teal": 1032, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1100, - 1101 + 929 ] }, { - "teal": 1029, - "source": 296, + "teal": 1035, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1102 + 930, + 931, + 932 ] }, { - "teal": 1030, - "source": 292, + "teal": 1036, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1103 + 933 ] }, { - "teal": 1035, - "source": 299, + "teal": 1037, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1104 + 934 ] }, { "teal": 1038, - "source": 299, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1105, - 1106, - 1107 + 935 ] }, { "teal": 1039, - "source": 299, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1108 + 936 ] }, { "teal": 1040, - "source": 299, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1109 + 937 ] }, { - "teal": 1041, - "source": 299, + "teal": 1044, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1110 + 938, + 939, + 940 ] }, { - "teal": 1042, - "source": 299, + "teal": 1048, + "source": "contracts/validatorRegistry.algo.ts:301", "pc": [ - 1111 + 941, + 942 ] }, { - "teal": 1043, - "source": 299, + "teal": 1049, + "source": "contracts/validatorRegistry.algo.ts:299", "pc": [ - 1112 + 943 ] }, { - "teal": 1047, - "source": 299, + "teal": 1054, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1113, - 1114, - 1115 + 944 ] }, { - "teal": 1051, - "source": 301, + "teal": 1057, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1116, - 1117 + 945, + 946, + 947 ] }, { - "teal": 1052, - "source": 299, + "teal": 1058, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1118 + 948 ] }, { - "teal": 1057, - "source": 312, + "teal": 1059, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1119 + 949 ] }, { "teal": 1060, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1120, - 1121, - 1122 + 950, + 951 ] }, { "teal": 1061, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1123 + 952 ] }, { - "teal": 1062, - "source": 312, + "teal": 1064, + "source": "contracts/validatorRegistry.algo.ts:312", + "errorMessage": "argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)", "pc": [ - 1124 + 953 ] }, { - "teal": 1063, - "source": 312, + "teal": 1067, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1125, - 1126 + 954, + 955, + 956 ] }, { - "teal": 1064, - "source": 312, + "teal": 1068, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1127 + 957, + 958, + 959 ] }, { - "teal": 1067, - "source": 312, - "errorMessage": "argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)", + "teal": 1071, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1128 + 960, + 961 ] }, { - "teal": 1070, - "source": 312, + "teal": 1072, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1129, - 1130, - 1131 + 962 ] }, { - "teal": 1071, - "source": 312, + "teal": 1073, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1132, - 1133, - 1134 + 963 ] }, { "teal": 1074, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1135, - 1136 + 964 ] }, { "teal": 1075, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1137 + 965, + 966 ] }, { "teal": 1076, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1138 + 967 ] }, { "teal": 1077, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1139 + 968 ] }, { - "teal": 1078, - "source": 312, + "teal": 1080, + "source": "contracts/validatorRegistry.algo.ts:312", + "errorMessage": "argument 2 (mbrPayment) for addValidator must be a pay transaction", "pc": [ - 1140, - 1141 + 969 ] }, { - "teal": 1079, - "source": 312, + "teal": 1083, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1142 + 970, + 971, + 972 ] }, { - "teal": 1080, - "source": 312, + "teal": 1084, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1143 + 973 ] }, { - "teal": 1083, - "source": 312, - "errorMessage": "argument 2 (mbrPayment) for addValidator must be a pay transaction", + "teal": 1085, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1144 + 974 ] }, { "teal": 1086, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1145, - 1146, - 1147 + 975 ] }, { "teal": 1087, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1148 + 976 ] }, { "teal": 1088, - "source": 312, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1149 + 977 ] }, { - "teal": 1089, - "source": 312, + "teal": 1100, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1150 + 978, + 979, + 980 ] }, { - "teal": 1090, - "source": 312, + "teal": 1103, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1151 + 981 ] }, { - "teal": 1091, - "source": 312, + "teal": 1107, + "source": "contracts/validatorRegistry.algo.ts:313", "pc": [ - 1152 + 982, + 983 ] }, { - "teal": 1103, - "source": 312, + "teal": 1108, + "source": "contracts/validatorRegistry.algo.ts:313", "pc": [ - 1153, - 1154, - 1155 + 984, + 985, + 986 ] }, { - "teal": 1106, - "source": 312, + "teal": 1113, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1156 + 987, + 988 ] }, { - "teal": 1110, - "source": 313, + "teal": 1114, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1157, - 1158 + 989, + 990 ] }, { - "teal": 1111, - "source": 313, + "teal": 1115, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1159, - 1160, - 1161 + 991, + 992 ] }, { "teal": 1116, - "source": 315, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1162, - 1163 + 993 ] }, { - "teal": 1117, - "source": 315, + "teal": 1119, + "source": "contracts/validatorRegistry.algo.ts:315", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 1164, - 1165 + 994 ] }, { - "teal": 1118, - "source": 315, + "teal": 1122, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1166, - 1167 + 995, + 996 ] }, { - "teal": 1119, - "source": 315, + "teal": 1123, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1168 + 997, + 998 ] }, { - "teal": 1122, - "source": 315, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "teal": 1124, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1169 + 999, + 1000, + 1001 ] }, { "teal": 1125, - "source": 315, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1170, - 1171 + 1002, + 1003, + 1004 ] }, { "teal": 1126, - "source": 315, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1172, - 1173 + 1005 ] }, { "teal": 1127, - "source": 315, + "source": "contracts/validatorRegistry.algo.ts:315", "pc": [ - 1174, - 1175, - 1176 + 1006 ] }, { - "teal": 1128, - "source": 315, + "teal": 1130, + "source": "contracts/validatorRegistry.algo.ts:315", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}", "pc": [ - 1177, - 1178, - 1179 + 1007 ] }, { - "teal": 1129, - "source": 315, + "teal": 1134, + "source": "contracts/validatorRegistry.algo.ts:317", "pc": [ - 1180 + 1008, + 1009 ] }, { - "teal": 1130, - "source": 315, + "teal": 1135, + "source": "contracts/validatorRegistry.algo.ts:317", "pc": [ - 1181 + 1010, + 1011 ] }, { - "teal": 1133, - "source": 315, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}", + "teal": 1136, + "source": "contracts/validatorRegistry.algo.ts:317", "pc": [ - 1182 + 1012, + 1013, + 1014, + 1015, + 1016 ] }, { "teal": 1137, - "source": 317, + "source": "contracts/validatorRegistry.algo.ts:317", "pc": [ - 1183, - 1184 + 1017 ] }, { - "teal": 1138, - "source": 317, + "teal": 1140, + "source": "contracts/validatorRegistry.algo.ts:317", + "errorMessage": "fee must be 10 ALGO or more to prevent spamming of validators", "pc": [ - 1185, - 1186 + 1018 ] }, { - "teal": 1139, - "source": 317, + "teal": 1144, + "source": "contracts/validatorRegistry.algo.ts:320", "pc": [ - 1187, - 1188, - 1189, - 1190, - 1191 + 1019, + 1020 ] }, { - "teal": 1140, - "source": 317, + "teal": 1145, + "source": "contracts/validatorRegistry.algo.ts:320", "pc": [ - 1192 + 1021 ] }, { - "teal": 1143, - "source": 317, - "errorMessage": "fee must be 10 ALGO or more to prevent spamming of validators", + "teal": 1146, + "source": "contracts/validatorRegistry.algo.ts:320", "pc": [ - 1193 + 1022 ] }, { "teal": 1147, - "source": 320, + "source": "contracts/validatorRegistry.algo.ts:320", "pc": [ - 1194, - 1195 + 1023 ] }, { "teal": 1148, - "source": 320, + "source": "contracts/validatorRegistry.algo.ts:320", "pc": [ - 1196 + 1024, + 1025 ] }, { - "teal": 1149, - "source": 320, + "teal": 1152, + "source": "contracts/validatorRegistry.algo.ts:321", "pc": [ - 1197 + 1026, + 1027 ] }, { - "teal": 1150, - "source": 320, + "teal": 1153, + "source": "contracts/validatorRegistry.algo.ts:321", "pc": [ - 1198 + 1028, + 1029 ] }, { - "teal": 1151, - "source": 320, + "teal": 1154, + "source": "contracts/validatorRegistry.algo.ts:321", "pc": [ - 1199, - 1200 + 1030 ] }, { - "teal": 1155, - "source": 321, + "teal": 1158, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1201, - 1202 + 1031 ] }, { - "teal": 1156, - "source": 321, + "teal": 1159, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1203, - 1204 + 1032, + 1033 ] }, { - "teal": 1157, - "source": 321, + "teal": 1160, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1205 + 1034 ] }, { "teal": 1161, - "source": 323, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1206 + 1035 ] }, { "teal": 1162, - "source": 323, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1207, - 1208 + 1036, + 1037, + 1038 ] }, { "teal": 1163, - "source": 323, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1209 + 1039 ] }, { "teal": 1164, - "source": 323, + "source": "contracts/validatorRegistry.algo.ts:323", "pc": [ - 1210 + 1040 ] }, { - "teal": 1165, - "source": 323, + "teal": 1168, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1211, - 1212, - 1213 + 1041 ] }, { - "teal": 1166, - "source": 323, + "teal": 1169, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1214 + 1042, + 1043 ] }, { - "teal": 1167, - "source": 323, + "teal": 1170, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1215 + 1044 ] }, { "teal": 1171, - "source": 324, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1216 + 1045, + 1046 ] }, { "teal": 1172, - "source": 324, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1217, - 1218 + 1047 ] }, { "teal": 1173, - "source": 324, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1219 + 1048 ] }, { "teal": 1174, - "source": 324, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1220, - 1221 + 1049, + 1050 ] }, { "teal": 1175, - "source": 324, + "source": "contracts/validatorRegistry.algo.ts:324", "pc": [ - 1222 + 1051 ] }, { - "teal": 1176, - "source": 324, + "teal": 1179, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1223 + 1052 ] }, { - "teal": 1177, - "source": 324, + "teal": 1180, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1224, - 1225 + 1053, + 1054 ] }, { - "teal": 1178, - "source": 324, + "teal": 1181, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1226 + 1055 ] }, { "teal": 1182, - "source": 325, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1227 + 1056 ] }, { "teal": 1183, - "source": 325, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1228, - 1229 + 1057, + 1058 ] }, { "teal": 1184, - "source": 325, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1230 + 1059 ] }, { "teal": 1185, - "source": 325, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1231 + 1060 ] }, { "teal": 1186, - "source": 325, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1232, - 1233 + 1061, + 1062 ] }, { "teal": 1187, - "source": 325, + "source": "contracts/validatorRegistry.algo.ts:325", "pc": [ - 1234 + 1063 ] }, { - "teal": 1188, - "source": 325, + "teal": 1192, + "source": "contracts/validatorRegistry.algo.ts:328", "pc": [ - 1235 + 1064, + 1065 ] }, { - "teal": 1189, - "source": 325, + "teal": 1193, + "source": "contracts/validatorRegistry.algo.ts:328", "pc": [ - 1236, - 1237 + 1066, + 1067, + 1068 ] }, { - "teal": 1190, - "source": 325, + "teal": 1194, + "source": "contracts/validatorRegistry.algo.ts:328", "pc": [ - 1238 + 1069 ] }, { "teal": 1195, - "source": 328, + "source": "contracts/validatorRegistry.algo.ts:328", "pc": [ - 1239, - 1240 + 1070 ] }, { "teal": 1196, - "source": 328, + "source": "contracts/validatorRegistry.algo.ts:328", "pc": [ - 1241, - 1242, - 1243 + 1071 ] }, { "teal": 1197, - "source": 328, + "source": "contracts/validatorRegistry.algo.ts:328", "pc": [ - 1244 + 1072, + 1073, + 1074 ] }, { - "teal": 1198, - "source": 328, + "teal": 1202, + "source": "contracts/validatorRegistry.algo.ts:330", "pc": [ - 1245 + 1075, + 1076 ] }, { - "teal": 1199, - "source": 328, + "teal": 1203, + "source": "contracts/validatorRegistry.algo.ts:330", "pc": [ - 1246 + 1077, + 1078, + 1079 ] }, { - "teal": 1200, - "source": 328, + "teal": 1204, + "source": "contracts/validatorRegistry.algo.ts:330", "pc": [ - 1247, - 1248, - 1249 + 1080 ] }, { "teal": 1205, - "source": 330, + "source": "contracts/validatorRegistry.algo.ts:330", "pc": [ - 1250, - 1251 + 1081, + 1082, + 1083 ] }, { - "teal": 1206, - "source": 330, + "teal": 1208, + "source": "contracts/validatorRegistry.algo.ts:330", + "errorMessage": "provided NFD must be valid", "pc": [ - 1252, - 1253, - 1254 + 1084 ] }, { - "teal": 1207, - "source": 330, + "teal": 1215, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1255 + 1085, + 1086 ] }, { - "teal": 1208, - "source": 330, + "teal": 1216, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1256, - 1257, - 1258 + 1087, + 1088 ] }, { - "teal": 1211, - "source": 330, - "errorMessage": "provided NFD must be valid", + "teal": 1217, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1259 + 1089, + 1090, + 1091 ] }, { "teal": 1218, - "source": 333, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1260, - 1261 + 1092 ] }, { "teal": 1219, - "source": 333, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1262, - 1263 + 1093, + 1094 ] }, { "teal": 1220, - "source": 333, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1264, - 1265, - 1266 + 1095 ] }, { - "teal": 1221, - "source": 333, + "teal": 1223, + "source": "contracts/validatorRegistry.algo.ts:333", + "errorMessage": "global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')", "pc": [ - 1267 + 1096 ] }, { - "teal": 1222, - "source": 333, + "teal": 1224, + "source": "contracts/validatorRegistry.algo.ts:333", "pc": [ - 1268, - 1269 + 1097 ] }, { - "teal": 1223, - "source": 333, + "teal": 1227, + "source": "contracts/validatorRegistry.algo.ts:332", + "errorMessage": "If specifying NFD, account adding validator must be owner", "pc": [ - 1270 + 1098 ] }, { - "teal": 1226, - "source": 333, - "errorMessage": "global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')", + "teal": 1234, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1271 + 1099, + 1100 ] }, { - "teal": 1227, - "source": 333, + "teal": 1235, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1272 + 1101, + 1102, + 1103 ] }, { - "teal": 1230, - "source": 332, - "errorMessage": "If specifying NFD, account adding validator must be owner", + "teal": 1236, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1273 + 1104 ] }, { "teal": 1237, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1274, - 1275 + 1105, + 1106 ] }, { "teal": 1238, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1276, - 1277, - 1278 + 1107 ] }, { "teal": 1239, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1279 + 1108 ] }, { "teal": 1240, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1280, - 1281 + 1109, + 1110, + 1111 ] }, { "teal": 1241, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:339", "pc": [ - 1282 + 1112, + 1113 ] }, { "teal": 1242, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:339", "pc": [ - 1283 + 1114, + 1115, + 1116 ] }, { "teal": 1243, - "source": 338, + "source": "contracts/validatorRegistry.algo.ts:339", "pc": [ - 1284, - 1285, - 1286 + 1117 ] }, { "teal": 1244, - "source": 339, + "source": "contracts/validatorRegistry.algo.ts:339", "pc": [ - 1287, - 1288 + 1118, + 1119 ] }, { "teal": 1245, - "source": 339, + "source": "contracts/validatorRegistry.algo.ts:339", "pc": [ - 1289, - 1290, - 1291 + 1120 ] }, { "teal": 1246, - "source": 339, + "source": "contracts/validatorRegistry.algo.ts:338", "pc": [ - 1292 + 1121 ] }, { - "teal": 1247, - "source": 339, + "teal": 1249, + "source": "contracts/validatorRegistry.algo.ts:337", "pc": [ - 1293, - 1294 + 1122, + 1123, + 1124 ] }, { - "teal": 1248, - "source": 339, + "teal": 1257, + "source": "contracts/validatorRegistry.algo.ts:343", "pc": [ - 1295 + 1125, + 1126 ] }, { - "teal": 1249, - "source": 338, + "teal": 1258, + "source": "contracts/validatorRegistry.algo.ts:343", "pc": [ - 1296 + 1127, + 1128, + 1129 ] }, { - "teal": 1252, - "source": 337, + "teal": 1259, + "source": "contracts/validatorRegistry.algo.ts:343", "pc": [ - 1297, - 1298, - 1299 + 1130 ] }, { "teal": 1260, - "source": 343, + "source": "contracts/validatorRegistry.algo.ts:343", "pc": [ - 1300, - 1301 + 1131, + 1132, + 1133 ] }, { - "teal": 1261, - "source": 343, + "teal": 1263, + "source": "contracts/validatorRegistry.algo.ts:342", + "errorMessage": "provided NFD App id for gating must be valid NFD", "pc": [ - 1302, - 1303, - 1304 + 1134 ] }, { - "teal": 1262, - "source": 343, + "teal": 1268, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1305 + 1135, + 1136, + 1137, + 1138, + 1139, + 1140 ] }, { - "teal": 1263, - "source": 343, + "teal": 1269, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1306, - 1307, - 1308 + 1141, + 1142 ] }, { - "teal": 1266, - "source": 342, - "errorMessage": "provided NFD App id for gating must be valid NFD", + "teal": 1270, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1309 + 1143 ] }, { "teal": 1271, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1310, - 1311, - 1312, - 1313, - 1314, - 1315 + 1144, + 1145 ] }, { "teal": 1272, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1316, - 1317 + 1146, + 1147, + 1148 ] }, { "teal": 1273, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1318 + 1149 ] }, { "teal": 1274, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1319, - 1320 + 1150, + 1151 ] }, { "teal": 1275, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1321, - 1322, - 1323 + 1152, + 1153, + 1154 ] }, { "teal": 1276, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1324 + 1155 ] }, { "teal": 1277, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1325, - 1326 + 1156 ] }, { "teal": 1278, - "source": 347, + "source": "contracts/validatorRegistry.algo.ts:347", "pc": [ - 1327, - 1328, - 1329 + 1157 ] }, { - "teal": 1279, - "source": 347, + "teal": 1282, + "source": "contracts/validatorRegistry.algo.ts:348", "pc": [ - 1330 + 1158, + 1159 ] }, { - "teal": 1280, - "source": 347, + "teal": 1285, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1331 + 1160, + 1161 ] }, { - "teal": 1281, - "source": 347, + "teal": 1286, + "source": "contracts/validatorRegistry.algo.ts:312", "pc": [ - 1332 + 1162 ] }, { - "teal": 1285, - "source": 348, + "teal": 1291, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1333, - 1334 + 1163, + 1164, + 1165 ] }, { - "teal": 1288, - "source": 312, + "teal": 1292, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1335, - 1336 + 1166 ] }, { - "teal": 1289, - "source": 312, + "teal": 1293, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1337 + 1167 ] }, { "teal": 1294, - "source": 358, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1338, - 1339, - 1340 + 1168, + 1169 ] }, { "teal": 1295, - "source": 358, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1341 + 1170 ] }, { - "teal": 1296, - "source": 358, + "teal": 1298, + "source": "contracts/validatorRegistry.algo.ts:358", + "errorMessage": "argument 0 (manager) for changeValidatorManager must be a address", "pc": [ - 1342 + 1171 ] }, { - "teal": 1297, - "source": 358, + "teal": 1301, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1343, - 1344 + 1172, + 1173, + 1174 ] }, { - "teal": 1298, - "source": 358, + "teal": 1302, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1345 + 1175 ] }, { - "teal": 1301, - "source": 358, - "errorMessage": "argument 0 (manager) for changeValidatorManager must be a address", + "teal": 1305, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1346 + 1176, + 1177, + 1178 ] }, { - "teal": 1304, - "source": 358, + "teal": 1306, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1347, - 1348, - 1349 + 1179 ] }, { - "teal": 1305, - "source": 358, + "teal": 1307, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1350 + 1180 ] }, { - "teal": 1308, - "source": 358, + "teal": 1317, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1351, - 1352, - 1353 + 1181, + 1182, + 1183 ] }, { - "teal": 1309, - "source": 358, + "teal": 1321, + "source": "contracts/validatorRegistry.algo.ts:359", "pc": [ - 1354 + 1184, + 1185 ] }, { - "teal": 1310, - "source": 358, + "teal": 1322, + "source": "contracts/validatorRegistry.algo.ts:359", "pc": [ - 1355 + 1186, + 1187, + 1188 ] }, { - "teal": 1320, - "source": 358, + "teal": 1326, + "source": "contracts/validatorRegistry.algo.ts:360", "pc": [ - 1356, - 1357, - 1358 + 1189, + 1190 ] }, { - "teal": 1324, - "source": 359, + "teal": 1327, + "source": "contracts/validatorRegistry.algo.ts:360", "pc": [ - 1359, - 1360 + 1191, + 1192 ] }, { - "teal": 1325, - "source": 359, + "teal": 1328, + "source": "contracts/validatorRegistry.algo.ts:360", "pc": [ - 1361, - 1362, - 1363 + 1193 ] }, { - "teal": 1329, - "source": 360, + "teal": 1331, + "source": "contracts/validatorRegistry.algo.ts:360", + "errorMessage": "needs to at least be valid address", "pc": [ - 1364, - 1365 + 1194 ] }, { - "teal": 1330, - "source": 360, + "teal": 1335, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1366, - 1367 + 1195, + 1196 ] }, { - "teal": 1331, - "source": 360, + "teal": 1336, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1368 + 1197, + 1198 ] }, { - "teal": 1334, - "source": 360, - "errorMessage": "needs to at least be valid address", + "teal": 1337, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1369 + 1199 ] }, { "teal": 1338, - "source": 361, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1370, - 1371 + 1200, + 1201 ] }, { "teal": 1339, - "source": 361, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1372, - 1373 + 1202 ] }, { "teal": 1340, - "source": 361, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1374 + 1203 ] }, { "teal": 1341, - "source": 361, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1375, - 1376 + 1204, + 1205 ] }, { "teal": 1342, - "source": 361, + "source": "contracts/validatorRegistry.algo.ts:361", "pc": [ - 1377 + 1206 ] }, { "teal": 1343, - "source": 361, + "source": "contracts/validatorRegistry.algo.ts:358", "pc": [ - 1378 + 1207 ] }, { - "teal": 1344, - "source": 361, + "teal": 1348, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1379, - 1380 + 1208, + 1209, + 1210 ] }, { - "teal": 1345, - "source": 361, + "teal": 1349, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1381 + 1211 ] }, { - "teal": 1346, - "source": 358, + "teal": 1352, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1382 + 1212, + 1213, + 1214 ] }, { - "teal": 1351, - "source": 372, + "teal": 1353, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1383, - 1384, - 1385 + 1215 ] }, { - "teal": 1352, - "source": 372, + "teal": 1356, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1386 + 1216, + 1217, + 1218 ] }, { - "teal": 1355, - "source": 372, + "teal": 1357, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1387, - 1388, - 1389 + 1219 ] }, { - "teal": 1356, - "source": 372, + "teal": 1360, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1390 + 1220, + 1221, + 1222 ] }, { - "teal": 1359, - "source": 372, + "teal": 1361, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1391, - 1392, - 1393 + 1223 ] }, { - "teal": 1360, - "source": 372, + "teal": 1362, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1394 + 1224 ] }, { - "teal": 1363, - "source": 372, + "teal": 1373, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1395, - 1396, - 1397 + 1225, + 1226, + 1227 ] }, { - "teal": 1364, - "source": 372, + "teal": 1377, + "source": "contracts/validatorRegistry.algo.ts:373", "pc": [ - 1398 + 1228, + 1229 ] }, { - "teal": 1365, - "source": 372, + "teal": 1378, + "source": "contracts/validatorRegistry.algo.ts:373", "pc": [ - 1399 + 1230, + 1231, + 1232 ] }, { - "teal": 1376, - "source": 372, + "teal": 1382, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1400, - 1401, - 1402 + 1233, + 1234 ] }, { - "teal": 1380, - "source": 373, + "teal": 1383, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1403, - 1404 + 1235, + 1236 ] }, { - "teal": 1381, - "source": 373, + "teal": 1384, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1405, - 1406, - 1407 + 1237 ] }, { "teal": 1385, - "source": 374, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1408, - 1409 + 1238 ] }, { "teal": 1386, - "source": 374, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1410, - 1411 + 1239, + 1240 ] }, { "teal": 1387, - "source": 374, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1412 + 1241 ] }, { "teal": 1388, - "source": 374, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1413 + 1242 ] }, { "teal": 1389, - "source": 374, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1414, - 1415 + 1243, + 1244 ] }, { "teal": 1390, - "source": 374, + "source": "contracts/validatorRegistry.algo.ts:374", "pc": [ - 1416 + 1245 ] }, { - "teal": 1391, - "source": 374, + "teal": 1394, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1417 + 1246, + 1247, + 1248 ] }, { - "teal": 1392, - "source": 374, + "teal": 1395, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1418, - 1419 + 1249, + 1250 ] }, { - "teal": 1393, - "source": 374, + "teal": 1396, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1420 + 1251 ] }, { "teal": 1397, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1421, - 1422, - 1423 + 1252 ] }, { "teal": 1398, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1424, - 1425 + 1253, + 1254 ] }, { "teal": 1399, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1426 + 1255 ] }, { "teal": 1400, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1427 + 1256 ] }, { "teal": 1401, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1428, - 1429 + 1257, + 1258 ] }, { "teal": 1402, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:375", "pc": [ - 1430 + 1259 ] }, { "teal": 1403, - "source": 375, + "source": "contracts/validatorRegistry.algo.ts:372", "pc": [ - 1431 + 1260 ] }, { - "teal": 1404, - "source": 375, + "teal": 1408, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1432, - 1433 + 1261, + 1262, + 1263 ] }, { - "teal": 1405, - "source": 375, + "teal": 1409, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1434 + 1264, + 1265, + 1266 ] }, { - "teal": 1406, - "source": 372, + "teal": 1412, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1435 + 1267, + 1268, + 1269 ] }, { - "teal": 1411, - "source": 386, + "teal": 1413, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1436, - 1437, - 1438 + 1270 ] }, { - "teal": 1412, - "source": 386, + "teal": 1416, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1439, - 1440, - 1441 + 1271, + 1272, + 1273 ] }, { - "teal": 1415, - "source": 386, + "teal": 1417, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1442, - 1443, - 1444 + 1274 ] }, { - "teal": 1416, - "source": 386, + "teal": 1420, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1445 + 1275, + 1276, + 1277 ] }, { - "teal": 1419, - "source": 386, + "teal": 1421, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1446, - 1447, - 1448 + 1278 ] }, { - "teal": 1420, - "source": 386, + "teal": 1422, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1449 + 1279 ] }, { - "teal": 1423, - "source": 386, + "teal": 1433, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1450, - 1451, - 1452 + 1280, + 1281, + 1282 ] }, { - "teal": 1424, - "source": 386, + "teal": 1437, + "source": "contracts/validatorRegistry.algo.ts:387", "pc": [ - 1453 + 1283, + 1284 ] }, { - "teal": 1425, - "source": 386, + "teal": 1438, + "source": "contracts/validatorRegistry.algo.ts:387", "pc": [ - 1454 + 1285, + 1286, + 1287 ] }, { - "teal": 1436, - "source": 386, + "teal": 1442, + "source": "contracts/validatorRegistry.algo.ts:389", "pc": [ - 1455, - 1456, - 1457 + 1288, + 1289 ] }, { - "teal": 1440, - "source": 387, + "teal": 1443, + "source": "contracts/validatorRegistry.algo.ts:389", "pc": [ - 1458, - 1459 + 1290, + 1291, + 1292 ] }, { - "teal": 1441, - "source": 387, + "teal": 1446, + "source": "contracts/validatorRegistry.algo.ts:389", + "errorMessage": "provided NFD must be valid", "pc": [ - 1460, - 1461, - 1462 + 1293 ] }, { - "teal": 1445, - "source": 389, + "teal": 1453, + "source": "contracts/validatorRegistry.algo.ts:392", "pc": [ - 1463, - 1464 + 1294, + 1295 ] }, { - "teal": 1446, - "source": 389, + "teal": 1454, + "source": "contracts/validatorRegistry.algo.ts:392", "pc": [ - 1465, - 1466, - 1467 + 1296, + 1297 ] }, { - "teal": 1449, - "source": 389, - "errorMessage": "provided NFD must be valid", + "teal": 1455, + "source": "contracts/validatorRegistry.algo.ts:392", "pc": [ - 1468 + 1298, + 1299 ] }, { "teal": 1456, - "source": 392, + "source": "contracts/validatorRegistry.algo.ts:392", "pc": [ - 1469, - 1470 + 1300 ] }, { - "teal": 1457, - "source": 392, + "teal": 1459, + "source": "contracts/validatorRegistry.algo.ts:392", + "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')", "pc": [ - 1471, - 1472 + 1301 ] }, { - "teal": 1458, - "source": 392, + "teal": 1460, + "source": "contracts/validatorRegistry.algo.ts:392", "pc": [ - 1473, - 1474 + 1302 ] }, { - "teal": 1459, - "source": 392, + "teal": 1463, + "source": "contracts/validatorRegistry.algo.ts:391", + "errorMessage": "If specifying NFD, account adding validator must be owner", "pc": [ - 1475 + 1303 ] }, { - "teal": 1462, - "source": 392, - "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')", + "teal": 1467, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1476 + 1304, + 1305 ] }, { - "teal": 1463, - "source": 392, + "teal": 1468, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1477 + 1306, + 1307 ] }, { - "teal": 1466, - "source": 391, - "errorMessage": "If specifying NFD, account adding validator must be owner", + "teal": 1469, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1478 + 1308 ] }, { "teal": 1470, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1479, - 1480 + 1309 ] }, { "teal": 1471, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1481, - 1482 + 1310, + 1311 ] }, { "teal": 1472, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1483 + 1312 ] }, { "teal": 1473, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1484 + 1313 ] }, { "teal": 1474, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1485, - 1486 + 1314, + 1315 ] }, { "teal": 1475, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:395", "pc": [ - 1487 + 1316 ] }, { "teal": 1476, - "source": 395, + "source": "contracts/validatorRegistry.algo.ts:386", "pc": [ - 1488 + 1317 ] }, { - "teal": 1477, - "source": 395, + "teal": 1481, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1489, - 1490 + 1318, + 1319, + 1320 ] }, { - "teal": 1478, - "source": 395, + "teal": 1482, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1491 + 1321 ] }, { - "teal": 1479, - "source": 386, + "teal": 1483, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1492 + 1322 ] }, { "teal": 1484, - "source": 402, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1493, - 1494, - 1495 + 1323, + 1324 ] }, { "teal": 1485, - "source": 402, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1496 + 1325 ] }, { - "teal": 1486, - "source": 402, + "teal": 1488, + "source": "contracts/validatorRegistry.algo.ts:402", + "errorMessage": "argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address", "pc": [ - 1497 + 1326 ] }, { - "teal": 1487, - "source": 402, + "teal": 1491, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1498, - 1499 + 1327, + 1328, + 1329 ] }, { - "teal": 1488, - "source": 402, + "teal": 1492, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1500 + 1330 ] }, { - "teal": 1491, - "source": 402, - "errorMessage": "argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address", + "teal": 1495, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1501 + 1331, + 1332, + 1333 ] }, { - "teal": 1494, - "source": 402, + "teal": 1496, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1502, - 1503, - 1504 + 1334 ] }, { - "teal": 1495, - "source": 402, + "teal": 1497, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1505 + 1335 ] }, { - "teal": 1498, - "source": 402, + "teal": 1504, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1506, - 1507, - 1508 + 1336, + 1337, + 1338 ] }, { - "teal": 1499, - "source": 402, + "teal": 1508, + "source": "contracts/validatorRegistry.algo.ts:403", "pc": [ - 1509 + 1339, + 1340 ] }, { - "teal": 1500, - "source": 402, + "teal": 1509, + "source": "contracts/validatorRegistry.algo.ts:403", "pc": [ - 1510 + 1341, + 1342, + 1343 ] }, { - "teal": 1507, - "source": 402, + "teal": 1513, + "source": "contracts/validatorRegistry.algo.ts:404", "pc": [ - 1511, - 1512, - 1513 + 1344, + 1345 ] }, { - "teal": 1511, - "source": 403, + "teal": 1514, + "source": "contracts/validatorRegistry.algo.ts:404", "pc": [ - 1514, - 1515 + 1346, + 1347 ] }, { - "teal": 1512, - "source": 403, + "teal": 1515, + "source": "contracts/validatorRegistry.algo.ts:404", "pc": [ - 1516, - 1517, - 1518 + 1348 ] }, { "teal": 1516, - "source": 404, + "source": "contracts/validatorRegistry.algo.ts:404", "pc": [ - 1519, - 1520 + 1349 ] }, { - "teal": 1517, - "source": 404, + "teal": 1520, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1521, - 1522 + 1350, + 1351, + 1352 ] }, { - "teal": 1518, - "source": 404, + "teal": 1521, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1523 + 1353, + 1354 ] }, { - "teal": 1519, - "source": 404, + "teal": 1522, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1524 + 1355 ] }, { "teal": 1523, - "source": 405, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1525, - 1526, - 1527 + 1356, + 1357 ] }, { "teal": 1524, - "source": 405, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1528, - 1529 + 1358 ] }, { "teal": 1525, - "source": 405, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1530 + 1359 ] }, { "teal": 1526, - "source": 405, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1531, - 1532 + 1360, + 1361 ] }, { "teal": 1527, - "source": 405, + "source": "contracts/validatorRegistry.algo.ts:405", "pc": [ - 1533 + 1362 ] }, { "teal": 1528, - "source": 405, + "source": "contracts/validatorRegistry.algo.ts:402", "pc": [ - 1534 + 1363 ] }, { - "teal": 1529, - "source": 405, + "teal": 1533, + "source": "contracts/validatorRegistry.algo.ts:418", "pc": [ - 1535, - 1536 + 1364, + 1365, + 1366 ] }, { - "teal": 1530, - "source": 405, + "teal": 1534, + "source": "contracts/validatorRegistry.algo.ts:418", "pc": [ - 1537 + 1367 ] }, { - "teal": 1531, - "source": 402, + "teal": 1537, + "source": "contracts/validatorRegistry.algo.ts:417", "pc": [ - 1538 + 1368, + 1369, + 1370 ] }, { - "teal": 1536, - "source": 418, + "teal": 1538, + "source": "contracts/validatorRegistry.algo.ts:417", "pc": [ - 1539, - 1540, - 1541 + 1371 ] }, { - "teal": 1537, - "source": 418, + "teal": 1541, + "source": "contracts/validatorRegistry.algo.ts:416", "pc": [ - 1542 + 1372, + 1373, + 1374 ] }, { - "teal": 1540, - "source": 417, + "teal": 1542, + "source": "contracts/validatorRegistry.algo.ts:416", "pc": [ - 1543, - 1544, - 1545 + 1375 ] }, { - "teal": 1541, - "source": 417, + "teal": 1543, + "source": "contracts/validatorRegistry.algo.ts:416", "pc": [ - 1546 + 1376 ] }, { "teal": 1544, - "source": 416, + "source": "contracts/validatorRegistry.algo.ts:416", "pc": [ - 1547, - 1548, - 1549 + 1377, + 1378 ] }, { "teal": 1545, - "source": 416, + "source": "contracts/validatorRegistry.algo.ts:416", "pc": [ - 1550 + 1379 ] }, { - "teal": 1546, - "source": 416, + "teal": 1548, + "source": "contracts/validatorRegistry.algo.ts:416", + "errorMessage": "argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]", "pc": [ - 1551 + 1380 ] }, { - "teal": 1547, - "source": 416, + "teal": 1551, + "source": "contracts/validatorRegistry.algo.ts:415", "pc": [ - 1552, - 1553 + 1381, + 1382, + 1383 ] }, { - "teal": 1548, - "source": 416, + "teal": 1552, + "source": "contracts/validatorRegistry.algo.ts:415", "pc": [ - 1554 + 1384 ] }, { - "teal": 1551, - "source": 416, - "errorMessage": "argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]", + "teal": 1553, + "source": "contracts/validatorRegistry.algo.ts:415", "pc": [ - 1555 + 1385 ] }, { "teal": 1554, - "source": 415, + "source": "contracts/validatorRegistry.algo.ts:415", "pc": [ - 1556, - 1557, - 1558 + 1386, + 1387 ] }, { "teal": 1555, - "source": 415, + "source": "contracts/validatorRegistry.algo.ts:415", "pc": [ - 1559 + 1388 ] }, { - "teal": 1556, - "source": 415, + "teal": 1558, + "source": "contracts/validatorRegistry.algo.ts:415", + "errorMessage": "argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address", "pc": [ - 1560 + 1389 ] }, { - "teal": 1557, - "source": 415, + "teal": 1561, + "source": "contracts/validatorRegistry.algo.ts:414", "pc": [ - 1561, - 1562 + 1390, + 1391, + 1392 ] }, { - "teal": 1558, - "source": 415, + "teal": 1562, + "source": "contracts/validatorRegistry.algo.ts:414", "pc": [ - 1563 + 1393 ] }, { - "teal": 1561, - "source": 415, - "errorMessage": "argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address", + "teal": 1563, + "source": "contracts/validatorRegistry.algo.ts:414", "pc": [ - 1564 + 1394 ] }, { "teal": 1564, - "source": 414, + "source": "contracts/validatorRegistry.algo.ts:414", "pc": [ - 1565, - 1566, - 1567 + 1395 ] }, { "teal": 1565, - "source": 414, + "source": "contracts/validatorRegistry.algo.ts:414", "pc": [ - 1568 + 1396 ] }, { - "teal": 1566, - "source": 414, + "teal": 1568, + "source": "contracts/validatorRegistry.algo.ts:414", + "errorMessage": "argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8", "pc": [ - 1569 + 1397 ] }, { - "teal": 1567, - "source": 414, + "teal": 1569, + "source": "contracts/validatorRegistry.algo.ts:414", "pc": [ - 1570 + 1398 ] }, { - "teal": 1568, - "source": 414, + "teal": 1572, + "source": "contracts/validatorRegistry.algo.ts:413", "pc": [ - 1571 + 1399, + 1400, + 1401 ] }, { - "teal": 1571, - "source": 414, - "errorMessage": "argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8", + "teal": 1573, + "source": "contracts/validatorRegistry.algo.ts:413", "pc": [ - 1572 + 1402 ] }, { - "teal": 1572, - "source": 414, + "teal": 1576, + "source": "contracts/validatorRegistry.algo.ts:412", "pc": [ - 1573 + 1403, + 1404, + 1405 ] }, { - "teal": 1575, - "source": 413, + "teal": 1577, + "source": "contracts/validatorRegistry.algo.ts:412", "pc": [ - 1574, - 1575, - 1576 + 1406 ] }, { - "teal": 1576, - "source": 413, + "teal": 1578, + "source": "contracts/validatorRegistry.algo.ts:412", "pc": [ - 1577 + 1407 ] }, { - "teal": 1579, - "source": 412, + "teal": 1585, + "source": "contracts/validatorRegistry.algo.ts:412", "pc": [ - 1578, - 1579, - 1580 + 1408, + 1409, + 1410 ] }, { - "teal": 1580, - "source": 412, + "teal": 1589, + "source": "contracts/validatorRegistry.algo.ts:420", "pc": [ - 1581 + 1411, + 1412 ] }, { - "teal": 1581, - "source": 412, + "teal": 1590, + "source": "contracts/validatorRegistry.algo.ts:420", "pc": [ - 1582 + 1413, + 1414, + 1415 ] }, { - "teal": 1588, - "source": 412, + "teal": 1597, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1583, - 1584, - 1585 + 1416, + 1417 ] }, { - "teal": 1592, - "source": 420, + "teal": 1598, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1586, - 1587 + 1418 ] }, { - "teal": 1593, - "source": 420, + "teal": 1599, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1588, - 1589, - 1590 + 1419 ] }, { "teal": 1600, - "source": 423, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1591, - 1592 + 1420 ] }, { "teal": 1601, - "source": 423, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1593 + 1421, + 1422, + 1423 ] }, { "teal": 1602, - "source": 423, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1594 + 1424, + 1425 ] }, { "teal": 1603, - "source": 423, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1595 + 1426, + 1427 ] }, { "teal": 1604, - "source": 423, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1596, - 1597, - 1598 + 1428 ] }, { "teal": 1605, - "source": 423, + "source": "contracts/validatorRegistry.algo.ts:423", "pc": [ - 1599, - 1600 + 1429 ] }, { - "teal": 1606, - "source": 423, + "teal": 1609, + "source": "contracts/validatorRegistry.algo.ts:422", + "errorMessage": "invalid Entry gating type", "pc": [ - 1601, - 1602 + 1430 ] }, { - "teal": 1607, - "source": 423, + "teal": 1614, + "source": "contracts/validatorRegistry.algo.ts:426", "pc": [ - 1603 + 1431, + 1432 ] }, { - "teal": 1608, - "source": 423, + "teal": 1615, + "source": "contracts/validatorRegistry.algo.ts:426", "pc": [ - 1604 + 1433 ] }, { - "teal": 1612, - "source": 422, - "errorMessage": "invalid Entry gating type", + "teal": 1616, + "source": "contracts/validatorRegistry.algo.ts:426", "pc": [ - 1605 + 1434 ] }, { "teal": 1617, - "source": 426, + "source": "contracts/validatorRegistry.algo.ts:426", "pc": [ - 1606, - 1607 + 1435, + 1436, + 1437 ] }, { - "teal": 1618, - "source": 426, + "teal": 1622, + "source": "contracts/validatorRegistry.algo.ts:427", "pc": [ - 1608 + 1438, + 1439 ] }, { - "teal": 1619, - "source": 426, + "teal": 1623, + "source": "contracts/validatorRegistry.algo.ts:427", "pc": [ - 1609 + 1440, + 1441 ] }, { - "teal": 1620, - "source": 426, + "teal": 1624, + "source": "contracts/validatorRegistry.algo.ts:427", "pc": [ - 1610, - 1611, - 1612 + 1442 ] }, { "teal": 1625, - "source": 427, + "source": "contracts/validatorRegistry.algo.ts:427", "pc": [ - 1613, - 1614 + 1443 ] }, { - "teal": 1626, - "source": 427, + "teal": 1632, + "source": "contracts/validatorRegistry.algo.ts:430", "pc": [ - 1615, - 1616 + 1444, + 1445 ] }, { - "teal": 1627, - "source": 427, + "teal": 1633, + "source": "contracts/validatorRegistry.algo.ts:430", "pc": [ - 1617 + 1446, + 1447 ] }, { - "teal": 1628, - "source": 427, + "teal": 1634, + "source": "contracts/validatorRegistry.algo.ts:430", "pc": [ - 1618 + 1448 ] }, { "teal": 1635, - "source": 430, + "source": "contracts/validatorRegistry.algo.ts:430", "pc": [ - 1619, - 1620 + 1449 ] }, { "teal": 1636, - "source": 430, + "source": "contracts/validatorRegistry.algo.ts:430", "pc": [ - 1621, - 1622 + 1450, + 1451, + 1452 ] }, { "teal": 1637, - "source": 430, + "source": "contracts/validatorRegistry.algo.ts:431", "pc": [ - 1623 + 1453, + 1454 ] }, { "teal": 1638, - "source": 430, + "source": "contracts/validatorRegistry.algo.ts:431", "pc": [ - 1624 + 1455, + 1456 ] }, { "teal": 1639, - "source": 430, + "source": "contracts/validatorRegistry.algo.ts:431", "pc": [ - 1625, - 1626, - 1627 + 1457 ] }, { "teal": 1640, - "source": 431, + "source": "contracts/validatorRegistry.algo.ts:430", "pc": [ - 1628, - 1629 + 1458 ] }, { - "teal": 1641, - "source": 431, + "teal": 1643, + "source": "contracts/validatorRegistry.algo.ts:429", "pc": [ - 1630, - 1631 + 1459, + 1460, + 1461 ] }, { - "teal": 1642, - "source": 431, + "teal": 1648, + "source": "contracts/validatorRegistry.algo.ts:433", "pc": [ - 1632 + 1462, + 1463 ] }, { - "teal": 1643, - "source": 430, + "teal": 1649, + "source": "contracts/validatorRegistry.algo.ts:433", "pc": [ - 1633 + 1464, + 1465, + 1466 ] }, { - "teal": 1646, - "source": 429, + "teal": 1650, + "source": "contracts/validatorRegistry.algo.ts:433", "pc": [ - 1634, - 1635, - 1636 + 1467 ] }, { "teal": 1651, - "source": 433, + "source": "contracts/validatorRegistry.algo.ts:433", "pc": [ - 1637, - 1638 + 1468, + 1469, + 1470 ] }, { - "teal": 1652, - "source": 433, + "teal": 1654, + "source": "contracts/validatorRegistry.algo.ts:433", + "errorMessage": "provided NFD App id for gating must be valid NFD", "pc": [ - 1639, - 1640, - 1641 + 1471 ] }, { - "teal": 1653, - "source": 433, + "teal": 1659, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1642 + 1472, + 1473 ] }, { - "teal": 1654, - "source": 433, + "teal": 1660, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1643, - 1644, - 1645 + 1474, + 1475 ] }, { - "teal": 1657, - "source": 433, - "errorMessage": "provided NFD App id for gating must be valid NFD", + "teal": 1661, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1646 + 1476 ] }, { "teal": 1662, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1647, - 1648 + 1477, + 1478, + 1479 ] }, { "teal": 1663, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1649, - 1650 + 1480 ] }, { "teal": 1664, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1651 + 1481, + 1482 ] }, { "teal": 1665, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1652, - 1653, - 1654 + 1483 ] }, { "teal": 1666, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1655 + 1484 ] }, { "teal": 1667, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1656, - 1657 + 1485, + 1486 ] }, { "teal": 1668, - "source": 435, + "source": "contracts/validatorRegistry.algo.ts:435", "pc": [ - 1658 + 1487 ] }, { - "teal": 1669, - "source": 435, + "teal": 1672, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1659 + 1488, + 1489 ] }, { - "teal": 1670, - "source": 435, + "teal": 1673, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1660, - 1661 + 1490, + 1491 ] }, { - "teal": 1671, - "source": 435, + "teal": 1674, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1662 + 1492 ] }, { "teal": 1675, - "source": 436, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1663, - 1664 + 1493, + 1494 ] }, { "teal": 1676, - "source": 436, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1665, - 1666 + 1495 ] }, { "teal": 1677, - "source": 436, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1667 + 1496 ] }, { "teal": 1678, - "source": 436, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1668, - 1669 + 1497, + 1498 ] }, { "teal": 1679, - "source": 436, + "source": "contracts/validatorRegistry.algo.ts:436", "pc": [ - 1670 + 1499 ] }, { - "teal": 1680, - "source": 436, + "teal": 1683, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1671 + 1500, + 1501 ] }, { - "teal": 1681, - "source": 436, + "teal": 1684, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1672, - 1673 + 1502, + 1503 ] }, { - "teal": 1682, - "source": 436, + "teal": 1685, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1674 + 1504 ] }, { "teal": 1686, - "source": 437, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1675, - 1676 + 1505, + 1506 ] }, { "teal": 1687, - "source": 437, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1677, - 1678 + 1507 ] }, { "teal": 1688, - "source": 437, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1679 + 1508 ] }, { "teal": 1689, - "source": 437, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1680, - 1681 + 1509, + 1510 ] }, { "teal": 1690, - "source": 437, + "source": "contracts/validatorRegistry.algo.ts:437", "pc": [ - 1682 + 1511 ] }, { - "teal": 1691, - "source": 437, + "teal": 1694, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1683 + 1512, + 1513 ] }, { - "teal": 1692, - "source": 437, + "teal": 1695, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1684, - 1685 + 1514, + 1515 ] }, { - "teal": 1693, - "source": 437, + "teal": 1696, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1686 + 1516 ] }, { "teal": 1697, - "source": 438, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1687, - 1688 + 1517 ] }, { "teal": 1698, - "source": 438, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1689, - 1690 + 1518, + 1519 ] }, { "teal": 1699, - "source": 438, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1691 + 1520 ] }, { "teal": 1700, - "source": 438, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1692 + 1521 ] }, { "teal": 1701, - "source": 438, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1693, - 1694 + 1522, + 1523 ] }, { "teal": 1702, - "source": 438, + "source": "contracts/validatorRegistry.algo.ts:438", "pc": [ - 1695 + 1524 ] }, { - "teal": 1703, - "source": 438, + "teal": 1706, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1696 + 1525, + 1526, + 1527 ] }, { - "teal": 1704, - "source": 438, + "teal": 1707, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1697, - 1698 + 1528, + 1529 ] }, { - "teal": 1705, - "source": 438, + "teal": 1708, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1699 + 1530 ] }, { "teal": 1709, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1700, - 1701, - 1702 + 1531 ] }, { "teal": 1710, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1703, - 1704 + 1532, + 1533 ] }, { "teal": 1711, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1705 + 1534 ] }, { "teal": 1712, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1706 + 1535 ] }, { "teal": 1713, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1707, - 1708 + 1536, + 1537 ] }, { "teal": 1714, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:439", "pc": [ - 1709 + 1538 ] }, { "teal": 1715, - "source": 439, + "source": "contracts/validatorRegistry.algo.ts:412", "pc": [ - 1710 + 1539 ] }, { - "teal": 1716, - "source": 439, + "teal": 1720, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1711, - 1712 + 1540 ] }, { - "teal": 1717, - "source": 439, + "teal": 1723, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1713 + 1541, + 1542, + 1543 ] }, { - "teal": 1718, - "source": 412, + "teal": 1724, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1714 + 1544 ] }, { - "teal": 1723, - "source": 453, + "teal": 1727, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1715 + 1545, + 1546, + 1547 ] }, { - "teal": 1726, - "source": 453, + "teal": 1728, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1716, - 1717, - 1718 + 1548 ] }, { - "teal": 1727, - "source": 453, + "teal": 1731, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1719 + 1549, + 1550 ] }, { - "teal": 1730, - "source": 453, + "teal": 1732, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1720, - 1721, - 1722 + 1551 ] }, { - "teal": 1731, - "source": 453, + "teal": 1733, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1723 + 1552 ] }, { "teal": 1734, - "source": 453, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1724, - 1725 + 1553 ] }, { "teal": 1735, - "source": 453, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1726 + 1554, + 1555 ] }, { "teal": 1736, - "source": 453, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1727 + 1556 ] }, { "teal": 1737, - "source": 453, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1728 + 1557 ] }, { - "teal": 1738, - "source": 453, + "teal": 1740, + "source": "contracts/validatorRegistry.algo.ts:453", + "errorMessage": "argument 2 (mbrPayment) for addPool must be a pay transaction", "pc": [ - 1729, - 1730 + 1558 ] }, { - "teal": 1739, - "source": 453, + "teal": 1743, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1731 + 1559, + 1560, + 1561 ] }, { - "teal": 1740, - "source": 453, + "teal": 1744, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1732 + 1562 ] }, { - "teal": 1743, - "source": 453, - "errorMessage": "argument 2 (mbrPayment) for addPool must be a pay transaction", + "teal": 1745, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1733 + 1563 ] }, { "teal": 1746, - "source": 453, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1734, - 1735, - 1736 + 1564 ] }, { "teal": 1747, - "source": 453, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1737 + 1565 ] }, { - "teal": 1748, - "source": 453, + "teal": 1760, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1738 + 1566, + 1567, + 1568 ] }, { - "teal": 1749, - "source": 453, + "teal": 1763, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1739 + 1569 ] }, { - "teal": 1750, - "source": 453, + "teal": 1764, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1740 + 1570 ] }, { - "teal": 1763, - "source": 453, + "teal": 1768, + "source": "contracts/validatorRegistry.algo.ts:454", "pc": [ - 1741, - 1742, - 1743 + 1571, + 1572 ] }, { - "teal": 1766, - "source": 453, + "teal": 1769, + "source": "contracts/validatorRegistry.algo.ts:454", "pc": [ - 1744 + 1573, + 1574, + 1575 ] }, { - "teal": 1767, - "source": 453, + "teal": 1774, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1745 + 1576, + 1577 ] }, { - "teal": 1771, - "source": 454, + "teal": 1775, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1746, - 1747 + 1578, + 1579 ] }, { - "teal": 1772, - "source": 454, + "teal": 1776, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1748, - 1749, - 1750 + 1580, + 1581 ] }, { "teal": 1777, - "source": 457, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1751, - 1752 + 1582 ] }, { - "teal": 1778, - "source": 457, + "teal": 1780, + "source": "contracts/validatorRegistry.algo.ts:457", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 1753, - 1754 + 1583 ] }, { - "teal": 1779, - "source": 457, + "teal": 1783, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1755, - 1756 + 1584, + 1585 ] }, { - "teal": 1780, - "source": 457, + "teal": 1784, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1757 + 1586, + 1587 ] }, { - "teal": 1783, - "source": 457, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "teal": 1785, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1758 + 1588, + 1589, + 1590 ] }, { "teal": 1786, - "source": 457, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1759, - 1760 + 1591, + 1592, + 1593 ] }, { "teal": 1787, - "source": 457, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1761, - 1762 + 1594 ] }, { "teal": 1788, - "source": 457, + "source": "contracts/validatorRegistry.algo.ts:457", "pc": [ - 1763, - 1764, - 1765 + 1595 ] }, { - "teal": 1789, - "source": 457, + "teal": 1791, + "source": "contracts/validatorRegistry.algo.ts:457", + "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}", "pc": [ - 1766, - 1767, - 1768 + 1596 ] }, { - "teal": 1790, - "source": 457, + "teal": 1795, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1769 + 1597 ] }, { - "teal": 1791, - "source": 457, + "teal": 1796, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1770 + 1598, + 1599 ] }, { - "teal": 1794, - "source": 457, - "errorMessage": "transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}", + "teal": 1797, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1771 + 1600 ] }, { "teal": 1798, - "source": 459, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1772 + 1601 ] }, { "teal": 1799, - "source": 459, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1773, - 1774 + 1602 ] }, { "teal": 1800, - "source": 459, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1775 + 1603 ] }, { "teal": 1801, - "source": 459, + "source": "contracts/validatorRegistry.algo.ts:459", "pc": [ - 1776 + 1604 ] }, { - "teal": 1802, - "source": 459, + "teal": 1804, + "source": "contracts/validatorRegistry.algo.ts:459", + "errorMessage": "specified validator id isn't valid", "pc": [ - 1777 + 1605 ] }, { - "teal": 1803, - "source": 459, + "teal": 1808, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1778 + 1606, + 1607 ] }, { - "teal": 1804, - "source": 459, + "teal": 1809, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1779 + 1608, + 1609 ] }, { - "teal": 1807, - "source": 459, - "errorMessage": "specified validator id isn't valid", + "teal": 1810, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1780 + 1610 ] }, { "teal": 1811, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1781, - 1782 + 1611, + 1612 ] }, { "teal": 1812, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1783, - 1784 + 1613 ] }, { "teal": 1813, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1785 + 1614 ] }, { "teal": 1814, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1786, - 1787 + 1615, + 1616 ] }, { "teal": 1815, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1788 + 1617 ] }, { "teal": 1816, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1789 + 1618 ] }, { "teal": 1817, - "source": 461, + "source": "contracts/validatorRegistry.algo.ts:461", "pc": [ - 1790, - 1791 + 1619, + 1620 ] }, { - "teal": 1818, - "source": 461, + "teal": 1822, + "source": "contracts/validatorRegistry.algo.ts:462", "pc": [ - 1792 + 1621, + 1622 ] }, { - "teal": 1819, - "source": 461, + "teal": 1823, + "source": "contracts/constants.algo.ts:30", "pc": [ - 1793 + 1623 ] }, { - "teal": 1820, - "source": 461, + "teal": 1824, + "source": "contracts/validatorRegistry.algo.ts:462", "pc": [ - 1794, - 1795 + 1624 ] }, { "teal": 1825, - "source": 462, + "source": "contracts/validatorRegistry.algo.ts:462", "pc": [ - 1796, - 1797 + 1625, + 1626, + 1627 ] }, { - "teal": 1826, - "source": 58, + "teal": 1829, + "source": "contracts/validatorRegistry.algo.ts:463", + "errorMessage": "already at max pool size", "pc": [ - 1798 + 1628 ] }, { - "teal": 1827, - "source": 462, + "teal": 1834, + "source": "contracts/validatorRegistry.algo.ts:465", "pc": [ - 1799 + 1629, + 1630 ] }, { - "teal": 1828, - "source": 462, + "teal": 1835, + "source": "contracts/validatorRegistry.algo.ts:465", "pc": [ - 1800, - 1801, - 1802 + 1631 ] }, { - "teal": 1832, - "source": 463, - "errorMessage": "already at max pool size", + "teal": 1836, + "source": "contracts/validatorRegistry.algo.ts:465", "pc": [ - 1803 + 1632 ] }, { "teal": 1837, - "source": 465, + "source": "contracts/validatorRegistry.algo.ts:465", "pc": [ - 1804, - 1805 + 1633, + 1634 ] }, { - "teal": 1838, - "source": 465, + "teal": 1859, + "source": "contracts/validatorRegistry.algo.ts:468", "pc": [ - 1806 + 1635 ] }, { - "teal": 1839, - "source": 465, + "teal": 1860, + "source": "contracts/validatorRegistry.algo.ts:468", "pc": [ - 1807 + 1636, + 1637 ] }, { - "teal": 1840, - "source": 465, + "teal": 1861, + "source": "contracts/validatorRegistry.algo.ts:468", "pc": [ - 1808, - 1809 + 1638, + 1639 ] }, { - "teal": 1862, - "source": 468, + "teal": 1865, + "source": "contracts/validatorRegistry.algo.ts:469", "pc": [ - 1810 + 1640 ] }, { - "teal": 1863, - "source": 468, + "teal": 1866, + "source": "contracts/validatorRegistry.algo.ts:469", "pc": [ - 1811, - 1812 + 1641, + 1642 ] }, { - "teal": 1864, - "source": 468, + "teal": 1873, + "source": "contracts/validatorRegistry.algo.ts:471", "pc": [ - 1813, - 1814 + 1643, + 1644 ] }, { - "teal": 1868, - "source": 469, + "teal": 1874, + "source": "contracts/validatorRegistry.algo.ts:471", "pc": [ - 1815 + 1645 ] }, { - "teal": 1869, - "source": 469, + "teal": 1875, + "source": "contracts/validatorRegistry.algo.ts:471", "pc": [ - 1816, - 1817 + 1646, + 1647 ] }, { "teal": 1876, - "source": 471, + "source": "contracts/validatorRegistry.algo.ts:471", "pc": [ - 1818, - 1819 + 1648 ] }, { "teal": 1877, - "source": 471, + "source": "contracts/validatorRegistry.algo.ts:471", "pc": [ - 1820 + 1649, + 1650 ] }, { "teal": 1878, - "source": 471, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1821, - 1822 + 1651, + 1652 ] }, { "teal": 1879, - "source": 471, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1823 + 1653, + 1654 ] }, { "teal": 1880, - "source": 471, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1824, - 1825 + 1655, + 1656 ] }, { "teal": 1881, - "source": 472, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1826, - 1827 + 1657 ] }, { - "teal": 1882, - "source": 472, + "teal": 1884, + "source": "contracts/validatorRegistry.algo.ts:472", + "errorMessage": "box value does not exist: this.stakingPoolApprovalProgram.size", "pc": [ - 1828, - 1829 + 1658 ] }, { - "teal": 1883, - "source": 472, + "teal": 1885, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1830, - 1831 + 1659, + 1660 ] }, { - "teal": 1884, - "source": 472, + "teal": 1886, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1832 + 1661 ] }, { "teal": 1887, - "source": 472, - "errorMessage": "box value does not exist: this.stakingPoolApprovalProgram.size", + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1833 + 1662 ] }, { "teal": 1888, - "source": 472, + "source": "contracts/validatorRegistry.algo.ts:472", "pc": [ - 1834, - 1835 + 1663, + 1664 ] }, { - "teal": 1889, - "source": 472, + "teal": 1892, + "source": "contracts/validatorRegistry.algo.ts:474", "pc": [ - 1836 + 1665, + 1666, + 1667 ] }, { - "teal": 1890, - "source": 472, + "teal": 1893, + "source": "contracts/validatorRegistry.algo.ts:474", "pc": [ - 1837 + 1668, + 1669 ] }, { - "teal": 1891, - "source": 472, + "teal": 1897, + "source": "contracts/validatorRegistry.algo.ts:475", "pc": [ - 1838, - 1839 + 1670, + 1671 ] }, { - "teal": 1895, - "source": 474, + "teal": 1898, + "source": "contracts/validatorRegistry.algo.ts:475", "pc": [ - 1840, - 1841, - 1842 + 1672, + 1673 ] }, { - "teal": 1896, - "source": 474, + "teal": 1902, + "source": "contracts/validatorRegistry.algo.ts:476", "pc": [ - 1843, - 1844 + 1674, + 1675 ] }, { - "teal": 1900, - "source": 475, + "teal": 1903, + "source": "contracts/validatorRegistry.algo.ts:476", "pc": [ - 1845, - 1846 + 1676, + 1677 ] }, { - "teal": 1901, - "source": 475, + "teal": 1907, + "source": "contracts/validatorRegistry.algo.ts:477", "pc": [ - 1847, - 1848 + 1678, + 1679 ] }, { - "teal": 1905, - "source": 476, + "teal": 1908, + "source": "contracts/validatorRegistry.algo.ts:477", "pc": [ - 1849, - 1850 + 1680, + 1681 ] }, { - "teal": 1906, - "source": 476, + "teal": 1919, + "source": "contracts/validatorRegistry.algo.ts:480", "pc": [ - 1851, - 1852 + 1682, + 1683, + 1684, + 1685, + 1686, + 1687 ] }, { - "teal": 1910, - "source": 477, + "teal": 1920, + "source": "contracts/validatorRegistry.algo.ts:480", "pc": [ - 1853, - 1854 + 1688, + 1689 ] }, { - "teal": 1911, - "source": 477, + "teal": 1921, + "source": "contracts/validatorRegistry.algo.ts:481", "pc": [ - 1855, - 1856 + 1690, + 1691, + 1692 ] }, { "teal": 1922, - "source": 480, + "source": "contracts/validatorRegistry.algo.ts:481", "pc": [ - 1857, - 1858, - 1859, - 1860, - 1861, - 1862 + 1693 ] }, { "teal": 1923, - "source": 480, + "source": "contracts/validatorRegistry.algo.ts:481", "pc": [ - 1863, - 1864 + 1694, + 1695 ] }, { "teal": 1924, - "source": 481, + "source": "contracts/validatorRegistry.algo.ts:482", "pc": [ - 1865, - 1866, - 1867 + 1696, + 1697 ] }, { "teal": 1925, - "source": 481, + "source": "contracts/validatorRegistry.algo.ts:482", "pc": [ - 1868 + 1698 ] }, { "teal": 1926, - "source": 481, + "source": "contracts/validatorRegistry.algo.ts:482", "pc": [ - 1869, - 1870 + 1699, + 1700 ] }, { "teal": 1927, - "source": 482, + "source": "contracts/validatorRegistry.algo.ts:483", "pc": [ - 1871, - 1872 + 1701, + 1702 ] }, { "teal": 1928, - "source": 482, + "source": "contracts/validatorRegistry.algo.ts:483", "pc": [ - 1873 + 1703 ] }, { "teal": 1929, - "source": 482, + "source": "contracts/validatorRegistry.algo.ts:483", "pc": [ - 1874, - 1875 + 1704, + 1705 ] }, { "teal": 1930, - "source": 483, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1876, - 1877 + 1706, + 1707 ] }, { "teal": 1931, - "source": 483, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1878 + 1708 ] }, { "teal": 1932, - "source": 483, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1879, - 1880 + 1709 ] }, { "teal": 1933, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1881, - 1882 + 1710, + 1711 ] }, { "teal": 1934, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1883 + 1712 ] }, { "teal": 1935, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1884 + 1713 ] }, { "teal": 1936, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1885, - 1886 + 1714, + 1715 ] }, { "teal": 1937, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1887 + 1716 ] }, { "teal": 1938, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1888 + 1717 ] }, { "teal": 1939, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1889, - 1890 + 1718 ] }, { "teal": 1940, - "source": 484, + "source": "contracts/validatorRegistry.algo.ts:484", "pc": [ - 1891 + 1719, + 1720 ] }, { - "teal": 1941, - "source": 484, + "teal": 1943, + "source": "contracts/validatorRegistry.algo.ts:468", "pc": [ - 1892 + 1721 ] }, { - "teal": 1942, - "source": 484, + "teal": 1944, + "source": "contracts/validatorRegistry.algo.ts:468", "pc": [ - 1893 + 1722, + 1723 ] }, { - "teal": 1943, - "source": 484, + "teal": 1947, + "source": "contracts/validatorRegistry.algo.ts:468", "pc": [ - 1894, - 1895 + 1724 ] }, { - "teal": 1946, - "source": 468, + "teal": 1951, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1896 + 1725, + 1726 ] }, { - "teal": 1947, - "source": 468, + "teal": 1952, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1897, - 1898 + 1727, + 1728 ] }, { - "teal": 1950, - "source": 468, + "teal": 1953, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1899 + 1729 ] }, { "teal": 1954, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1900, - 1901 + 1730, + 1731, + 1732 ] }, { "teal": 1955, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1902, - 1903 + 1733 ] }, { "teal": 1956, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1904 + 1734, + 1735 ] }, { "teal": 1957, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1905, - 1906, - 1907 + 1736 ] }, { "teal": 1958, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1908 + 1737 ] }, { "teal": 1959, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1909, - 1910 + 1738, + 1739 ] }, { "teal": 1960, - "source": 488, + "source": "contracts/validatorRegistry.algo.ts:488", "pc": [ - 1911 + 1740 ] }, { - "teal": 1961, - "source": 488, + "teal": 1964, + "source": "contracts/validatorRegistry.algo.ts:491", "pc": [ - 1912 + 1741, + 1742 ] }, { - "teal": 1962, - "source": 488, + "teal": 1965, + "source": "contracts/validatorRegistry.algo.ts:491", "pc": [ - 1913, - 1914 + 1743, + 1744 ] }, { - "teal": 1963, - "source": 488, + "teal": 1969, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1915 + 1745, + 1746 ] }, { - "teal": 1967, - "source": 491, + "teal": 1970, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1916, - 1917 + 1747, + 1748 ] }, { - "teal": 1968, - "source": 491, + "teal": 1971, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1918, - 1919 + 1749 ] }, { "teal": 1972, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1920, - 1921 + 1750 ] }, { "teal": 1973, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1922, - 1923 + 1751, + 1752 ] }, { "teal": 1974, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1924 + 1753 ] }, { "teal": 1975, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1925 + 1754 ] }, { "teal": 1976, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1926, - 1927 + 1755 ] }, { "teal": 1977, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1928 + 1756 ] }, { "teal": 1978, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1929 + 1757, + 1758 ] }, { "teal": 1979, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1930 + 1759 ] }, { "teal": 1980, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1931 + 1760 ] }, { "teal": 1981, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1932, - 1933 + 1761, + 1762 ] }, { "teal": 1982, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1934 + 1763 ] }, { "teal": 1983, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1935 + 1764 ] }, { "teal": 1984, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1936, - 1937 + 1765, + 1766 ] }, { "teal": 1985, - "source": 492, + "source": "contracts/validatorRegistry.algo.ts:492", "pc": [ - 1938 + 1767 ] }, { - "teal": 1986, - "source": 492, + "teal": 1989, + "source": "contracts/validatorRegistry.algo.ts:493", "pc": [ - 1939 + 1768, + 1769 ] }, { - "teal": 1987, - "source": 492, + "teal": 1990, + "source": "contracts/validatorRegistry.algo.ts:493", "pc": [ - 1940, - 1941 + 1770, + 1771 ] }, { - "teal": 1988, - "source": 492, + "teal": 1991, + "source": "contracts/validatorRegistry.algo.ts:493", "pc": [ - 1942 + 1772, + 1773 ] }, { "teal": 1992, - "source": 493, + "source": "contracts/validatorRegistry.algo.ts:493", "pc": [ - 1943, - 1944 + 1774, + 1775, + 1776 ] }, { - "teal": 1993, - "source": 493, + "teal": 2000, + "source": "contracts/validatorRegistry.algo.ts:495", "pc": [ - 1945, - 1946 + 1777, + 1778, + 1779, + 1780, + 1781, + 1782 ] }, { - "teal": 1994, - "source": 493, + "teal": 2001, + "source": "contracts/validatorRegistry.algo.ts:496", "pc": [ - 1947, - 1948 + 1783, + 1784 ] }, { - "teal": 1995, - "source": 493, + "teal": 2002, + "source": "contracts/validatorRegistry.algo.ts:496", "pc": [ - 1949, - 1950, - 1951 + 1785 ] }, { "teal": 2003, - "source": 495, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1952, - 1953, - 1954, - 1955, - 1956, - 1957 + 1786, + 1787 ] }, { "teal": 2004, - "source": 496, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1958, - 1959 + 1788 ] }, { "teal": 2005, - "source": 496, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1960 + 1789 ] }, { "teal": 2006, - "source": 497, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1961, - 1962 + 1790 ] }, { "teal": 2007, - "source": 497, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1963 + 1791, + 1792 ] }, { "teal": 2008, - "source": 497, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1964 + 1793 ] }, { - "teal": 2009, - "source": 497, + "teal": 2011, + "source": "contracts/validatorRegistry.algo.ts:497", + "errorMessage": "numPools as uint16 overflowed 16 bits", "pc": [ - 1965 + 1794 ] }, { - "teal": 2010, - "source": 497, + "teal": 2012, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1966, - 1967 + 1795, + 1796, + 1797 ] }, { - "teal": 2011, - "source": 497, + "teal": 2013, + "source": "contracts/validatorRegistry.algo.ts:497", "pc": [ - 1968 + 1798 ] }, { "teal": 2014, - "source": 497, - "errorMessage": "numPools as uint16 overflowed 16 bits", + "source": "contracts/validatorRegistry.algo.ts:498", "pc": [ - 1969 + 1799, + 1800 ] }, { "teal": 2015, - "source": 497, + "source": "contracts/validatorRegistry.algo.ts:498", "pc": [ - 1970, - 1971, - 1972 + 1801 ] }, { "teal": 2016, - "source": 497, + "source": "contracts/validatorRegistry.algo.ts:498", "pc": [ - 1973 + 1802 ] }, { "teal": 2017, - "source": 498, + "source": "contracts/validatorRegistry.algo.ts:495", "pc": [ - 1974, - 1975 + 1803 ] }, { "teal": 2018, - "source": 498, + "source": "contracts/validatorRegistry.algo.ts:495", "pc": [ - 1976 + 1804 ] }, { - "teal": 2019, - "source": 498, + "teal": 2022, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1977 + 1805, + 1806 ] }, { - "teal": 2020, - "source": 495, + "teal": 2023, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1978 + 1807 ] }, { - "teal": 2021, - "source": 495, + "teal": 2024, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1979 + 1808, + 1809 ] }, { "teal": 2025, - "source": 501, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1980, - 1981 + 1810 ] }, { "teal": 2026, - "source": 501, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1982 + 1811 ] }, { "teal": 2027, - "source": 501, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1983, - 1984 + 1812, + 1813 ] }, { "teal": 2028, - "source": 501, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1985 + 1814 ] }, { "teal": 2029, - "source": 501, + "source": "contracts/validatorRegistry.algo.ts:501", "pc": [ - 1986 + 1815 ] }, { - "teal": 2030, - "source": 501, + "teal": 2032, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1987, - 1988 + 1816, + 1817 ] }, { - "teal": 2031, - "source": 501, + "teal": 2035, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1989 + 1818, + 1819 ] }, { - "teal": 2032, - "source": 501, + "teal": 2036, + "source": "contracts/validatorRegistry.algo.ts:453", "pc": [ - 1990 + 1820 ] }, { - "teal": 2035, - "source": 453, + "teal": 2041, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 1991, - 1992 + 1821 ] }, { - "teal": 2038, - "source": 453, + "teal": 2044, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 1993, - 1994 + 1822, + 1823, + 1824 ] }, { - "teal": 2039, - "source": 453, + "teal": 2045, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 1995 + 1825 ] }, { - "teal": 2044, - "source": 513, + "teal": 2048, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 1996 + 1826, + 1827, + 1828 ] }, { - "teal": 2047, - "source": 513, + "teal": 2049, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 1997, - 1998, - 1999 + 1829 ] }, { - "teal": 2048, - "source": 513, + "teal": 2052, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2000 + 1830, + 1831 ] }, { - "teal": 2051, - "source": 513, + "teal": 2053, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2001, - 2002, - 2003 + 1832 ] }, { - "teal": 2052, - "source": 513, + "teal": 2054, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2004 + 1833 ] }, { "teal": 2055, - "source": 513, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2005, - 2006 + 1834 ] }, { "teal": 2056, - "source": 513, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2007 + 1835, + 1836 ] }, { "teal": 2057, - "source": 513, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2008 + 1837 ] }, { "teal": 2058, - "source": 513, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2009 + 1838 ] }, { - "teal": 2059, - "source": 513, + "teal": 2061, + "source": "contracts/validatorRegistry.algo.ts:513", + "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", "pc": [ - 2010, - 2011 + 1839 ] }, { - "teal": 2060, - "source": 513, + "teal": 2064, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2012 + 1840, + 1841, + 1842 ] }, { - "teal": 2061, - "source": 513, + "teal": 2065, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2013 + 1843 ] }, { - "teal": 2064, - "source": 513, - "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", + "teal": 2066, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2014 + 1844 ] }, { "teal": 2067, - "source": 513, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2015, - 2016, - 2017 + 1845 ] }, { "teal": 2068, - "source": 513, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2018 + 1846 ] }, { - "teal": 2069, - "source": 513, + "teal": 2080, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2019 + 1847, + 1848, + 1849 ] }, { - "teal": 2070, - "source": 513, + "teal": 2083, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2020 + 1850 ] }, { - "teal": 2071, - "source": 513, + "teal": 2084, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2021 + 1851, + 1852 ] }, { - "teal": 2083, - "source": 513, + "teal": 2088, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2022, - 2023, - 2024 + 1853 ] }, { - "teal": 2086, - "source": 513, + "teal": 2089, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2025 + 1854, + 1855 ] }, { - "teal": 2087, - "source": 513, + "teal": 2090, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2026, - 2027 + 1856 ] }, { "teal": 2091, - "source": 514, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2028 + 1857 ] }, { "teal": 2092, - "source": 514, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2029, - 2030 + 1858 ] }, { "teal": 2093, - "source": 514, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2031 + 1859 ] }, { "teal": 2094, - "source": 514, + "source": "contracts/validatorRegistry.algo.ts:514", "pc": [ - 2032 + 1860 ] }, { - "teal": 2095, - "source": 514, + "teal": 2097, + "source": "contracts/validatorRegistry.algo.ts:514", + "errorMessage": "specified validator id isn't valid", "pc": [ - 2033 + 1861 ] }, { - "teal": 2096, - "source": 514, + "teal": 2102, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2034 + 1862, + 1863 ] }, { - "teal": 2097, - "source": 514, + "teal": 2103, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2035 + 1864 ] }, { - "teal": 2100, - "source": 514, - "errorMessage": "specified validator id isn't valid", + "teal": 2104, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2036 + 1865 ] }, { "teal": 2105, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2037, - 2038 + 1866, + 1867 ] }, { "teal": 2106, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2039 + 1868 ] }, { "teal": 2107, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2040 + 1869 ] }, { "teal": 2108, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2041, - 2042 + 1870, + 1871 ] }, { "teal": 2109, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2043 + 1872 ] }, { "teal": 2110, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2044 + 1873 ] }, { "teal": 2111, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2045, - 2046 + 1874 ] }, { "teal": 2112, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2047 + 1875 ] }, { "teal": 2113, - "source": 517, + "source": "contracts/validatorRegistry.algo.ts:517", "pc": [ - 2048 + 1876, + 1877, + 1878 ] }, { - "teal": 2114, - "source": 517, + "teal": 2121, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2049 + 1879, + 1880 ] }, { - "teal": 2115, - "source": 517, + "teal": 2122, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2050 + 1881 ] }, { - "teal": 2116, - "source": 517, + "teal": 2123, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2051, - 2052, - 2053 + 1882 ] }, { "teal": 2124, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2054, - 2055 + 1883, + 1884 ] }, { "teal": 2125, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2056 + 1885 ] }, { "teal": 2126, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2057 + 1886 ] }, { "teal": 2127, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2058, - 2059 + 1887, + 1888 ] }, { "teal": 2128, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2060 + 1889 ] }, { "teal": 2129, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2061 + 1890 ] }, { "teal": 2130, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2062, - 2063 + 1891, + 1892 ] }, { "teal": 2131, - "source": 520, + "source": "contracts/validatorRegistry.algo.ts:520", "pc": [ - 2064 + 1893 ] }, { - "teal": 2132, - "source": 520, + "teal": 2134, + "source": "contracts/validatorRegistry.algo.ts:519", + "errorMessage": "can't stake with a validator that is past its sunsetting time", "pc": [ - 2065 + 1894 ] }, { - "teal": 2133, - "source": 520, + "teal": 2139, + "source": "contracts/validatorRegistry.algo.ts:525", "pc": [ - 2066, - 2067 + 1895, + 1896 ] }, { - "teal": 2134, - "source": 520, + "teal": 2140, + "source": "contracts/validatorRegistry.algo.ts:525", "pc": [ - 2068 + 1897, + 1898 ] }, { - "teal": 2137, - "source": 519, - "errorMessage": "can't stake with a validator that is past its sunsetting time", + "teal": 2148, + "source": "contracts/validatorRegistry.algo.ts:529", "pc": [ - 2069 + 1899, + 1900 ] }, { - "teal": 2142, - "source": 525, + "teal": 2149, + "source": "contracts/validatorRegistry.algo.ts:530", "pc": [ - 2070, - 2071 + 1901, + 1902 ] }, { - "teal": 2143, - "source": 525, + "teal": 2150, + "source": "contracts/validatorRegistry.algo.ts:530", "pc": [ - 2072, - 2073 + 1903, + 1904 ] }, { "teal": 2151, - "source": 529, + "source": "contracts/validatorRegistry.algo.ts:530", "pc": [ - 2074, - 2075 + 1905 ] }, { - "teal": 2152, - "source": 530, + "teal": 2154, + "source": "contracts/validatorRegistry.algo.ts:530", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", "pc": [ - 2076, - 2077 + 1906 ] }, { - "teal": 2153, - "source": 530, + "teal": 2157, + "source": "contracts/validatorRegistry.algo.ts:529", "pc": [ - 2078, - 2079 + 1907, + 1908 ] }, { - "teal": 2154, - "source": 530, + "teal": 2158, + "source": "contracts/validatorRegistry.algo.ts:531", "pc": [ - 2080 + 1909, + 1910 ] }, { - "teal": 2157, - "source": 530, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", + "teal": 2159, + "source": "contracts/validatorRegistry.algo.ts:531", "pc": [ - 2081 + 1911, + 1912 ] }, { "teal": 2160, - "source": 529, + "source": "contracts/validatorRegistry.algo.ts:531", "pc": [ - 2082, - 2083 + 1913 ] }, { - "teal": 2161, - "source": 531, + "teal": 2163, + "source": "contracts/validatorRegistry.algo.ts:531", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 2084, - 2085 + 1914 ] }, { - "teal": 2162, - "source": 531, + "teal": 2167, + "source": "contracts/validatorRegistry.algo.ts:537", "pc": [ - 2086, - 2087 + 1915, + 1916 ] }, { - "teal": 2163, - "source": 531, + "teal": 2168, + "source": "contracts/validatorRegistry.algo.ts:537", "pc": [ - 2088 + 1917, + 1918 ] }, { - "teal": 2166, - "source": 531, - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", + "teal": 2169, + "source": "contracts/validatorRegistry.algo.ts:537", "pc": [ - 2089 + 1919, + 1920, + 1921 ] }, { - "teal": 2170, - "source": 537, + "teal": 2173, + "source": "contracts/validatorRegistry.algo.ts:539", "pc": [ - 2090, - 2091 - ] + 1922, + 1923 + ] }, { - "teal": 2171, - "source": 537, + "teal": 2174, + "source": "contracts/validatorRegistry.algo.ts:539", "pc": [ - 2092, - 2093 + 1924, + 1925 ] }, { - "teal": 2172, - "source": 537, + "teal": 2175, + "source": "contracts/validatorRegistry.algo.ts:539", "pc": [ - 2094, - 2095, - 2096 + 1926, + 1927 ] }, { - "teal": 2176, - "source": 539, + "teal": 2179, + "source": "contracts/validatorRegistry.algo.ts:540", "pc": [ - 2097, - 2098 + 1928 ] }, { - "teal": 2177, - "source": 539, + "teal": 2180, + "source": "contracts/validatorRegistry.algo.ts:540", "pc": [ - 2099, - 2100 + 1929, + 1930 ] }, { - "teal": 2178, - "source": 539, + "teal": 2185, + "source": "contracts/validatorRegistry.algo.ts:542", "pc": [ - 2101, - 2102 + 1931, + 1932 ] }, { - "teal": 2182, - "source": 540, + "teal": 2186, + "source": "contracts/validatorRegistry.algo.ts:542", "pc": [ - 2103 + 1933, + 1934, + 1935 ] }, { - "teal": 2183, - "source": 540, + "teal": 2187, + "source": "contracts/validatorRegistry.algo.ts:542", "pc": [ - 2104, - 2105 + 1936, + 1937, + 1938 ] }, { - "teal": 2188, - "source": 542, + "teal": 2192, + "source": "contracts/validatorRegistry.algo.ts:545", "pc": [ - 2106, - 2107 + 1939, + 1940, + 1941 ] }, { - "teal": 2189, - "source": 542, + "teal": 2193, + "source": "contracts/validatorRegistry.algo.ts:545", "pc": [ - 2108, - 2109, - 2110 + 1942, + 1943, + 1944 ] }, { - "teal": 2190, - "source": 542, + "teal": 2194, + "source": "contracts/validatorRegistry.algo.ts:545", "pc": [ - 2111, - 2112, - 2113 + 1945 ] }, { "teal": 2195, - "source": 545, + "source": "contracts/validatorRegistry.algo.ts:545", "pc": [ - 2114, - 2115, - 2116 + 1946, + 1947 ] }, { - "teal": 2196, - "source": 545, + "teal": 2199, + "source": "contracts/validatorRegistry.algo.ts:546", "pc": [ - 2117, - 2118, - 2119 + 1948, + 1949 ] }, { - "teal": 2197, - "source": 545, + "teal": 2200, + "source": "contracts/validatorRegistry.algo.ts:546", "pc": [ - 2120 + 1950, + 1951 ] }, { - "teal": 2198, - "source": 545, + "teal": 2201, + "source": "contracts/validatorRegistry.algo.ts:546", "pc": [ - 2121, - 2122 + 1952 ] }, { "teal": 2202, - "source": 546, + "source": "contracts/validatorRegistry.algo.ts:546", "pc": [ - 2123, - 2124 + 1953, + 1954 ] }, { - "teal": 2203, - "source": 546, + "teal": 2206, + "source": "contracts/validatorRegistry.algo.ts:547", "pc": [ - 2125, - 2126 + 1955 ] }, { - "teal": 2204, - "source": 546, + "teal": 2207, + "source": "contracts/validatorRegistry.algo.ts:547", "pc": [ - 2127 + 1956, + 1957 ] }, { - "teal": 2205, - "source": 546, + "teal": 2208, + "source": "contracts/validatorRegistry.algo.ts:547", "pc": [ - 2128, - 2129 + 1958 ] }, { "teal": 2209, - "source": 547, + "source": "contracts/validatorRegistry.algo.ts:547", "pc": [ - 2130 + 1959, + 1960, + 1961 ] }, { "teal": 2210, - "source": 547, + "source": "contracts/validatorRegistry.algo.ts:547", "pc": [ - 2131, - 2132 + 1962 ] }, { "teal": 2211, - "source": 547, + "source": "contracts/validatorRegistry.algo.ts:547", "pc": [ - 2133 + 1963 ] }, { - "teal": 2212, - "source": 547, + "teal": 2219, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2134, - 2135, - 2136 + 1964, + 1965 ] }, { - "teal": 2213, - "source": 547, + "teal": 2220, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2137 + 1966 ] }, { - "teal": 2214, - "source": 547, + "teal": 2221, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2138 + 1967 ] }, { "teal": 2222, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2139, - 2140 + 1968, + 1969 ] }, { "teal": 2223, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2141 + 1970 ] }, { "teal": 2224, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2142 + 1971 ] }, { "teal": 2225, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2143, - 2144 + 1972, + 1973 ] }, { "teal": 2226, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2145 + 1974 ] }, { "teal": 2227, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2146 + 1975 ] }, { "teal": 2228, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2147, - 2148 + 1976, + 1977 ] }, { "teal": 2229, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2149 + 1978 ] }, { "teal": 2230, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2150 + 1979, + 1980, + 1981 ] }, { "teal": 2231, - "source": 552, + "source": "contracts/validatorRegistry.algo.ts:552", "pc": [ - 2151, - 2152 + 1982 ] }, { - "teal": 2232, - "source": 552, + "teal": 2234, + "source": "contracts/validatorRegistry.algo.ts:551", + "errorMessage": "total staked for all of a validators pools may not exceed hard cap", "pc": [ - 2153 + 1983 ] }, { - "teal": 2233, - "source": 552, + "teal": 2238, + "source": "contracts/validatorRegistry.algo.ts:558", "pc": [ - 2154, - 2155, - 2156 + 1984, + 1985 ] }, { - "teal": 2234, - "source": 552, + "teal": 2239, + "source": "contracts/validatorRegistry.algo.ts:558", "pc": [ - 2157 + 1986, + 1987 ] }, { - "teal": 2237, - "source": 551, - "errorMessage": "total staked for all of a validators pools may not exceed hard cap", + "teal": 2240, + "source": "contracts/validatorRegistry.algo.ts:558", "pc": [ - 2158 + 1988, + 1989 ] }, { "teal": 2241, - "source": 558, + "source": "contracts/validatorRegistry.algo.ts:558", "pc": [ - 2159, - 2160 + 1990, + 1991, + 1992 ] }, { "teal": 2242, - "source": 558, + "source": "contracts/validatorRegistry.algo.ts:558", "pc": [ - 2161, - 2162 + 1993, + 1994 ] }, { - "teal": 2243, - "source": 558, + "teal": 2248, + "source": "contracts/validatorRegistry.algo.ts:560", "pc": [ - 2163, - 2164 + 1995, + 1996 ] }, { - "teal": 2244, - "source": 558, + "teal": 2249, + "source": "contracts/validatorRegistry.algo.ts:560", "pc": [ - 2165, - 2166, - 2167 + 1997, + 1998 ] }, { - "teal": 2245, - "source": 558, + "teal": 2250, + "source": "contracts/validatorRegistry.algo.ts:560", "pc": [ - 2168, - 2169 + 1999, + 2000 ] }, { "teal": 2251, - "source": 560, + "source": "contracts/validatorRegistry.algo.ts:560", "pc": [ - 2170, - 2171 + 2001, + 2002 ] }, { "teal": 2252, - "source": 560, + "source": "contracts/validatorRegistry.algo.ts:560", "pc": [ - 2172, - 2173 + 2003 ] }, { "teal": 2253, - "source": 560, + "source": "contracts/validatorRegistry.algo.ts:560", "pc": [ - 2174, - 2175 + 2004, + 2005 ] }, { - "teal": 2254, - "source": 560, + "teal": 2257, + "source": "contracts/validatorRegistry.algo.ts:561", "pc": [ - 2176, - 2177 + 2006, + 2007 ] }, { - "teal": 2255, - "source": 560, + "teal": 2258, + "source": "contracts/validatorRegistry.algo.ts:561", "pc": [ - 2178 + 2008, + 2009 ] }, { - "teal": 2256, - "source": 560, + "teal": 2259, + "source": "contracts/validatorRegistry.algo.ts:561", "pc": [ - 2179, - 2180 + 2010, + 2011 ] }, { "teal": 2260, - "source": 561, + "source": "contracts/validatorRegistry.algo.ts:561", "pc": [ - 2181, - 2182 + 2012, + 2013, + 2014 ] }, { "teal": 2261, - "source": 561, + "source": "contracts/validatorRegistry.algo.ts:561", "pc": [ - 2183, - 2184 + 2015 ] }, { "teal": 2262, - "source": 561, + "source": "contracts/validatorRegistry.algo.ts:561", "pc": [ - 2185, - 2186 + 2016, + 2017 ] }, { - "teal": 2263, - "source": 561, + "teal": 2267, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2187, - 2188, - 2189 + 2018, + 2019 ] }, { - "teal": 2264, - "source": 561, + "teal": 2268, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2190 + 2020, + 2021 ] }, { - "teal": 2265, - "source": 561, + "teal": 2269, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2191, - 2192 + 2022, + 2023 ] }, { "teal": 2270, - "source": 562, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2193, - 2194 + 2024, + 2025, + 2026 ] }, { "teal": 2271, - "source": 562, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2195, - 2196 + 2027 ] }, { "teal": 2272, - "source": 562, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2197, - 2198 + 2028 ] }, { "teal": 2273, - "source": 562, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2199, - 2200, - 2201 + 2029 ] }, { "teal": 2274, - "source": 562, + "source": "contracts/validatorRegistry.algo.ts:562", "pc": [ - 2202 + 2030, + 2031, + 2032 ] }, { - "teal": 2275, - "source": 562, + "teal": 2278, + "source": "contracts/validatorRegistry.algo.ts:563", + "errorMessage": "No pool available with free stake. Validator needs to add another pool", "pc": [ - 2203 + 2033 ] }, { - "teal": 2276, - "source": 562, + "teal": 2283, + "source": "contracts/validatorRegistry.algo.ts:567", "pc": [ - 2204 + 2034, + 2035 ] }, { - "teal": 2277, - "source": 562, + "teal": 2284, + "source": "contracts/validatorRegistry.algo.ts:567", "pc": [ - 2205, - 2206, - 2207 + 2036, + 2037 ] }, { - "teal": 2281, - "source": 563, - "errorMessage": "No pool available with free stake. Validator needs to add another pool", + "teal": 2285, + "source": "contracts/validatorRegistry.algo.ts:567", "pc": [ - 2208 + 2038, + 2039 ] }, { "teal": 2286, - "source": 567, + "source": "contracts/validatorRegistry.algo.ts:567", "pc": [ - 2209, - 2210 + 2040, + 2041, + 2042 ] }, { "teal": 2287, - "source": 567, + "source": "contracts/validatorRegistry.algo.ts:567", "pc": [ - 2211, - 2212 + 2043, + 2044 ] }, { "teal": 2288, - "source": 567, + "source": "contracts/validatorRegistry.algo.ts:567", "pc": [ - 2213, - 2214 + 2045, + 2046, + 2047 ] }, { - "teal": 2289, - "source": 567, + "teal": 2298, + "source": "contracts/validatorRegistry.algo.ts:575", "pc": [ - 2215, - 2216, - 2217 + 2048, + 2049 ] }, { - "teal": 2290, - "source": 567, + "teal": 2299, + "source": "contracts/validatorRegistry.algo.ts:574", "pc": [ - 2218, - 2219 + 2050, + 2051 ] }, { - "teal": 2291, - "source": 567, + "teal": 2300, + "source": "contracts/validatorRegistry.algo.ts:573", "pc": [ - 2220, - 2221, - 2222 + 2052, + 2053 ] }, { "teal": 2301, - "source": 575, + "source": "contracts/validatorRegistry.algo.ts:572", "pc": [ - 2223, - 2224 + 2054, + 2055 ] }, { "teal": 2302, - "source": 574, + "source": "contracts/validatorRegistry.algo.ts:572", "pc": [ - 2225, - 2226 + 2056, + 2057 ] }, { "teal": 2303, - "source": 573, + "source": "contracts/validatorRegistry.algo.ts:572", "pc": [ - 2227, - 2228 + 2058, + 2059 ] }, { "teal": 2304, - "source": 572, + "source": "contracts/validatorRegistry.algo.ts:572", "pc": [ - 2229, - 2230 + 2060, + 2061, + 2062 ] }, { "teal": 2305, - "source": 572, + "source": "contracts/validatorRegistry.algo.ts:571", "pc": [ - 2231, - 2232 + 2063, + 2064 ] }, { "teal": 2306, - "source": 572, + "source": "contracts/validatorRegistry.algo.ts:570", "pc": [ - 2233, - 2234 + 2065, + 2066, + 2067 ] }, { - "teal": 2307, - "source": 572, + "teal": 2316, + "source": "contracts/validatorRegistry.algo.ts:577", "pc": [ - 2235, - 2236, - 2237 + 2068, + 2069, + 2070, + 2071, + 2072, + 2073 ] }, { - "teal": 2308, - "source": 571, + "teal": 2317, + "source": "contracts/validatorRegistry.algo.ts:578", "pc": [ - 2238, - 2239 + 2074, + 2075 ] }, { - "teal": 2309, - "source": 570, + "teal": 2318, + "source": "contracts/validatorRegistry.algo.ts:578", "pc": [ - 2240, - 2241, - 2242 + 2076 ] }, { "teal": 2319, - "source": 577, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2243, - 2244, - 2245, - 2246, - 2247, - 2248 + 2077, + 2078 ] }, { "teal": 2320, - "source": 578, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2249, - 2250 + 2079, + 2080 ] }, { "teal": 2321, - "source": 578, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2251 + 2081, + 2082 ] }, { "teal": 2322, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2252, - 2253 + 2083, + 2084, + 2085 ] }, { "teal": 2323, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2254, - 2255 + 2086 ] }, { "teal": 2324, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2256, - 2257 + 2087 ] }, { "teal": 2325, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2258, - 2259, - 2260 + 2088 ] }, { "teal": 2326, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2261 + 2089 ] }, { "teal": 2327, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2262 + 2090, + 2091 ] }, { "teal": 2328, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2263 + 2092 ] }, { - "teal": 2329, - "source": 579, + "teal": 2331, + "source": "contracts/validatorRegistry.algo.ts:579", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", "pc": [ - 2264 + 2093 ] }, { - "teal": 2330, - "source": 579, + "teal": 2332, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2265, - 2266 + 2094, + 2095, + 2096 ] }, { - "teal": 2331, - "source": 579, + "teal": 2333, + "source": "contracts/validatorRegistry.algo.ts:579", "pc": [ - 2267 + 2097 ] }, { "teal": 2334, - "source": 579, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2268 + 2098, + 2099 ] }, { "teal": 2335, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2269, - 2270, - 2271 + 2100, + 2101 ] }, { "teal": 2336, - "source": 579, + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2272 + 2102, + 2103 ] }, { "teal": 2337, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2273, - 2274 + 2104, + 2105, + 2106 ] }, { "teal": 2338, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2275, - 2276 + 2107 ] }, { "teal": 2339, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2277, - 2278 + 2108 ] }, { "teal": 2340, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:580", "pc": [ - 2279, - 2280, - 2281 + 2109 ] }, { "teal": 2341, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:582", "pc": [ - 2282 + 2110, + 2111 ] }, { "teal": 2342, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:582", "pc": [ - 2283 + 2112 ] }, { "teal": 2343, - "source": 580, + "source": "contracts/validatorRegistry.algo.ts:581", "pc": [ - 2284 + 2113, + 2114 ] }, { "teal": 2344, - "source": 582, + "source": "contracts/validatorRegistry.algo.ts:581", "pc": [ - 2285, - 2286 + 2115 ] }, { "teal": 2345, - "source": 582, + "source": "contracts/validatorRegistry.algo.ts:581", "pc": [ - 2287 + 2116 ] }, { "teal": 2346, - "source": 581, + "source": "contracts/validatorRegistry.algo.ts:577", "pc": [ - 2288, - 2289 + 2117 ] }, { "teal": 2347, - "source": 581, + "source": "contracts/validatorRegistry.algo.ts:577", "pc": [ - 2290 + 2118 ] }, { - "teal": 2348, - "source": 581, + "teal": 2351, + "source": "contracts/validatorRegistry.algo.ts:585", "pc": [ - 2291 + 2119, + 2120 ] }, { - "teal": 2349, - "source": 577, + "teal": 2352, + "source": "contracts/validatorRegistry.algo.ts:585", "pc": [ - 2292 + 2121, + 2122 ] }, { - "teal": 2350, - "source": 577, + "teal": 2353, + "source": "contracts/validatorRegistry.algo.ts:585", "pc": [ - 2293 + 2123, + 2124 ] }, { "teal": 2354, - "source": 585, + "source": "contracts/validatorRegistry.algo.ts:585", "pc": [ - 2294, - 2295 + 2125, + 2126, + 2127 ] }, { - "teal": 2355, - "source": 585, + "teal": 2357, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2296, - 2297 + 2128, + 2129 ] }, { - "teal": 2356, - "source": 585, + "teal": 2360, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2298, - 2299 + 2130, + 2131 ] }, { - "teal": 2357, - "source": 585, + "teal": 2361, + "source": "contracts/validatorRegistry.algo.ts:513", "pc": [ - 2300, - 2301, - 2302 + 2132 ] }, { - "teal": 2360, - "source": 513, + "teal": 2366, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2303, - 2304 + 2133 ] }, { - "teal": 2363, - "source": 513, + "teal": 2369, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2305, - 2306 + 2134, + 2135, + 2136 ] }, { - "teal": 2364, - "source": 513, + "teal": 2370, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2307 + 2137 ] }, { - "teal": 2369, - "source": 603, + "teal": 2373, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2308 + 2138, + 2139, + 2140 ] }, { - "teal": 2372, - "source": 603, + "teal": 2374, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2309, - 2310, - 2311 + 2141 ] }, { - "teal": 2373, - "source": 603, + "teal": 2375, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2312 + 2142 ] }, { "teal": 2376, - "source": 603, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2313, - 2314, - 2315 + 2143 ] }, { "teal": 2377, - "source": 603, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2316 + 2144 ] }, { - "teal": 2378, - "source": 603, + "teal": 2395, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2317 + 2145, + 2146, + 2147 ] }, { - "teal": 2379, - "source": 603, + "teal": 2398, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2318 + 2148 ] }, { - "teal": 2380, - "source": 603, + "teal": 2399, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2319 + 2149, + 2150 ] }, { - "teal": 2398, - "source": 603, + "teal": 2403, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2320, - 2321, - 2322 + 2151, + 2152 ] }, { - "teal": 2401, - "source": 603, + "teal": 2404, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2323 + 2153 ] }, { - "teal": 2402, - "source": 603, + "teal": 2405, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2324, - 2325 + 2154 ] }, { "teal": 2406, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2326, - 2327 + 2155, + 2156 ] }, { "teal": 2407, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2328 + 2157 ] }, { "teal": 2408, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2329 + 2158 ] }, { "teal": 2409, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2330, - 2331 + 2159, + 2160 ] }, { "teal": 2410, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2332 + 2161 ] }, { "teal": 2411, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2333 + 2162 ] }, { "teal": 2412, - "source": 605, + "source": "contracts/validatorRegistry.algo.ts:605", "pc": [ - 2334, - 2335 + 2163, + 2164 ] }, { - "teal": 2413, - "source": 605, + "teal": 2416, + "source": "contracts/validatorRegistry.algo.ts:606", "pc": [ - 2336 + 2165, + 2166 ] }, { - "teal": 2414, - "source": 605, + "teal": 2417, + "source": "contracts/validatorRegistry.algo.ts:606", "pc": [ - 2337 + 2167 ] }, { - "teal": 2415, - "source": 605, + "teal": 2418, + "source": "contracts/validatorRegistry.algo.ts:606", "pc": [ - 2338, - 2339 + 2168 ] }, { "teal": 2419, - "source": 606, + "source": "contracts/validatorRegistry.algo.ts:606", "pc": [ - 2340, - 2341 + 2169 ] }, { - "teal": 2420, - "source": 606, + "teal": 2424, + "source": "contracts/validatorRegistry.algo.ts:608", "pc": [ - 2342 + 2170, + 2171 ] }, { - "teal": 2421, - "source": 606, + "teal": 2425, + "source": "contracts/validatorRegistry.algo.ts:608", "pc": [ - 2343 + 2172, + 2173 ] }, { - "teal": 2422, - "source": 606, + "teal": 2426, + "source": "contracts/validatorRegistry.algo.ts:608", "pc": [ - 2344 + 2174, + 2175 ] }, { "teal": 2427, - "source": 608, + "source": "contracts/validatorRegistry.algo.ts:608", "pc": [ - 2345, - 2346 + 2176 ] }, { "teal": 2428, - "source": 608, + "source": "contracts/validatorRegistry.algo.ts:608", "pc": [ - 2347, - 2348 + 2177 ] }, { "teal": 2429, - "source": 608, + "source": "contracts/validatorRegistry.algo.ts:608", "pc": [ - 2349, - 2350 + 2178, + 2179, + 2180 ] }, { - "teal": 2430, - "source": 608, + "teal": 2434, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2351 + 2181, + 2182 ] }, { - "teal": 2431, - "source": 608, + "teal": 2435, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2352 + 2183, + 2184 ] }, { - "teal": 2432, - "source": 608, + "teal": 2436, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2353, - 2354, - 2355 + 2185 ] }, { "teal": 2437, - "source": 609, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2356, - 2357 + 2186, + 2187 ] }, { "teal": 2438, - "source": 609, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2358, - 2359 + 2188 ] }, { "teal": 2439, - "source": 609, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2360 + 2189 ] }, { "teal": 2440, - "source": 609, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2361, - 2362 + 2190, + 2191 ] }, { "teal": 2441, - "source": 609, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2363 + 2192 ] }, { "teal": 2442, - "source": 609, + "source": "contracts/validatorRegistry.algo.ts:609", "pc": [ - 2364 + 2193, + 2194, + 2195 ] }, { - "teal": 2443, - "source": 609, + "teal": 2447, + "source": "contracts/validatorRegistry.algo.ts:615", "pc": [ - 2365, - 2366 + 2196, + 2197 ] }, { - "teal": 2444, - "source": 609, + "teal": 2448, + "source": "contracts/validatorRegistry.algo.ts:615", "pc": [ - 2367 + 2198, + 2199 ] }, { - "teal": 2445, - "source": 609, + "teal": 2452, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2368, - 2369, - 2370 + 2200, + 2201 ] }, { - "teal": 2450, - "source": 615, + "teal": 2453, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2371, - 2372 + 2202 ] }, { - "teal": 2451, - "source": 615, + "teal": 2454, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2373, - 2374 + 2203 ] }, { "teal": 2455, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2375, - 2376 + 2204, + 2205 ] }, { "teal": 2456, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2377 + 2206 ] }, { "teal": 2457, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2378 + 2207 ] }, { "teal": 2458, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2379, - 2380 + 2208, + 2209 ] }, { "teal": 2459, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2381 + 2210 ] }, { "teal": 2460, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2382 + 2211 ] }, { "teal": 2461, - "source": 616, + "source": "contracts/validatorRegistry.algo.ts:616", "pc": [ - 2383, - 2384 + 2212, + 2213 ] }, { - "teal": 2462, - "source": 616, + "teal": 2466, + "source": "contracts/validatorRegistry.algo.ts:617", "pc": [ - 2385 + 2214, + 2215 ] }, { - "teal": 2463, - "source": 616, + "teal": 2467, + "source": "contracts/validatorRegistry.algo.ts:617", "pc": [ - 2386 + 2216 ] }, { - "teal": 2464, - "source": 616, + "teal": 2468, + "source": "contracts/validatorRegistry.algo.ts:617", "pc": [ - 2387, - 2388 + 2217 ] }, { "teal": 2469, - "source": 617, + "source": "contracts/validatorRegistry.algo.ts:617", "pc": [ - 2389, - 2390 + 2218, + 2219, + 2220 ] }, { - "teal": 2470, - "source": 617, + "teal": 2475, + "source": "contracts/validatorRegistry.algo.ts:619", "pc": [ - 2391 + 2221, + 2222 ] }, { - "teal": 2471, - "source": 617, + "teal": 2476, + "source": "contracts/validatorRegistry.algo.ts:619", "pc": [ - 2392 + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2234 ] }, { - "teal": 2472, - "source": 617, + "teal": 2477, + "source": "contracts/validatorRegistry.algo.ts:619", "pc": [ - 2393, - 2394, - 2395 + 2235 ] }, { - "teal": 2478, - "source": 619, + "teal": 2480, + "source": "contracts/validatorRegistry.algo.ts:619", + "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", "pc": [ - 2396, - 2397 + 2236 ] }, { - "teal": 2479, - "source": 619, + "teal": 2481, + "source": "contracts/validatorRegistry.algo.ts:619", "pc": [ - 2398, - 2399, - 2400, - 2401, - 2402, - 2403, - 2404, - 2405, - 2406, - 2407, - 2408, - 2409 + 2237, + 2238 ] }, { - "teal": 2480, - "source": 619, + "teal": 2482, + "source": "contracts/validatorRegistry.algo.ts:619", "pc": [ - 2410 + 2239 ] }, { "teal": 2483, - "source": 619, - "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", + "source": "contracts/validatorRegistry.algo.ts:619", "pc": [ - 2411 + 2240, + 2241, + 2242 ] }, { - "teal": 2484, - "source": 619, + "teal": 2488, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2412, - 2413 + 2243, + 2244 ] }, { - "teal": 2485, - "source": 619, + "teal": 2489, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2414 + 2245, + 2246 ] }, { - "teal": 2486, - "source": 619, + "teal": 2490, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2415, - 2416, - 2417 + 2247 ] }, { "teal": 2491, - "source": 620, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2418, - 2419 + 2248, + 2249 ] }, { "teal": 2492, - "source": 620, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2420, - 2421 + 2250 ] }, { "teal": 2493, - "source": 620, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2422 + 2251 ] }, { "teal": 2494, - "source": 620, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2423, - 2424 + 2252, + 2253 ] }, { "teal": 2495, - "source": 620, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2425 + 2254 ] }, { "teal": 2496, - "source": 620, + "source": "contracts/validatorRegistry.algo.ts:620", "pc": [ - 2426 + 2255, + 2256, + 2257 ] }, { - "teal": 2497, - "source": 620, + "teal": 2501, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2427, - 2428 + 2258, + 2259, + 2260 ] }, { - "teal": 2498, - "source": 620, + "teal": 2502, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2429 + 2261, + 2262 ] }, { - "teal": 2499, - "source": 620, + "teal": 2503, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2430, - 2431, - 2432 + 2263 ] }, { "teal": 2504, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2433, - 2434, - 2435 + 2264, + 2265 ] }, { "teal": 2505, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2436, - 2437 + 2266 ] }, { "teal": 2506, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2438 + 2267 ] }, { "teal": 2507, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2439, - 2440 + 2268, + 2269 ] }, { "teal": 2508, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2441 + 2270 ] }, { "teal": 2509, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2442 + 2271 ] }, { "teal": 2510, - "source": 622, + "source": "contracts/validatorRegistry.algo.ts:622", "pc": [ - 2443, - 2444 + 2272, + 2273 ] }, { - "teal": 2511, - "source": 622, + "teal": 2514, + "source": "contracts/validatorRegistry.algo.ts:623", "pc": [ - 2445 + 2274, + 2275 ] }, { - "teal": 2512, - "source": 622, + "teal": 2515, + "source": "contracts/validatorRegistry.algo.ts:623", "pc": [ - 2446 + 2276, + 2277 ] }, { - "teal": 2513, - "source": 622, + "teal": 2516, + "source": "contracts/validatorRegistry.algo.ts:623", "pc": [ - 2447, - 2448 + 2278, + 2279 ] }, { "teal": 2517, - "source": 623, + "source": "contracts/validatorRegistry.algo.ts:623", "pc": [ - 2449, - 2450 + 2280 ] }, { "teal": 2518, - "source": 623, + "source": "contracts/validatorRegistry.algo.ts:623", "pc": [ - 2451, - 2452 + 2281 ] }, { "teal": 2519, - "source": 623, + "source": "contracts/validatorRegistry.algo.ts:623", "pc": [ - 2453, - 2454 + 2282, + 2283 ] }, { - "teal": 2520, - "source": 623, + "teal": 2524, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2455 + 2284, + 2285 ] }, { - "teal": 2521, - "source": 623, + "teal": 2525, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2456 + 2286, + 2287 ] }, { - "teal": 2522, - "source": 623, + "teal": 2526, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2457, - 2458 + 2288, + 2289 ] }, { "teal": 2527, - "source": 625, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2459, - 2460 + 2290 ] }, { "teal": 2528, - "source": 625, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2461, - 2462 + 2291 ] }, { "teal": 2529, - "source": 625, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2463, - 2464 + 2292, + 2293 ] }, { "teal": 2530, - "source": 625, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2465 + 2294 ] }, { "teal": 2531, - "source": 625, + "source": "contracts/validatorRegistry.algo.ts:625", "pc": [ - 2466 + 2295, + 2296, + 2297 ] }, { - "teal": 2532, - "source": 625, + "teal": 2536, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2467, - 2468 + 2298, + 2299 ] }, { - "teal": 2533, - "source": 625, + "teal": 2537, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2469 + 2300, + 2301 ] }, { - "teal": 2534, - "source": 625, + "teal": 2538, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2470, - 2471, - 2472 + 2302 ] }, { "teal": 2539, - "source": 626, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2473, - 2474 + 2303, + 2304 ] }, { "teal": 2540, - "source": 626, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2475, - 2476 + 2305 ] }, { "teal": 2541, - "source": 626, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2477 + 2306 ] }, { "teal": 2542, - "source": 626, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2478, - 2479 + 2307, + 2308 ] }, { "teal": 2543, - "source": 626, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2480 + 2309 ] }, { "teal": 2544, - "source": 626, + "source": "contracts/validatorRegistry.algo.ts:626", "pc": [ - 2481 + 2310, + 2311, + 2312 ] }, { - "teal": 2545, - "source": 626, + "teal": 2551, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2482, - 2483 + 2313, + 2314 ] }, { - "teal": 2546, - "source": 626, + "teal": 2552, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2484 + 2315, + 2316 ] }, { - "teal": 2547, - "source": 626, + "teal": 2553, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2485, - 2486, - 2487 + 2317 ] }, { "teal": 2554, - "source": 629, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2488, - 2489 + 2318 ] }, { "teal": 2555, - "source": 629, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2490, - 2491 + 2319, + 2320 ] }, { "teal": 2556, - "source": 629, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2492 + 2321 ] }, { "teal": 2557, - "source": 629, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2493 + 2322 ] }, { "teal": 2558, - "source": 629, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2494, - 2495 + 2323, + 2324 ] }, { "teal": 2559, - "source": 629, + "source": "contracts/validatorRegistry.algo.ts:629", "pc": [ - 2496 + 2325 ] }, { - "teal": 2560, - "source": 629, + "teal": 2563, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2497 + 2326, + 2327 ] }, { - "teal": 2561, - "source": 629, + "teal": 2564, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2498, - 2499 + 2328, + 2329 ] }, { - "teal": 2562, - "source": 629, + "teal": 2565, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2500 + 2330 ] }, { "teal": 2566, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2501, - 2502 + 2331, + 2332 ] }, { "teal": 2567, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2503, - 2504 + 2333 ] }, { "teal": 2568, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2505 + 2334 ] }, { "teal": 2569, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2506, - 2507 + 2335, + 2336 ] }, { "teal": 2570, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2508 + 2337 ] }, { "teal": 2571, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2509 + 2338 ] }, { "teal": 2572, - "source": 631, + "source": "contracts/validatorRegistry.algo.ts:631", "pc": [ - 2510, - 2511 + 2339, + 2340 ] }, { - "teal": 2573, - "source": 631, + "teal": 2576, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2512 + 2341, + 2342 ] }, { - "teal": 2574, - "source": 631, + "teal": 2577, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2513 + 2343 ] }, { - "teal": 2575, - "source": 631, + "teal": 2578, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2514, - 2515 + 2344 ] }, { "teal": 2579, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2516, - 2517 + 2345, + 2346 ] }, { "teal": 2580, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2518 + 2347 ] }, { "teal": 2581, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2519 + 2348 ] }, { "teal": 2582, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2520, - 2521 + 2349, + 2350 ] }, { "teal": 2583, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2522 + 2351 ] }, { "teal": 2584, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2523 + 2352 ] }, { "teal": 2585, - "source": 632, + "source": "contracts/validatorRegistry.algo.ts:632", "pc": [ - 2524, - 2525 + 2353, + 2354 ] }, { - "teal": 2586, - "source": 632, + "teal": 2589, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2526 + 2355 ] }, { - "teal": 2587, - "source": 632, + "teal": 2590, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2527 + 2356, + 2357 ] }, { - "teal": 2588, - "source": 632, + "teal": 2595, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2528, - 2529 + 2358, + 2359 ] }, { - "teal": 2592, - "source": 633, + "teal": 2596, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2530 + 2360, + 2361 ] }, { - "teal": 2593, - "source": 633, + "teal": 2597, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2531, - 2532 + 2362 ] }, { "teal": 2598, - "source": 633, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2533, - 2534 + 2363, + 2364, + 2365 ] }, { - "teal": 2599, - "source": 633, + "teal": 2605, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2535, - 2536 + 2366, + 2367 ] }, { - "teal": 2600, - "source": 633, + "teal": 2606, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2537 + 2368, + 2369 ] }, { - "teal": 2601, - "source": 633, + "teal": 2607, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2538, - 2539, - 2540 + 2370, + 2371 ] }, { "teal": 2608, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2541, - 2542 + 2372 ] }, { "teal": 2609, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2543, - 2544 + 2373 ] }, { "teal": 2610, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2545, - 2546 + 2374, + 2375 ] }, { "teal": 2611, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2547 + 2376 ] }, { "teal": 2612, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2548 + 2377 ] }, { "teal": 2613, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2549, - 2550 + 2378 ] }, { "teal": 2614, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2551 + 2379, + 2380 ] }, { "teal": 2615, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2552 + 2381 ] }, { "teal": 2616, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2553 + 2382 ] }, { "teal": 2617, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2554, - 2555 + 2383, + 2384 ] }, { "teal": 2618, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2556 + 2385 ] }, { "teal": 2619, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2557 + 2386 ] }, { "teal": 2620, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:639", "pc": [ - 2558, - 2559 + 2387, + 2388, + 2389, + 2390 ] }, { "teal": 2621, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2560 + 2391 ] }, { "teal": 2622, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2561 + 2392 ] }, { "teal": 2623, - "source": 639, + "source": "contracts/validatorRegistry.algo.ts:640", "pc": [ - 2562, - 2563 + 2393, + 2394 ] }, { "teal": 2624, - "source": 638, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2564 + 2395 ] }, { "teal": 2625, - "source": 638, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2565 + 2396 ] }, { "teal": 2626, - "source": 640, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2566, - 2567 + 2397 ] }, { "teal": 2627, - "source": 638, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2568 + 2398 ] }, { "teal": 2628, - "source": 638, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2569 + 2399 ] }, { - "teal": 2629, - "source": 638, + "teal": 2631, + "source": "contracts/validatorRegistry.algo.ts:638", + "errorMessage": "wideRatio failed", "pc": [ - 2570 + 2400 ] }, { - "teal": 2630, - "source": 638, + "teal": 2632, + "source": "contracts/validatorRegistry.algo.ts:638", "pc": [ - 2571 + 2401, + 2402 ] }, { - "teal": 2631, - "source": 638, + "teal": 2636, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2572 + 2403, + 2404 ] }, { - "teal": 2634, - "source": 638, - "errorMessage": "wideRatio failed", + "teal": 2637, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2573 + 2405, + 2406 ] }, { - "teal": 2635, - "source": 638, + "teal": 2638, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2574, - 2575 + 2407 ] }, { "teal": 2639, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2576, - 2577 + 2408 ] }, { "teal": 2640, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2578, - 2579 + 2409 ] }, { "teal": 2641, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2580 + 2410, + 2411 ] }, { "teal": 2642, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2581 + 2412 ] }, { "teal": 2643, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2582 + 2413 ] }, { "teal": 2644, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2583, - 2584 + 2414, + 2415 ] }, { "teal": 2645, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2585 + 2416 ] }, { "teal": 2646, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2586 + 2417 ] }, { "teal": 2647, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2587, - 2588 + 2418, + 2419 ] }, { "teal": 2648, - "source": 642, + "source": "contracts/validatorRegistry.algo.ts:642", "pc": [ - 2589 + 2420 ] }, { - "teal": 2649, - "source": 642, + "teal": 2653, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2590 + 2421, + 2422 ] }, { - "teal": 2650, - "source": 642, + "teal": 2654, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2591, - 2592 + 2423 ] }, { - "teal": 2651, - "source": 642, + "teal": 2655, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2593 + 2424 ] }, { "teal": 2656, - "source": 633, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2594, - 2595 + 2425, + 2426 ] }, { "teal": 2657, - "source": 633, + "source": "contracts/validatorRegistry.algo.ts:633", "pc": [ - 2596 + 2427, + 2428, + 2429 ] }, { - "teal": 2658, - "source": 633, + "teal": 2662, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2597 + 2430, + 2431 ] }, { - "teal": 2659, - "source": 633, + "teal": 2663, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2598, - 2599 + 2432, + 2433 ] }, { - "teal": 2660, - "source": 633, + "teal": 2664, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2600, - 2601, - 2602 + 2434 ] }, { "teal": 2665, - "source": 644, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2603, - 2604 + 2435, + 2436 ] }, { "teal": 2666, - "source": 644, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2605, - 2606 + 2437 ] }, { "teal": 2667, - "source": 644, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2607 + 2438 ] }, { "teal": 2668, - "source": 644, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2608, - 2609 + 2439, + 2440 ] }, { "teal": 2669, - "source": 644, + "source": "contracts/validatorRegistry.algo.ts:644", "pc": [ - 2610 + 2441 ] }, { - "teal": 2670, - "source": 644, + "teal": 2673, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2611 + 2442, + 2443 ] }, { - "teal": 2671, - "source": 644, + "teal": 2676, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2612, - 2613 + 2444, + 2445 ] }, { - "teal": 2672, - "source": 644, + "teal": 2677, + "source": "contracts/validatorRegistry.algo.ts:603", "pc": [ - 2614 + 2446 ] }, { - "teal": 2676, - "source": 603, + "teal": 2682, + "source": "contracts/validatorRegistry.algo.ts:663", "pc": [ - 2615, - 2616 + 2447, + 2448, + 2449 ] }, { - "teal": 2679, - "source": 603, + "teal": 2683, + "source": "contracts/validatorRegistry.algo.ts:663", "pc": [ - 2617, - 2618 + 2450 ] }, { - "teal": 2680, - "source": 603, + "teal": 2686, + "source": "contracts/validatorRegistry.algo.ts:662", "pc": [ - 2619 + 2451, + 2452, + 2453 ] }, { - "teal": 2685, - "source": 663, + "teal": 2687, + "source": "contracts/validatorRegistry.algo.ts:662", "pc": [ - 2620, - 2621, - 2622 + 2454 ] }, { - "teal": 2686, - "source": 663, + "teal": 2690, + "source": "contracts/validatorRegistry.algo.ts:661", "pc": [ - 2623 + 2455, + 2456, + 2457 ] }, { - "teal": 2689, - "source": 662, + "teal": 2691, + "source": "contracts/validatorRegistry.algo.ts:661", "pc": [ - 2624, - 2625, - 2626 + 2458 ] }, { - "teal": 2690, - "source": 662, + "teal": 2694, + "source": "contracts/validatorRegistry.algo.ts:660", "pc": [ - 2627 + 2459, + 2460, + 2461 ] }, { - "teal": 2693, - "source": 661, + "teal": 2695, + "source": "contracts/validatorRegistry.algo.ts:660", "pc": [ - 2628, - 2629, - 2630 + 2462 ] }, { - "teal": 2694, - "source": 661, + "teal": 2698, + "source": "contracts/validatorRegistry.algo.ts:659", "pc": [ - 2631 + 2463, + 2464, + 2465 ] }, { - "teal": 2697, - "source": 660, + "teal": 2699, + "source": "contracts/validatorRegistry.algo.ts:659", "pc": [ - 2632, - 2633, - 2634 + 2466 ] }, { - "teal": 2698, - "source": 660, + "teal": 2700, + "source": "contracts/validatorRegistry.algo.ts:659", "pc": [ - 2635 + 2467 ] }, { "teal": 2701, - "source": 659, + "source": "contracts/validatorRegistry.algo.ts:659", "pc": [ - 2636, - 2637, - 2638 + 2468 ] }, { "teal": 2702, - "source": 659, + "source": "contracts/validatorRegistry.algo.ts:659", "pc": [ - 2639 + 2469 ] }, { - "teal": 2703, - "source": 659, + "teal": 2705, + "source": "contracts/validatorRegistry.algo.ts:659", + "errorMessage": "argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)", "pc": [ - 2640 + 2470 ] }, { - "teal": 2704, - "source": 659, + "teal": 2708, + "source": "contracts/validatorRegistry.algo.ts:658", "pc": [ - 2641 + 2471, + 2472, + 2473 ] }, { - "teal": 2705, - "source": 659, + "teal": 2709, + "source": "contracts/validatorRegistry.algo.ts:658", "pc": [ - 2642 + 2474 ] }, { - "teal": 2708, - "source": 659, - "errorMessage": "argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)", + "teal": 2710, + "source": "contracts/validatorRegistry.algo.ts:658", "pc": [ - 2643 + 2475 ] }, { - "teal": 2711, - "source": 658, + "teal": 2724, + "source": "contracts/validatorRegistry.algo.ts:658", "pc": [ - 2644, - 2645, - 2646 + 2476, + 2477, + 2478 ] }, { - "teal": 2712, - "source": 658, + "teal": 2728, + "source": "contracts/validatorRegistry.algo.ts:665", "pc": [ - 2647 + 2479, + 2480 ] }, { - "teal": 2713, - "source": 658, + "teal": 2729, + "source": "contracts/validatorRegistry.algo.ts:665", "pc": [ - 2648 + 2481, + 2482, + 2483 ] }, { - "teal": 2727, - "source": 658, + "teal": 2733, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2649, - 2650, - 2651 + 2484, + 2485 ] }, { - "teal": 2731, - "source": 665, + "teal": 2734, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2652, - 2653 + 2486, + 2487 ] }, { - "teal": 2732, - "source": 665, + "teal": 2735, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2654, - 2655, - 2656 + 2488, + 2489, + 2490 ] }, { "teal": 2736, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2657, - 2658 + 2491 ] }, { "teal": 2737, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2659, - 2660 + 2492 ] }, { "teal": 2738, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2661, - 2662, - 2663 + 2493 ] }, { "teal": 2739, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2664 + 2494, + 2495 ] }, { "teal": 2740, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2665 + 2496 ] }, { "teal": 2741, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2666 + 2497 ] }, { "teal": 2742, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2667, - 2668 + 2498, + 2499 ] }, { "teal": 2743, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2669 + 2500 ] }, { "teal": 2744, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2670 + 2501, + 2502 ] }, { "teal": 2745, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2671, - 2672 + 2503, + 2504 ] }, { "teal": 2746, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2673 + 2505, + 2506, + 2507 ] }, { "teal": 2747, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2674, - 2675 + 2508 ] }, { "teal": 2748, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2676, - 2677 + 2509 ] }, { "teal": 2749, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2678, - 2679, - 2680 + 2510 ] }, { "teal": 2750, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2681 + 2511, + 2512 ] }, { "teal": 2751, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2682 + 2513 ] }, { "teal": 2752, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2683 + 2514 ] }, { "teal": 2753, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2684, - 2685 + 2515, + 2516 ] }, { "teal": 2754, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2686 + 2517 ] }, { "teal": 2755, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2687 + 2518 ] }, { "teal": 2756, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2688, - 2689 + 2519 ] }, { "teal": 2757, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2690 + 2520, + 2521 ] }, { "teal": 2758, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2691 + 2522, + 2523, + 2524 ] }, { "teal": 2759, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2692 + 2525 ] }, { "teal": 2760, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2693, - 2694 + 2526 ] }, { "teal": 2761, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2695, - 2696, - 2697 + 2527 ] }, { "teal": 2762, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2698 + 2528, + 2529 ] }, { "teal": 2763, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2699 + 2530 ] }, { "teal": 2764, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2700 + 2531 ] }, { "teal": 2765, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2701, - 2702 + 2532, + 2533 ] }, { "teal": 2766, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2703 + 2534 ] }, { "teal": 2767, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2704 + 2535 ] }, { "teal": 2768, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2705, - 2706 + 2536 ] }, { "teal": 2769, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2707 + 2537, + 2538 ] }, { "teal": 2770, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2708 + 2539, + 2540, + 2541 ] }, { "teal": 2771, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2709 + 2542 ] }, { "teal": 2772, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2710, - 2711 + 2543 ] }, { "teal": 2773, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2712, - 2713, - 2714 + 2544 ] }, { "teal": 2774, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2715 + 2545, + 2546 ] }, { "teal": 2775, - "source": 668, + "source": "contracts/validatorRegistry.algo.ts:668", "pc": [ - 2716 + 2547 ] }, { - "teal": 2776, - "source": 668, + "teal": 2779, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2717 + 2548, + 2549 ] }, { - "teal": 2777, - "source": 668, + "teal": 2780, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2718, - 2719 + 2550 ] }, { - "teal": 2778, - "source": 668, + "teal": 2781, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2720 + 2551 ] }, { "teal": 2782, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2721, - 2722 + 2552 ] }, { "teal": 2783, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2723 + 2553, + 2554 ] }, { "teal": 2784, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2724 + 2555, + 2556, + 2557 ] }, { "teal": 2785, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2725 + 2558 ] }, { "teal": 2786, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2726, - 2727 + 2559 ] }, { "teal": 2787, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2728, - 2729, - 2730 + 2560 ] }, { "teal": 2788, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2731 + 2561, + 2562 ] }, { "teal": 2789, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2732 + 2563 ] }, { "teal": 2790, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2733 + 2564 ] }, { "teal": 2791, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2734, - 2735 + 2565, + 2566 ] }, { "teal": 2792, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2736 + 2567 ] }, { "teal": 2793, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2737 + 2568 ] }, { "teal": 2794, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2738, - 2739 + 2569 ] }, { "teal": 2795, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2740 + 2570, + 2571 ] }, { "teal": 2796, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2741 + 2572, + 2573, + 2574 ] }, { "teal": 2797, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2742 + 2575 ] }, { "teal": 2798, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2743, - 2744 + 2576 ] }, { "teal": 2799, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2745, - 2746, - 2747 + 2577 ] }, { "teal": 2800, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2748 + 2578, + 2579 ] }, { "teal": 2801, - "source": 669, + "source": "contracts/validatorRegistry.algo.ts:669", "pc": [ - 2749 + 2580 ] }, { - "teal": 2802, - "source": 669, + "teal": 2805, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2750 + 2581, + 2582 ] }, { - "teal": 2803, - "source": 669, + "teal": 2806, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2751, - 2752 + 2583 ] }, { - "teal": 2804, - "source": 669, + "teal": 2807, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2753 + 2584 ] }, { "teal": 2808, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2754, - 2755 + 2585 ] }, { "teal": 2809, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2756 + 2586, + 2587 ] }, { "teal": 2810, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2757 + 2588, + 2589, + 2590 ] }, { "teal": 2811, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2758 + 2591 ] }, { "teal": 2812, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2759, - 2760 + 2592 ] }, { "teal": 2813, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2761, - 2762, - 2763 + 2593 ] }, { "teal": 2814, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2764 + 2594, + 2595 ] }, { "teal": 2815, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2765 + 2596 ] }, { "teal": 2816, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2766 + 2597 ] }, { "teal": 2817, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2767, - 2768 + 2598, + 2599 ] }, { "teal": 2818, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2769 + 2600 ] }, { "teal": 2819, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2770 + 2601 ] }, { "teal": 2820, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2771, - 2772 + 2602 ] }, { "teal": 2821, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2773 + 2603, + 2604 ] }, { "teal": 2822, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2774 + 2605, + 2606, + 2607 ] }, { "teal": 2823, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2775 + 2608 ] }, { "teal": 2824, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2776, - 2777 + 2609 ] }, { "teal": 2825, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2778, - 2779, - 2780 + 2610 ] }, { "teal": 2826, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2781 + 2611, + 2612 ] }, { "teal": 2827, - "source": 670, + "source": "contracts/validatorRegistry.algo.ts:670", "pc": [ - 2782 + 2613 ] }, { - "teal": 2828, - "source": 670, + "teal": 2831, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2783 + 2614, + 2615 ] }, { - "teal": 2829, - "source": 670, + "teal": 2832, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2784, - 2785 + 2616 ] }, { - "teal": 2830, - "source": 670, + "teal": 2833, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2786 + 2617, + 2618 ] }, { "teal": 2834, - "source": 672, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2787, - 2788 + 2619 ] }, { "teal": 2835, - "source": 672, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2789 + 2620, + 2621 ] }, { "teal": 2836, - "source": 672, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2790, - 2791 + 2622 ] }, { "teal": 2837, - "source": 672, + "source": "contracts/validatorRegistry.algo.ts:672", "pc": [ - 2792 + 2623 ] }, { - "teal": 2838, - "source": 672, + "teal": 2841, + "source": "contracts/validatorRegistry.algo.ts:675", "pc": [ - 2793, - 2794 + 2624, + 2625 ] }, { - "teal": 2839, - "source": 672, + "teal": 2842, + "source": "contracts/validatorRegistry.algo.ts:675", "pc": [ - 2795 + 2626, + 2627, + 2628 ] }, { - "teal": 2840, - "source": 672, + "teal": 2843, + "source": "contracts/validatorRegistry.algo.ts:675", "pc": [ - 2796 + 2629 ] }, { "teal": 2844, - "source": 675, + "source": "contracts/validatorRegistry.algo.ts:675", "pc": [ - 2797, - 2798 + 2630, + 2631, + 2632 ] }, { - "teal": 2845, - "source": 675, + "teal": 2856, + "source": "contracts/validatorRegistry.algo.ts:677", "pc": [ - 2799, - 2800, - 2801 + 2633, + 2634, + 2635, + 2636, + 2637, + 2638 ] }, { - "teal": 2846, - "source": 675, + "teal": 2857, + "source": "contracts/validatorRegistry.algo.ts:678", "pc": [ - 2802 + 2639, + 2640 ] }, { - "teal": 2847, - "source": 675, + "teal": 2858, + "source": "contracts/validatorRegistry.algo.ts:678", "pc": [ - 2803, - 2804, - 2805 + 2641, + 2642, + 2643 ] }, { "teal": 2859, - "source": 677, + "source": "contracts/validatorRegistry.algo.ts:678", "pc": [ - 2806, - 2807, - 2808, - 2809, - 2810, - 2811 + 2644 ] }, { "teal": 2860, - "source": 678, + "source": "contracts/validatorRegistry.algo.ts:678", "pc": [ - 2812, - 2813 + 2645 ] }, { "teal": 2861, - "source": 678, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2814, - 2815, - 2816 + 2646, + 2647 ] }, { "teal": 2862, - "source": 678, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2817 + 2648, + 2649, + 2650 ] }, { "teal": 2863, - "source": 678, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2818 + 2651 ] }, { "teal": 2864, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2819, - 2820 + 2652 ] }, { "teal": 2865, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2821, - 2822, - 2823 + 2653 ] }, { "teal": 2866, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2824 + 2654 ] }, { "teal": 2867, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2825 + 2655, + 2656 ] }, { "teal": 2868, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2826 + 2657 ] }, { - "teal": 2869, - "source": 679, + "teal": 2871, + "source": "contracts/validatorRegistry.algo.ts:679", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", "pc": [ - 2827 + 2658 ] }, { - "teal": 2870, - "source": 679, + "teal": 2872, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2828, - 2829 + 2659, + 2660, + 2661 ] }, { - "teal": 2871, - "source": 679, + "teal": 2873, + "source": "contracts/validatorRegistry.algo.ts:679", "pc": [ - 2830 + 2662 ] }, { "teal": 2874, - "source": 679, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "source": "contracts/validatorRegistry.algo.ts:680", "pc": [ - 2831 + 2663, + 2664 ] }, { "teal": 2875, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:680", "pc": [ - 2832, - 2833, - 2834 + 2665, + 2666, + 2667 ] }, { "teal": 2876, - "source": 679, + "source": "contracts/validatorRegistry.algo.ts:680", "pc": [ - 2835 + 2668 ] }, { "teal": 2877, - "source": 680, + "source": "contracts/validatorRegistry.algo.ts:680", "pc": [ - 2836, - 2837 + 2669 ] }, { "teal": 2878, - "source": 680, + "source": "contracts/validatorRegistry.algo.ts:680", "pc": [ - 2838, - 2839, - 2840 + 2670 ] }, { "teal": 2879, - "source": 680, + "source": "contracts/validatorRegistry.algo.ts:684", "pc": [ - 2841 + 2671, + 2672 ] }, { "teal": 2880, - "source": 680, + "source": "contracts/validatorRegistry.algo.ts:684", "pc": [ - 2842 + 2673 ] }, { "teal": 2881, - "source": 680, + "source": "contracts/validatorRegistry.algo.ts:684", "pc": [ - 2843 + 2674 ] }, { "teal": 2882, - "source": 684, + "source": "contracts/validatorRegistry.algo.ts:683", "pc": [ - 2844, - 2845 + 2675, + 2676 ] }, { "teal": 2883, - "source": 684, + "source": "contracts/validatorRegistry.algo.ts:683", "pc": [ - 2846 + 2677 ] }, { "teal": 2884, - "source": 684, + "source": "contracts/validatorRegistry.algo.ts:683", "pc": [ - 2847 + 2678 ] }, { "teal": 2885, - "source": 683, + "source": "contracts/validatorRegistry.algo.ts:681", "pc": [ - 2848, - 2849 + 2679, + 2680 ] }, { "teal": 2886, - "source": 683, + "source": "contracts/validatorRegistry.algo.ts:681", "pc": [ - 2850 + 2681 ] }, { "teal": 2887, - "source": 683, + "source": "contracts/validatorRegistry.algo.ts:681", "pc": [ - 2851 + 2682 ] }, { "teal": 2888, - "source": 681, + "source": "contracts/validatorRegistry.algo.ts:682", "pc": [ - 2852, - 2853 + 2683, + 2684 ] }, { "teal": 2889, - "source": 681, + "source": "contracts/validatorRegistry.algo.ts:682", "pc": [ - 2854 + 2685 ] }, { "teal": 2890, - "source": 681, + "source": "contracts/validatorRegistry.algo.ts:682", "pc": [ - 2855 + 2686 ] }, { "teal": 2891, - "source": 682, + "source": "contracts/validatorRegistry.algo.ts:677", "pc": [ - 2856, - 2857 + 2687 ] }, { "teal": 2892, - "source": 682, + "source": "contracts/validatorRegistry.algo.ts:677", "pc": [ - 2858 + 2688 ] }, { "teal": 2893, - "source": 682, + "source": "contracts/validatorRegistry.algo.ts:658", "pc": [ - 2859 + 2689 ] }, { - "teal": 2894, - "source": 677, + "teal": 2898, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2860 + 2690, + 2691, + 2692 ] }, { - "teal": 2895, - "source": 677, + "teal": 2899, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2861 + 2693 ] }, { - "teal": 2896, - "source": 658, + "teal": 2900, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2862 + 2694 ] }, { "teal": 2901, - "source": 705, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2863, - 2864, - 2865 + 2695 ] }, { "teal": 2902, - "source": 705, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2866 + 2696 ] }, { - "teal": 2903, - "source": 705, + "teal": 2905, + "source": "contracts/validatorRegistry.algo.ts:705", + "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", "pc": [ - 2867 + 2697 ] }, { - "teal": 2904, - "source": 705, + "teal": 2906, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2868 + 2698 ] }, { - "teal": 2905, - "source": 705, + "teal": 2907, + "source": "contracts/validatorRegistry.algo.ts:705", "pc": [ - 2869 + 2699 ] }, { - "teal": 2908, - "source": 705, - "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", + "teal": 2910, + "source": "contracts/validatorRegistry.algo.ts:704", "pc": [ - 2870 + 2700, + 2701, + 2702 ] }, { - "teal": 2909, - "source": 705, + "teal": 2911, + "source": "contracts/validatorRegistry.algo.ts:704", "pc": [ - 2871 + 2703 ] }, { - "teal": 2910, - "source": 705, + "teal": 2914, + "source": "contracts/validatorRegistry.algo.ts:703", "pc": [ - 2872 + 2704, + 2705, + 2706 ] }, { - "teal": 2913, - "source": 704, + "teal": 2915, + "source": "contracts/validatorRegistry.algo.ts:703", "pc": [ - 2873, - 2874, - 2875 + 2707 ] }, { - "teal": 2914, - "source": 704, + "teal": 2918, + "source": "contracts/validatorRegistry.algo.ts:702", "pc": [ - 2876 + 2708, + 2709, + 2710 ] }, { - "teal": 2917, - "source": 703, + "teal": 2919, + "source": "contracts/validatorRegistry.algo.ts:702", "pc": [ - 2877, - 2878, - 2879 + 2711 ] }, { - "teal": 2918, - "source": 703, + "teal": 2920, + "source": "contracts/validatorRegistry.algo.ts:702", "pc": [ - 2880 + 2712 ] }, { "teal": 2921, - "source": 702, + "source": "contracts/validatorRegistry.algo.ts:702", "pc": [ - 2881, - 2882, - 2883 + 2713, + 2714 ] }, { "teal": 2922, - "source": 702, + "source": "contracts/validatorRegistry.algo.ts:702", "pc": [ - 2884 + 2715 ] }, { - "teal": 2923, - "source": 702, + "teal": 2925, + "source": "contracts/validatorRegistry.algo.ts:702", + "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", "pc": [ - 2885 + 2716 ] }, { - "teal": 2924, - "source": 702, + "teal": 2928, + "source": "contracts/validatorRegistry.algo.ts:701", "pc": [ - 2886, - 2887 + 2717, + 2718, + 2719 ] }, { - "teal": 2925, - "source": 702, + "teal": 2929, + "source": "contracts/validatorRegistry.algo.ts:701", "pc": [ - 2888 + 2720 ] }, { - "teal": 2928, - "source": 702, - "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", + "teal": 2930, + "source": "contracts/validatorRegistry.algo.ts:701", "pc": [ - 2889 + 2721 ] }, { "teal": 2931, - "source": 701, + "source": "contracts/validatorRegistry.algo.ts:701", "pc": [ - 2890, - 2891, - 2892 + 2722 ] }, { "teal": 2932, - "source": 701, + "source": "contracts/validatorRegistry.algo.ts:701", "pc": [ - 2893 + 2723 ] }, { - "teal": 2933, - "source": 701, + "teal": 2935, + "source": "contracts/validatorRegistry.algo.ts:701", + "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", "pc": [ - 2894 + 2724 ] }, { - "teal": 2934, - "source": 701, + "teal": 2938, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 2895 + 2725, + 2726, + 2727 ] }, { - "teal": 2935, - "source": 701, + "teal": 2939, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 2896 + 2728 ] }, { - "teal": 2938, - "source": 701, - "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", + "teal": 2940, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 2897 + 2729 ] }, { - "teal": 2941, - "source": 700, + "teal": 2955, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 2898, - 2899, - 2900 + 2730, + 2731, + 2732 ] }, { - "teal": 2942, - "source": 700, + "teal": 2958, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 2901 + 2733 ] }, { - "teal": 2943, - "source": 700, + "teal": 2959, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 2902 + 2734, + 2735 ] }, { - "teal": 2958, - "source": 700, + "teal": 2964, + "source": "contracts/validatorRegistry.algo.ts:707", "pc": [ - 2903, - 2904, - 2905 + 2736, + 2737 ] }, { - "teal": 2961, - "source": 700, + "teal": 2965, + "source": "contracts/validatorRegistry.algo.ts:707", "pc": [ - 2906 + 2738, + 2739 ] }, { - "teal": 2962, - "source": 700, + "teal": 2966, + "source": "contracts/validatorRegistry.algo.ts:707", "pc": [ - 2907, - 2908 + 2740 ] }, { "teal": 2967, - "source": 707, + "source": "contracts/validatorRegistry.algo.ts:707", "pc": [ - 2909, - 2910 + 2741, + 2742, + 2743 ] }, { - "teal": 2968, - "source": 707, + "teal": 2972, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2911, - 2912 + 2744 ] }, { - "teal": 2969, - "source": 707, + "teal": 2973, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2913 + 2745, + 2746 ] }, { - "teal": 2970, - "source": 707, + "teal": 2974, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2914, - 2915, - 2916 + 2747, + 2748 ] }, { "teal": 2975, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2917 + 2749 ] }, { "teal": 2976, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2918, - 2919 + 2750, + 2751 ] }, { "teal": 2977, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2920, - 2921 + 2752, + 2753 ] }, { "teal": 2978, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2922 + 2754 ] }, { "teal": 2979, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2923, - 2924 + 2755, + 2756 ] }, { "teal": 2980, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2925, - 2926 + 2757, + 2758 ] }, { "teal": 2981, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2927 + 2759, + 2760 ] }, { "teal": 2982, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2928, - 2929 + 2761, + 2762 ] }, { "teal": 2983, - "source": 708, + "source": "contracts/validatorRegistry.algo.ts:708", "pc": [ - 2930, - 2931 + 2763 ] }, { - "teal": 2984, - "source": 708, + "teal": 2988, + "source": "contracts/validatorRegistry.algo.ts:710", "pc": [ - 2932, - 2933 + 2764, + 2765 ] }, { - "teal": 2985, - "source": 708, + "teal": 2989, + "source": "contracts/validatorRegistry.algo.ts:710", "pc": [ - 2934, - 2935 + 2766, + 2767, + 2768 ] }, { - "teal": 2986, - "source": 708, + "teal": 2993, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2936 + 2769, + 2770 ] }, { - "teal": 2991, - "source": 710, + "teal": 2994, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2937, - 2938 + 2771 ] }, { - "teal": 2992, - "source": 710, + "teal": 2995, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2939, - 2940, - 2941 + 2772 ] }, { "teal": 2996, - "source": 714, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2942, - 2943 + 2773 ] }, { "teal": 2997, - "source": 714, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2944 + 2774, + 2775, + 2776 ] }, { "teal": 2998, - "source": 714, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2945 + 2777, + 2778 ] }, { "teal": 2999, - "source": 714, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2946 + 2779 ] }, { "teal": 3000, - "source": 714, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2947, - 2948, - 2949 + 2780 ] }, { "teal": 3001, - "source": 714, + "source": "contracts/validatorRegistry.algo.ts:714", "pc": [ - 2950, - 2951 + 2781 ] }, { - "teal": 3002, - "source": 714, + "teal": 3005, + "source": "contracts/validatorRegistry.algo.ts:714", + "errorMessage": "should only be called if algo or reward was removed", "pc": [ - 2952 + 2782 ] }, { - "teal": 3003, - "source": 714, + "teal": 3009, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2953 + 2783, + 2784 ] }, { - "teal": 3004, - "source": 714, + "teal": 3010, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2954 + 2785, + 2786 ] }, { - "teal": 3008, - "source": 714, - "errorMessage": "should only be called if algo or reward was removed", + "teal": 3011, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2955 + 2787, + 2788, + 2789 ] }, { "teal": 3012, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2956, - 2957 + 2790 ] }, { "teal": 3013, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2958, - 2959 + 2791 ] }, { "teal": 3014, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2960, - 2961, - 2962 + 2792 ] }, { "teal": 3015, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2963 + 2793, + 2794 ] }, { "teal": 3016, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2964 + 2795 ] }, { "teal": 3017, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2965 + 2796 ] }, { "teal": 3018, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2966, - 2967 + 2797, + 2798 ] }, { "teal": 3019, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2968 + 2799 ] }, { "teal": 3020, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2969 + 2800, + 2801 ] }, { "teal": 3021, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2970, - 2971 + 2802, + 2803 ] }, { "teal": 3022, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2972 + 2804, + 2805, + 2806 ] }, { "teal": 3023, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2973, - 2974 + 2807 ] }, { "teal": 3024, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2975, - 2976 + 2808 ] }, { "teal": 3025, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2977, - 2978, - 2979 + 2809 ] }, { "teal": 3026, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2980 + 2810, + 2811 ] }, { "teal": 3027, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2981 + 2812 ] }, { "teal": 3028, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2982 + 2813 ] }, { "teal": 3029, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2983, - 2984 + 2814, + 2815 ] }, { "teal": 3030, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2985 + 2816 ] }, { "teal": 3031, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2986 + 2817 ] }, { "teal": 3032, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2987, - 2988 + 2818 ] }, { "teal": 3033, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2989 + 2819, + 2820 ] }, { "teal": 3034, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2990 + 2821, + 2822, + 2823 ] }, { "teal": 3035, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2991 + 2824 ] }, { "teal": 3036, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2992, - 2993 + 2825 ] }, { "teal": 3037, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2994, - 2995, - 2996 + 2826 ] }, { "teal": 3038, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2997 + 2827, + 2828 ] }, { "teal": 3039, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2998 + 2829 ] }, { "teal": 3040, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 2999 + 2830 ] }, { "teal": 3041, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3000, - 3001 + 2831, + 2832 ] }, { "teal": 3042, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3002 + 2833 ] }, { "teal": 3043, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3003 + 2834 ] }, { "teal": 3044, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3004, - 3005 + 2835 ] }, { "teal": 3045, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3006 + 2836, + 2837 ] }, { "teal": 3046, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3007 + 2838, + 2839, + 2840 ] }, { "teal": 3047, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3008 + 2841 ] }, { "teal": 3048, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3009, - 3010 + 2842 ] }, { "teal": 3049, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3011, - 3012, - 3013 + 2843 ] }, { "teal": 3050, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3014 + 2844, + 2845 ] }, { "teal": 3051, - "source": 717, + "source": "contracts/validatorRegistry.algo.ts:717", "pc": [ - 3015 + 2846 ] }, { - "teal": 3052, - "source": 717, + "teal": 3055, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3016 + 2847, + 2848 ] }, { - "teal": 3053, - "source": 717, + "teal": 3056, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3017, - 3018 + 2849 ] }, { - "teal": 3054, - "source": 717, + "teal": 3057, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3019 + 2850 ] }, { "teal": 3058, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3020, - 3021 + 2851 ] }, { "teal": 3059, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3022 + 2852, + 2853 ] }, { "teal": 3060, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3023 + 2854, + 2855, + 2856 ] }, { "teal": 3061, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3024 + 2857 ] }, { "teal": 3062, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3025, - 3026 + 2858 ] }, { "teal": 3063, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3027, - 3028, - 3029 + 2859 ] }, { "teal": 3064, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3030 + 2860, + 2861 ] }, { "teal": 3065, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3031 + 2862 ] }, { "teal": 3066, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3032 + 2863 ] }, { "teal": 3067, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3033, - 3034 + 2864, + 2865 ] }, { "teal": 3068, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3035 + 2866 ] }, { "teal": 3069, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3036 + 2867 ] }, { "teal": 3070, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3037, - 3038 + 2868 ] }, { "teal": 3071, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3039 + 2869, + 2870 ] }, { "teal": 3072, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3040 + 2871, + 2872, + 2873 ] }, { "teal": 3073, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3041 + 2874 ] }, { "teal": 3074, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3042, - 3043 + 2875 ] }, { "teal": 3075, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3044, - 3045, - 3046 + 2876 ] }, { "teal": 3076, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3047 + 2877, + 2878 ] }, { "teal": 3077, - "source": 718, + "source": "contracts/validatorRegistry.algo.ts:718", "pc": [ - 3048 + 2879 ] }, { - "teal": 3078, - "source": 718, + "teal": 3081, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3049 + 2880, + 2881 ] }, { - "teal": 3079, - "source": 718, + "teal": 3082, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3050, - 3051 + 2882 ] }, { - "teal": 3080, - "source": 718, + "teal": 3083, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3052 + 2883, + 2884 ] }, { "teal": 3084, - "source": 719, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3053, - 3054 + 2885 ] }, { "teal": 3085, - "source": 719, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3055 + 2886, + 2887 ] }, { "teal": 3086, - "source": 719, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3056, - 3057 + 2888 ] }, { "teal": 3087, - "source": 719, + "source": "contracts/validatorRegistry.algo.ts:719", "pc": [ - 3058 + 2889 ] }, { - "teal": 3088, - "source": 719, + "teal": 3092, + "source": "contracts/validatorRegistry.algo.ts:721", "pc": [ - 3059, - 3060 + 2890, + 2891 ] }, { - "teal": 3089, - "source": 719, + "teal": 3093, + "source": "contracts/validatorRegistry.algo.ts:721", "pc": [ - 3061 + 2892 ] }, { - "teal": 3090, - "source": 719, + "teal": 3094, + "source": "contracts/validatorRegistry.algo.ts:721", "pc": [ - 3062 + 2893 ] }, { "teal": 3095, - "source": 721, + "source": "contracts/validatorRegistry.algo.ts:721", "pc": [ - 3063, - 3064 + 2894, + 2895, + 2896 ] }, { - "teal": 3096, - "source": 721, + "teal": 3100, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3065 + 2897, + 2898 ] }, { - "teal": 3097, - "source": 721, + "teal": 3101, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3066 + 2899 ] }, { - "teal": 3098, - "source": 721, + "teal": 3102, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3067, - 3068, - 3069 + 2900 ] }, { "teal": 3103, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3070, - 3071 + 2901, + 2902 ] }, { "teal": 3104, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3072 + 2903, + 2904, + 2905 ] }, { "teal": 3105, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3073 + 2906 ] }, { "teal": 3106, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3074, - 3075 + 2907 ] }, { "teal": 3107, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3076, - 3077, - 3078 + 2908 ] }, { "teal": 3108, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3079 + 2909, + 2910 ] }, { "teal": 3109, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3080 + 2911 ] }, { "teal": 3110, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3081 + 2912 ] }, { "teal": 3111, - "source": 722, + "source": "contracts/validatorRegistry.algo.ts:722", "pc": [ - 3082, - 3083 + 2913, + 2914 ] }, { - "teal": 3112, - "source": 722, + "teal": 3115, + "source": "contracts/validatorRegistry.algo.ts:723", "pc": [ - 3084 + 2915, + 2916 ] }, { - "teal": 3113, - "source": 722, + "teal": 3116, + "source": "contracts/validatorRegistry.algo.ts:723", "pc": [ - 3085 + 2917 ] }, { - "teal": 3114, - "source": 722, + "teal": 3117, + "source": "contracts/validatorRegistry.algo.ts:723", "pc": [ - 3086, - 3087 + 2918 ] }, { - "teal": 3118, - "source": 723, + "teal": 3120, + "source": "contracts/validatorRegistry.algo.ts:723", + "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", "pc": [ - 3088, - 3089 + 2919 ] }, { - "teal": 3119, - "source": 723, + "teal": 3127, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3090 + 2920, + 2921 ] }, { - "teal": 3120, - "source": 723, + "teal": 3128, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3091 + 2922 ] }, { - "teal": 3123, - "source": 723, - "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", + "teal": 3129, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3092 + 2923 ] }, { "teal": 3130, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3093, - 3094 + 2924, + 2925 ] }, { "teal": 3131, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3095 + 2926, + 2927, + 2928 ] }, { "teal": 3132, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3096 + 2929 ] }, { "teal": 3133, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3097, - 3098 + 2930 ] }, { "teal": 3134, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3099, - 3100, - 3101 + 2931 ] }, { "teal": 3135, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3102 + 2932, + 2933 ] }, { "teal": 3136, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3103 + 2934 ] }, { "teal": 3137, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3104 + 2935 ] }, { "teal": 3138, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3105, - 3106 + 2936, + 2937 ] }, { "teal": 3139, - "source": 725, + "source": "contracts/validatorRegistry.algo.ts:725", "pc": [ - 3107 + 2938 ] }, { - "teal": 3140, - "source": 725, + "teal": 3142, + "source": "contracts/validatorRegistry.algo.ts:724", + "errorMessage": "reward being removed must be covered by hold back amount", "pc": [ - 3108 + 2939 ] }, { - "teal": 3141, - "source": 725, + "teal": 3146, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3109, - 3110 + 2940, + 2941 ] }, { - "teal": 3142, - "source": 725, + "teal": 3147, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3111 + 2942 ] }, { - "teal": 3145, - "source": 724, - "errorMessage": "reward being removed must be covered by hold back amount", + "teal": 3148, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3112 + 2943 ] }, { "teal": 3149, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3113, - 3114 + 2944 ] }, { "teal": 3150, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3115 + 2945, + 2946 ] }, { "teal": 3151, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3116 + 2947, + 2948, + 2949 ] }, { "teal": 3152, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3117 + 2950 ] }, { "teal": 3153, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3118, - 3119 + 2951 ] }, { "teal": 3154, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3120, - 3121, - 3122 + 2952 ] }, { "teal": 3155, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3123 + 2953, + 2954 ] }, { "teal": 3156, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3124 + 2955 ] }, { "teal": 3157, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3125 + 2956 ] }, { "teal": 3158, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3126, - 3127 + 2957, + 2958 ] }, { "teal": 3159, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3128 + 2959 ] }, { "teal": 3160, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3129 + 2960 ] }, { "teal": 3161, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3130, - 3131 + 2961 ] }, { "teal": 3162, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3132 + 2962, + 2963 ] }, { "teal": 3163, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3133 + 2964, + 2965, + 2966 ] }, { "teal": 3164, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3134 + 2967 ] }, { "teal": 3165, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3135, - 3136 + 2968 ] }, { "teal": 3166, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3137, - 3138, - 3139 + 2969 ] }, { "teal": 3167, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3140 + 2970, + 2971 ] }, { "teal": 3168, - "source": 730, + "source": "contracts/validatorRegistry.algo.ts:730", "pc": [ - 3141 + 2972 ] }, { - "teal": 3169, - "source": 730, + "teal": 3173, + "source": "contracts/validatorRegistry.algo.ts:735", "pc": [ - 3142 + 2973, + 2974 ] }, { - "teal": 3170, - "source": 730, + "teal": 3174, + "source": "contracts/validatorRegistry.algo.ts:735", "pc": [ - 3143, - 3144 + 2975, + 2976, + 2977 ] }, { - "teal": 3171, - "source": 730, + "teal": 3175, + "source": "contracts/validatorRegistry.algo.ts:735", "pc": [ - 3145 + 2978 ] }, { "teal": 3176, - "source": 735, + "source": "contracts/validatorRegistry.algo.ts:735", "pc": [ - 3146, - 3147 + 2979 ] }, { "teal": 3177, - "source": 735, + "source": "contracts/validatorRegistry.algo.ts:735", "pc": [ - 3148, - 3149, - 3150 + 2980 ] }, { "teal": 3178, - "source": 735, + "source": "contracts/validatorRegistry.algo.ts:735", "pc": [ - 3151 + 2981, + 2982, + 2983 ] }, { - "teal": 3179, - "source": 735, + "teal": 3186, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3152 + 2984 ] }, { - "teal": 3180, - "source": 735, + "teal": 3187, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3153 + 2985, + 2986 ] }, { - "teal": 3181, - "source": 735, + "teal": 3188, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3154, - 3155, - 3156 + 2987, + 2988 ] }, { "teal": 3189, - "source": 736, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3157 + 2989, + 2990 ] }, { "teal": 3190, - "source": 736, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3158, - 3159 + 2991, + 2992 ] }, { - "teal": 3191, - "source": 736, + "teal": 3194, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3160, - 3161 + 2993, + 2994 ] }, { - "teal": 3192, - "source": 736, + "teal": 3195, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3162, - 3163 + 2995 ] }, { - "teal": 3193, - "source": 736, + "teal": 3196, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3164, - 3165 + 2996 ] }, { "teal": 3197, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3166, - 3167 + 2997, + 2998 ] }, { "teal": 3198, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3168 + 2999, + 3000, + 3001 ] }, { "teal": 3199, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3169 + 3002 ] }, { "teal": 3200, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3170, - 3171 + 3003 ] }, { "teal": 3201, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3172, - 3173, - 3174 + 3004 ] }, { "teal": 3202, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3175 + 3005, + 3006 ] }, { "teal": 3203, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3176 + 3007 ] }, { "teal": 3204, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3177 + 3008 ] }, { "teal": 3205, - "source": 737, + "source": "contracts/validatorRegistry.algo.ts:737", "pc": [ - 3178, - 3179 + 3009, + 3010 ] }, { - "teal": 3206, - "source": 737, + "teal": 3209, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3180 + 3011, + 3012 ] }, { - "teal": 3207, - "source": 737, + "teal": 3210, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3181 + 3013, + 3014 ] }, { - "teal": 3208, - "source": 737, + "teal": 3211, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3182, - 3183 + 3015, + 3016 ] }, { "teal": 3212, - "source": 738, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3184, - 3185 + 3017 ] }, { "teal": 3213, - "source": 738, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3186, - 3187 + 3018, + 3019 ] }, { "teal": 3214, - "source": 738, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3188, - 3189 + 3020, + 3021 ] }, { "teal": 3215, - "source": 738, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3190 + 3022 ] }, { "teal": 3216, - "source": 738, + "source": "contracts/validatorRegistry.algo.ts:738", "pc": [ - 3191, - 3192 + 3023, + 3024 ] }, { - "teal": 3217, - "source": 738, + "teal": 3219, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3193, - 3194 + 3025 ] }, { - "teal": 3218, - "source": 738, + "teal": 3220, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3195 + 3026, + 3027 ] }, { - "teal": 3219, - "source": 738, + "teal": 3223, + "source": "contracts/validatorRegistry.algo.ts:736", "pc": [ - 3196, - 3197 + 3028 ] }, { - "teal": 3222, - "source": 736, + "teal": 3236, + "source": "contracts/validatorRegistry.algo.ts:741", "pc": [ - 3198 + 3029, + 3030 ] }, { - "teal": 3223, - "source": 736, + "teal": 3237, + "source": "contracts/validatorRegistry.algo.ts:742", "pc": [ - 3199, - 3200 + 3031, + 3032 ] }, { - "teal": 3226, - "source": 736, + "teal": 3238, + "source": "contracts/validatorRegistry.algo.ts:742", "pc": [ - 3201 + 3033, + 3034, + 3035 ] }, { "teal": 3239, - "source": 741, + "source": "contracts/validatorRegistry.algo.ts:742", "pc": [ - 3202, - 3203 + 3036 ] }, { "teal": 3240, - "source": 742, + "source": "contracts/validatorRegistry.algo.ts:742", "pc": [ - 3204, - 3205 + 3037 ] }, { "teal": 3241, - "source": 742, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3206, - 3207, - 3208 + 3038, + 3039 ] }, { "teal": 3242, - "source": 742, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3209 + 3040, + 3041, + 3042 ] }, { "teal": 3243, - "source": 742, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3210 + 3043 ] }, { "teal": 3244, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3211, - 3212 + 3044 ] }, { "teal": 3245, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3213, - 3214, - 3215 + 3045 ] }, { "teal": 3246, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3216 + 3046 ] }, { "teal": 3247, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3217 + 3047, + 3048 ] }, { "teal": 3248, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3218 + 3049 ] }, { - "teal": 3249, - "source": 743, + "teal": 3251, + "source": "contracts/validatorRegistry.algo.ts:743", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", "pc": [ - 3219 + 3050 ] }, { - "teal": 3250, - "source": 743, + "teal": 3252, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3220, - 3221 + 3051, + 3052, + 3053 ] }, { - "teal": 3251, - "source": 743, + "teal": 3253, + "source": "contracts/validatorRegistry.algo.ts:743", "pc": [ - 3222 + 3054 ] }, { "teal": 3254, - "source": 743, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "source": "contracts/validatorRegistry.algo.ts:744", "pc": [ - 3223 + 3055, + 3056 ] }, { "teal": 3255, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:744", "pc": [ - 3224, - 3225, - 3226 + 3057, + 3058, + 3059 ] }, { "teal": 3256, - "source": 743, + "source": "contracts/validatorRegistry.algo.ts:744", "pc": [ - 3227 + 3060 ] }, { "teal": 3257, - "source": 744, + "source": "contracts/validatorRegistry.algo.ts:744", "pc": [ - 3228, - 3229 + 3061 ] }, { "teal": 3258, - "source": 744, + "source": "contracts/validatorRegistry.algo.ts:744", "pc": [ - 3230, - 3231, - 3232 + 3062 ] }, { "teal": 3259, - "source": 744, + "source": "contracts/validatorRegistry.algo.ts:745", "pc": [ - 3233 + 3063, + 3064 ] }, { "teal": 3260, - "source": 744, + "source": "contracts/validatorRegistry.algo.ts:745", "pc": [ - 3234 + 3065 ] }, { "teal": 3261, - "source": 744, + "source": "contracts/validatorRegistry.algo.ts:746", "pc": [ - 3235 + 3066, + 3067 ] }, { "teal": 3262, - "source": 745, + "source": "contracts/validatorRegistry.algo.ts:746", "pc": [ - 3236, - 3237 + 3068 ] }, { "teal": 3263, - "source": 745, + "source": "contracts/validatorRegistry.algo.ts:746", "pc": [ - 3238 + 3069 ] }, { "teal": 3264, - "source": 746, + "source": "contracts/validatorRegistry.algo.ts:748", "pc": [ - 3239, - 3240 + 3070, + 3071 ] }, { "teal": 3265, - "source": 746, + "source": "contracts/validatorRegistry.algo.ts:748", "pc": [ - 3241 + 3072 ] }, { "teal": 3266, - "source": 746, + "source": "contracts/validatorRegistry.algo.ts:748", "pc": [ - 3242 + 3073 ] }, { "teal": 3267, - "source": 748, + "source": "contracts/validatorRegistry.algo.ts:747", "pc": [ - 3243, - 3244 + 3074, + 3075 ] }, { "teal": 3268, - "source": 748, + "source": "contracts/validatorRegistry.algo.ts:747", "pc": [ - 3245 + 3076 ] }, { "teal": 3269, - "source": 748, + "source": "contracts/validatorRegistry.algo.ts:747", "pc": [ - 3246 + 3077 ] }, { "teal": 3270, - "source": 747, + "source": "contracts/validatorRegistry.algo.ts:741", "pc": [ - 3247, - 3248 + 3078 ] }, { "teal": 3271, - "source": 747, + "source": "contracts/validatorRegistry.algo.ts:741", "pc": [ - 3249 + 3079 ] }, { "teal": 3272, - "source": 747, + "source": "contracts/validatorRegistry.algo.ts:721", "pc": [ - 3250 + 3080, + 3081, + 3082 ] }, { - "teal": 3273, - "source": 741, + "teal": 3286, + "source": "contracts/validatorRegistry.algo.ts:751", "pc": [ - 3251 + 3083, + 3084 ] }, { - "teal": 3274, - "source": 741, + "teal": 3287, + "source": "contracts/validatorRegistry.algo.ts:752", "pc": [ - 3252 + 3085, + 3086 ] }, { - "teal": 3275, - "source": 721, + "teal": 3288, + "source": "contracts/validatorRegistry.algo.ts:752", "pc": [ - 3253, - 3254, - 3255 + 3087, + 3088, + 3089 ] }, { "teal": 3289, - "source": 751, + "source": "contracts/validatorRegistry.algo.ts:752", "pc": [ - 3256, - 3257 + 3090 ] }, { "teal": 3290, - "source": 752, + "source": "contracts/validatorRegistry.algo.ts:752", "pc": [ - 3258, - 3259 + 3091 ] }, { "teal": 3291, - "source": 752, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3260, - 3261, - 3262 + 3092, + 3093 ] }, { "teal": 3292, - "source": 752, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3263 + 3094, + 3095, + 3096 ] }, { "teal": 3293, - "source": 752, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3264 + 3097 ] }, { "teal": 3294, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3265, - 3266 + 3098 ] }, { "teal": 3295, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3267, - 3268, - 3269 + 3099 ] }, { "teal": 3296, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3270 + 3100 ] }, { "teal": 3297, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3271 + 3101, + 3102 ] }, { "teal": 3298, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3272 + 3103 ] }, { - "teal": 3299, - "source": 753, + "teal": 3301, + "source": "contracts/validatorRegistry.algo.ts:753", + "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", "pc": [ - 3273 + 3104 ] }, { - "teal": 3300, - "source": 753, + "teal": 3302, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3274, - 3275 + 3105, + 3106, + 3107 ] }, { - "teal": 3301, - "source": 753, + "teal": 3303, + "source": "contracts/validatorRegistry.algo.ts:753", "pc": [ - 3276 + 3108 ] }, { "teal": 3304, - "source": 753, - "errorMessage": "poolKey.poolId as uint16 overflowed 16 bits", + "source": "contracts/validatorRegistry.algo.ts:754", "pc": [ - 3277 + 3109, + 3110 ] }, { "teal": 3305, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:754", "pc": [ - 3278, - 3279, - 3280 + 3111, + 3112, + 3113 ] }, { "teal": 3306, - "source": 753, + "source": "contracts/validatorRegistry.algo.ts:754", "pc": [ - 3281 + 3114 ] }, { "teal": 3307, - "source": 754, + "source": "contracts/validatorRegistry.algo.ts:754", "pc": [ - 3282, - 3283 + 3115 ] }, { "teal": 3308, - "source": 754, + "source": "contracts/validatorRegistry.algo.ts:754", "pc": [ - 3284, - 3285, - 3286 + 3116 ] }, { "teal": 3309, - "source": 754, + "source": "contracts/validatorRegistry.algo.ts:755", "pc": [ - 3287 + 3117, + 3118 ] }, { "teal": 3310, - "source": 754, + "source": "contracts/validatorRegistry.algo.ts:755", "pc": [ - 3288 + 3119 ] }, { "teal": 3311, - "source": 754, + "source": "contracts/validatorRegistry.algo.ts:756", "pc": [ - 3289 + 3120, + 3121 ] }, { "teal": 3312, - "source": 755, + "source": "contracts/validatorRegistry.algo.ts:756", "pc": [ - 3290, - 3291 + 3122 ] }, { "teal": 3313, - "source": 755, + "source": "contracts/validatorRegistry.algo.ts:756", "pc": [ - 3292 + 3123 ] }, { "teal": 3314, - "source": 756, + "source": "contracts/validatorRegistry.algo.ts:759", "pc": [ - 3293, - 3294 + 3124, + 3125 ] }, { "teal": 3315, - "source": 756, + "source": "contracts/validatorRegistry.algo.ts:759", "pc": [ - 3295 + 3126 ] }, { "teal": 3316, - "source": 756, + "source": "contracts/validatorRegistry.algo.ts:758", "pc": [ - 3296 + 3127, + 3128 ] }, { "teal": 3317, - "source": 759, + "source": "contracts/validatorRegistry.algo.ts:758", "pc": [ - 3297, - 3298 + 3129 ] }, { "teal": 3318, - "source": 759, + "source": "contracts/validatorRegistry.algo.ts:751", "pc": [ - 3299 + 3130 ] }, { "teal": 3319, - "source": 758, + "source": "contracts/validatorRegistry.algo.ts:751", "pc": [ - 3300, - 3301 + 3131 ] }, { - "teal": 3320, - "source": 758, + "teal": 3325, + "source": "contracts/validatorRegistry.algo.ts:763", "pc": [ - 3302 + 3132, + 3133 ] }, { - "teal": 3321, - "source": 751, + "teal": 3326, + "source": "contracts/validatorRegistry.algo.ts:763", "pc": [ - 3303 + 3134, + 3135, + 3136 ] }, { - "teal": 3322, - "source": 751, + "teal": 3331, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3304 + 3137, + 3138 ] }, { - "teal": 3328, - "source": 763, + "teal": 3332, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3305, - 3306 + 3139, + 3140 ] }, { - "teal": 3329, - "source": 763, + "teal": 3333, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3307, - 3308, - 3309 + 3141, + 3142, + 3143 ] }, { "teal": 3334, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3310, - 3311 + 3144 ] }, { "teal": 3335, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3312, - 3313 + 3145 ] }, { "teal": 3336, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3314, - 3315, - 3316 + 3146 ] }, { "teal": 3337, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3317 + 3147, + 3148 ] }, { "teal": 3338, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3318 + 3149 ] }, { "teal": 3339, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3319 + 3150 ] }, { "teal": 3340, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3320, - 3321 + 3151 ] }, { "teal": 3341, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3322 + 3152 ] }, { "teal": 3342, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3323 + 3153, + 3154 ] }, { "teal": 3343, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3324 + 3155, + 3156 ] }, { "teal": 3344, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3325 + 3157, + 3158, + 3159 ] }, { "teal": 3345, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3326, - 3327 + 3160 ] }, { "teal": 3346, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3328, - 3329 + 3161 ] }, { "teal": 3347, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3330, - 3331, - 3332 + 3162 ] }, { "teal": 3348, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3333 + 3163, + 3164 ] }, { "teal": 3349, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3334 + 3165 ] }, { "teal": 3350, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3335 + 3166 ] }, { "teal": 3351, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3336, - 3337 + 3167 ] }, { "teal": 3352, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3338 + 3168 ] }, { "teal": 3353, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3339 + 3169, + 3170 ] }, { "teal": 3354, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3340 + 3171 ] }, { "teal": 3355, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3341 + 3172, + 3173 ] }, { "teal": 3356, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3342, - 3343 + 3174, + 3175, + 3176 ] }, { "teal": 3357, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3344 + 3177 ] }, { "teal": 3358, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3345, - 3346 + 3178 ] }, { "teal": 3359, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3347, - 3348, - 3349 + 3179 ] }, { "teal": 3360, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3350 + 3180, + 3181 ] }, { "teal": 3361, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3351 + 3182 ] }, { "teal": 3362, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3352 + 3183 ] }, { "teal": 3363, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3353, - 3354 + 3184 ] }, { "teal": 3364, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3355 + 3185 ] }, { "teal": 3365, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3356 + 3186 ] }, { "teal": 3366, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3357 + 3187, + 3188, + 3189 ] }, { "teal": 3367, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3358 + 3190 ] }, { "teal": 3368, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3359 + 3191, + 3192 ] }, { "teal": 3369, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3360, - 3361, - 3362 + 3193, + 3194, + 3195 ] }, { "teal": 3370, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3363 + 3196 ] }, { "teal": 3371, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3364, - 3365 + 3197 ] }, { "teal": 3372, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3366, - 3367, - 3368 + 3198 ] }, { "teal": 3373, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3369 + 3199, + 3200 ] }, { "teal": 3374, - "source": 765, + "source": "contracts/validatorRegistry.algo.ts:765", "pc": [ - 3370 + 3201 ] }, { - "teal": 3375, - "source": 765, + "teal": 3382, + "source": "contracts/validatorRegistry.algo.ts:768", "pc": [ - 3371 + 3202, + 3203 ] }, { - "teal": 3376, - "source": 765, + "teal": 3383, + "source": "contracts/validatorRegistry.algo.ts:768", "pc": [ - 3372, - 3373 + 3204, + 3205, + 3206 ] }, { - "teal": 3377, - "source": 765, + "teal": 3384, + "source": "contracts/validatorRegistry.algo.ts:768", "pc": [ - 3374 + 3207 ] }, { "teal": 3385, - "source": 768, + "source": "contracts/validatorRegistry.algo.ts:768", "pc": [ - 3375, - 3376 + 3208 ] }, { "teal": 3386, - "source": 768, + "source": "contracts/validatorRegistry.algo.ts:769", "pc": [ - 3377, - 3378, - 3379 + 3209, + 3210 ] }, { "teal": 3387, - "source": 768, + "source": "contracts/validatorRegistry.algo.ts:769", "pc": [ - 3380 + 3211, + 3212, + 3213 ] }, { "teal": 3388, - "source": 768, + "source": "contracts/validatorRegistry.algo.ts:769", "pc": [ - 3381 + 3214 ] }, { "teal": 3389, - "source": 769, + "source": "contracts/validatorRegistry.algo.ts:769", "pc": [ - 3382, - 3383 + 3215 ] }, { "teal": 3390, - "source": 769, + "source": "contracts/validatorRegistry.algo.ts:769", "pc": [ - 3384, - 3385, - 3386 + 3216 ] }, { "teal": 3391, - "source": 769, + "source": "contracts/validatorRegistry.algo.ts:770", "pc": [ - 3387 + 3217, + 3218 ] }, { "teal": 3392, - "source": 769, + "source": "contracts/validatorRegistry.algo.ts:770", "pc": [ - 3388 + 3219, + 3220, + 3221 ] }, { "teal": 3393, - "source": 769, + "source": "contracts/validatorRegistry.algo.ts:770", "pc": [ - 3389 + 3222 ] }, { "teal": 3394, - "source": 770, + "source": "contracts/validatorRegistry.algo.ts:770", "pc": [ - 3390, - 3391 + 3223 ] }, { "teal": 3395, - "source": 770, + "source": "contracts/validatorRegistry.algo.ts:770", "pc": [ - 3392, - 3393, - 3394 + 3224 ] }, { "teal": 3396, - "source": 770, + "source": "contracts/validatorRegistry.algo.ts:767", "pc": [ - 3395 + 3225, + 3226 ] }, { "teal": 3397, - "source": 770, + "source": "contracts/validatorRegistry.algo.ts:767", "pc": [ - 3396 + 3227, + 3228, + 3229 ] }, { "teal": 3398, - "source": 770, + "source": "contracts/validatorRegistry.algo.ts:767", "pc": [ - 3397 + 3230, + 3231 ] }, { - "teal": 3399, - "source": 767, + "teal": 3402, + "source": "contracts/validatorRegistry.algo.ts:772", "pc": [ - 3398, - 3399 + 3232, + 3233 ] }, { - "teal": 3400, - "source": 767, + "teal": 3403, + "source": "contracts/validatorRegistry.algo.ts:772", "pc": [ - 3400, - 3401, - 3402 + 3234, + 3235 ] }, { - "teal": 3401, - "source": 767, + "teal": 3404, + "source": "contracts/validatorRegistry.algo.ts:772", "pc": [ - 3403, - 3404 + 3236, + 3237 ] }, { "teal": 3405, - "source": 772, + "source": "contracts/validatorRegistry.algo.ts:772", "pc": [ - 3405, - 3406 + 3238 ] }, { "teal": 3406, - "source": 772, + "source": "contracts/validatorRegistry.algo.ts:772", "pc": [ - 3407, - 3408 + 3239 ] }, { "teal": 3407, - "source": 772, + "source": "contracts/validatorRegistry.algo.ts:772", "pc": [ - 3409, - 3410 + 3240, + 3241 ] }, { - "teal": 3408, - "source": 772, + "teal": 3411, + "source": "contracts/validatorRegistry.algo.ts:773", "pc": [ - 3411 + 3242, + 3243 ] }, { - "teal": 3409, - "source": 772, + "teal": 3412, + "source": "contracts/validatorRegistry.algo.ts:773", "pc": [ - 3412 + 3244, + 3245 ] }, { - "teal": 3410, - "source": 772, + "teal": 3413, + "source": "contracts/validatorRegistry.algo.ts:773", "pc": [ - 3413, - 3414 + 3246, + 3247 ] }, { "teal": 3414, - "source": 773, + "source": "contracts/validatorRegistry.algo.ts:773", "pc": [ - 3415, - 3416 + 3248 ] }, { "teal": 3415, - "source": 773, + "source": "contracts/validatorRegistry.algo.ts:773", "pc": [ - 3417, - 3418 + 3249 ] }, { "teal": 3416, - "source": 773, + "source": "contracts/validatorRegistry.algo.ts:773", "pc": [ - 3419, - 3420 + 3250, + 3251 ] }, { - "teal": 3417, - "source": 773, + "teal": 3421, + "source": "contracts/validatorRegistry.algo.ts:775", "pc": [ - 3421 + 3252, + 3253 ] }, { - "teal": 3418, - "source": 773, + "teal": 3422, + "source": "contracts/validatorRegistry.algo.ts:775", "pc": [ - 3422 + 3254, + 3255, + 3256 ] }, { - "teal": 3419, - "source": 773, + "teal": 3427, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3423, - 3424 + 3257, + 3258 ] }, { - "teal": 3424, - "source": 775, + "teal": 3428, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3425, - 3426 + 3259 ] }, { - "teal": 3425, - "source": 775, + "teal": 3429, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3427, - 3428, - 3429 + 3260 ] }, { "teal": 3430, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3430, - 3431 + 3261 ] }, { "teal": 3431, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3432 + 3262, + 3263 ] }, { "teal": 3432, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3433 + 3264, + 3265, + 3266 ] }, { "teal": 3433, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3434 + 3267 ] }, { "teal": 3434, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3435, - 3436 + 3268 ] }, { "teal": 3435, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3437, - 3438, - 3439 + 3269 ] }, { "teal": 3436, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3440 + 3270, + 3271 ] }, { "teal": 3437, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3441 + 3272 ] }, { "teal": 3438, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3442 + 3273 ] }, { "teal": 3439, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3443, - 3444 + 3274 ] }, { "teal": 3440, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3445 + 3275 ] }, { "teal": 3441, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3446 + 3276 ] }, { "teal": 3442, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3447 + 3277 ] }, { "teal": 3443, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3448 + 3278, + 3279 ] }, { "teal": 3444, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3449 + 3280, + 3281, + 3282 ] }, { "teal": 3445, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3450 + 3283 ] }, { "teal": 3446, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3451, - 3452 + 3284 ] }, { "teal": 3447, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3453, - 3454, - 3455 + 3285 ] }, { "teal": 3448, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3456 + 3286, + 3287 ] }, { "teal": 3449, - "source": 776, + "source": "contracts/validatorRegistry.algo.ts:776", "pc": [ - 3457 + 3288 ] }, { - "teal": 3450, - "source": 776, + "teal": 3455, + "source": "contracts/validatorRegistry.algo.ts:779", "pc": [ - 3458 + 3289, + 3290 ] }, { - "teal": 3451, - "source": 776, + "teal": 3456, + "source": "contracts/validatorRegistry.algo.ts:779", "pc": [ - 3459, - 3460 + 3291, + 3292, + 3293 ] }, { - "teal": 3452, - "source": 776, + "teal": 3461, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3461 + 3294, + 3295 ] }, { - "teal": 3458, - "source": 779, + "teal": 3462, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3462, - 3463 + 3296 ] }, { - "teal": 3459, - "source": 779, + "teal": 3463, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3464, - 3465, - 3466 + 3297 ] }, { "teal": 3464, - "source": 780, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3467, - 3468 + 3298 ] }, { "teal": 3465, - "source": 780, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3469 + 3299, + 3300 ] }, { "teal": 3466, - "source": 780, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3470 + 3301 ] }, { "teal": 3467, - "source": 780, + "source": "contracts/validatorRegistry.algo.ts:780", "pc": [ - 3471 + 3302 ] }, { - "teal": 3468, - "source": 780, + "teal": 3472, + "source": "contracts/validatorRegistry.algo.ts:700", "pc": [ - 3472, - 3473 + 3303 ] }, { - "teal": 3469, - "source": 780, + "teal": 3477, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3474 + 3304 ] }, { - "teal": 3470, - "source": 780, + "teal": 3480, + "source": "contracts/validatorRegistry.algo.ts:800", "pc": [ - 3475 + 3305, + 3306, + 3307 ] }, { - "teal": 3475, - "source": 700, + "teal": 3481, + "source": "contracts/validatorRegistry.algo.ts:800", "pc": [ - 3476 + 3308 ] }, { - "teal": 3480, - "source": 796, + "teal": 3484, + "source": "contracts/validatorRegistry.algo.ts:799", "pc": [ - 3477 + 3309, + 3310, + 3311 ] }, { - "teal": 3483, - "source": 800, + "teal": 3485, + "source": "contracts/validatorRegistry.algo.ts:799", "pc": [ - 3478, - 3479, - 3480 + 3312 ] }, { - "teal": 3484, - "source": 800, + "teal": 3486, + "source": "contracts/validatorRegistry.algo.ts:799", "pc": [ - 3481 + 3313 ] }, { "teal": 3487, - "source": 799, + "source": "contracts/validatorRegistry.algo.ts:799", "pc": [ - 3482, - 3483, - 3484 + 3314, + 3315 ] }, { "teal": 3488, - "source": 799, + "source": "contracts/validatorRegistry.algo.ts:799", "pc": [ - 3485 + 3316 ] }, { - "teal": 3489, - "source": 799, + "teal": 3491, + "source": "contracts/validatorRegistry.algo.ts:799", + "errorMessage": "argument 1 (staker) for findPoolForStaker must be a address", "pc": [ - 3486 + 3317 ] }, { - "teal": 3490, - "source": 799, + "teal": 3494, + "source": "contracts/validatorRegistry.algo.ts:798", "pc": [ - 3487, - 3488 + 3318, + 3319, + 3320 ] }, { - "teal": 3491, - "source": 799, + "teal": 3495, + "source": "contracts/validatorRegistry.algo.ts:798", "pc": [ - 3489 + 3321 ] }, { - "teal": 3494, - "source": 799, - "errorMessage": "argument 1 (staker) for findPoolForStaker must be a address", + "teal": 3498, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3490 + 3322, + 3323, + 3324 ] }, { - "teal": 3497, - "source": 798, + "teal": 3499, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3491, - 3492, - 3493 + 3325 ] }, { - "teal": 3498, - "source": 798, + "teal": 3500, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3494 + 3326 ] }, { "teal": 3501, - "source": 796, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3495, - 3496, - 3497 + 3327 ] }, { "teal": 3502, - "source": 796, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3498 + 3328 ] }, { - "teal": 3503, - "source": 796, + "teal": 3516, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3499 + 3329, + 3330, + 3331 ] }, { - "teal": 3504, - "source": 796, + "teal": 3519, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3500 + 3332 ] }, { - "teal": 3505, - "source": 796, + "teal": 3520, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3501 + 3333, + 3334 ] }, { - "teal": 3519, - "source": 796, + "teal": 3524, + "source": "contracts/validatorRegistry.algo.ts:802", "pc": [ - 3502, - 3503, - 3504 + 3335 ] }, { - "teal": 3522, - "source": 796, + "teal": 3525, + "source": "contracts/validatorRegistry.algo.ts:802", "pc": [ - 3505 + 3336, + 3337 ] }, { - "teal": 3523, - "source": 796, + "teal": 3529, + "source": "contracts/validatorRegistry.algo.ts:803", "pc": [ - 3506, - 3507 + 3338 ] }, { - "teal": 3527, - "source": 802, + "teal": 3530, + "source": "contracts/validatorRegistry.algo.ts:803", "pc": [ - 3508 + 3339, + 3340 ] }, { - "teal": 3528, - "source": 802, + "teal": 3534, + "source": "contracts/validatorRegistry.algo.ts:811", "pc": [ - 3509, - 3510 + 3341, + 3342 ] }, { - "teal": 3532, - "source": 803, + "teal": 3535, + "source": "contracts/validatorRegistry.algo.ts:811", "pc": [ - 3511 + 3343, + 3344, + 3345 ] }, { - "teal": 3533, - "source": 803, + "teal": 3536, + "source": "contracts/validatorRegistry.algo.ts:811", "pc": [ - 3512, - 3513 + 3346, + 3347 ] }, { - "teal": 3537, - "source": 811, + "teal": 3541, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3514, - 3515 + 3348 ] }, { - "teal": 3538, - "source": 811, + "teal": 3542, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3516, - 3517, - 3518 + 3349, + 3350 ] }, { - "teal": 3539, - "source": 811, + "teal": 3543, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3519, - 3520 + 3351 ] }, { "teal": 3544, - "source": 814, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3521 + 3352 ] }, { "teal": 3545, - "source": 814, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3522, - 3523 + 3353 ] }, { "teal": 3546, - "source": 814, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3524 + 3354 ] }, { "teal": 3547, - "source": 814, + "source": "contracts/validatorRegistry.algo.ts:814", "pc": [ - 3525 + 3355, + 3356, + 3357 ] }, { - "teal": 3548, - "source": 814, + "teal": 3552, + "source": "contracts/validatorRegistry.algo.ts:815", "pc": [ - 3526 + 3358 ] }, { - "teal": 3549, - "source": 814, + "teal": 3553, + "source": "contracts/validatorRegistry.algo.ts:815", "pc": [ - 3527 + 3359, + 3360 ] }, { - "teal": 3550, - "source": 814, + "teal": 3554, + "source": "contracts/validatorRegistry.algo.ts:815", "pc": [ - 3528, - 3529, - 3530 + 3361 ] }, { "teal": 3555, - "source": 815, + "source": "contracts/validatorRegistry.algo.ts:815", "pc": [ - 3531 + 3362 ] }, { - "teal": 3556, - "source": 815, + "teal": 3558, + "source": "contracts/validatorRegistry.algo.ts:815", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 3532, - 3533 + 3363 ] }, { - "teal": 3557, - "source": 815, + "teal": 3559, + "source": "contracts/validatorRegistry.algo.ts:815", "pc": [ - 3534 + 3364, + 3365 ] }, { - "teal": 3558, - "source": 815, + "teal": 3563, + "source": "contracts/validatorRegistry.algo.ts:816", "pc": [ - 3535 + 3366, + 3367 ] }, { - "teal": 3561, - "source": 815, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "teal": 3564, + "source": "contracts/validatorRegistry.algo.ts:816", "pc": [ - 3536 + 3368 ] }, { - "teal": 3562, - "source": 815, + "teal": 3565, + "source": "contracts/validatorRegistry.algo.ts:816", "pc": [ - 3537, - 3538 + 3369 ] }, { "teal": 3566, - "source": 816, + "source": "contracts/validatorRegistry.algo.ts:816", "pc": [ - 3539, - 3540 + 3370 ] }, { - "teal": 3567, - "source": 816, + "teal": 3570, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3541 + 3371 ] }, { - "teal": 3568, - "source": 816, + "teal": 3571, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3542 + 3372, + 3373 ] }, { - "teal": 3569, - "source": 816, + "teal": 3576, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3543 + 3374, + 3375 ] }, { - "teal": 3573, - "source": 817, + "teal": 3577, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3544 + 3376, + 3377 ] }, { - "teal": 3574, - "source": 817, + "teal": 3578, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3545, - 3546 + 3378 ] }, { "teal": 3579, - "source": 817, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3547, - 3548 + 3379, + 3380, + 3381 ] }, { - "teal": 3580, - "source": 817, + "teal": 3584, + "source": "contracts/validatorRegistry.algo.ts:818", "pc": [ - 3549, - 3550 + 3382, + 3383 ] }, { - "teal": 3581, - "source": 817, + "teal": 3585, + "source": "contracts/validatorRegistry.algo.ts:818", "pc": [ - 3551 + 3384, + 3385 ] }, { - "teal": 3582, - "source": 817, + "teal": 3586, + "source": "contracts/validatorRegistry.algo.ts:818", "pc": [ - 3552, - 3553, - 3554 + 3386 ] }, { "teal": 3587, - "source": 818, + "source": "contracts/validatorRegistry.algo.ts:818", "pc": [ - 3555, - 3556 + 3387, + 3388, + 3389 ] }, { - "teal": 3588, - "source": 818, + "teal": 3592, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3557, - 3558 + 3390 ] }, { - "teal": 3589, - "source": 818, + "teal": 3593, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3559 + 3391, + 3392 ] }, { - "teal": 3590, - "source": 818, + "teal": 3594, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3560, - 3561, - 3562 + 3393, + 3394 ] }, { "teal": 3595, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3563 + 3395 ] }, { "teal": 3596, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3564, - 3565 + 3396, + 3397 ] }, { "teal": 3597, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3566, - 3567 + 3398, + 3399 ] }, { "teal": 3598, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3568 + 3400 ] }, { "teal": 3599, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3569, - 3570 + 3401, + 3402 ] }, { "teal": 3600, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3571, - 3572 + 3403, + 3404 ] }, { "teal": 3601, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3573 + 3405, + 3406 ] }, { "teal": 3602, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3574, - 3575 + 3407, + 3408 ] }, { "teal": 3603, - "source": 819, + "source": "contracts/validatorRegistry.algo.ts:819", "pc": [ - 3576, - 3577 + 3409 ] }, { - "teal": 3604, - "source": 819, + "teal": 3609, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3578, - 3579 + 3410, + 3411 ] }, { - "teal": 3605, - "source": 819, + "teal": 3610, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3580, - 3581 + 3412, + 3413 ] }, { - "teal": 3606, - "source": 819, + "teal": 3611, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3582 + 3414 ] }, { "teal": 3612, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3583, - 3584 + 3415 ] }, { "teal": 3613, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3585, - 3586 + 3416 ] }, { "teal": 3614, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3587 + 3417 ] }, { "teal": 3615, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3588 + 3418 ] }, { "teal": 3616, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3589 + 3419 ] }, { "teal": 3617, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3590 + 3420 ] }, { "teal": 3618, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3591 + 3421 ] }, { "teal": 3619, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3592 + 3422 ] }, { "teal": 3620, - "source": 821, + "source": "contracts/validatorRegistry.algo.ts:821", "pc": [ - 3593 + 3423, + 3424, + 3425 ] }, { - "teal": 3621, - "source": 821, + "teal": 3623, + "source": "contracts/validatorRegistry.algo.ts:822", "pc": [ - 3594 + 3426, + 3427, + 3428 ] }, { - "teal": 3622, - "source": 821, + "teal": 3628, + "source": "contracts/validatorRegistry.algo.ts:824", "pc": [ - 3595 + 3429 ] }, { - "teal": 3623, - "source": 821, + "teal": 3629, + "source": "contracts/validatorRegistry.algo.ts:824", "pc": [ - 3596, - 3597, - 3598 + 3430, + 3431 ] }, { - "teal": 3626, - "source": 822, + "teal": 3634, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3599, - 3600, - 3601 + 3432, + 3433 ] }, { - "teal": 3631, - "source": 824, + "teal": 3635, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3602 + 3434, + 3435 ] }, { - "teal": 3632, - "source": 824, + "teal": 3636, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3603, - 3604 + 3436 ] }, { "teal": 3637, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3605, - 3606 + 3437 ] }, { "teal": 3638, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3607, - 3608 + 3438 ] }, { "teal": 3639, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3609 + 3439 ] }, { "teal": 3640, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3610 + 3440 ] }, { "teal": 3641, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3611 + 3441 ] }, { "teal": 3642, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3612 + 3442 ] }, { "teal": 3643, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3613 + 3443, + 3444 ] }, { "teal": 3644, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3614 + 3445 ] }, { "teal": 3645, - "source": 825, + "source": "contracts/validatorRegistry.algo.ts:825", "pc": [ - 3615 + 3446, + 3447, + 3448 ] }, { - "teal": 3646, - "source": 825, + "teal": 3650, + "source": "contracts/validatorRegistry.algo.ts:827", "pc": [ - 3616, - 3617 + 3449 ] }, { - "teal": 3647, - "source": 825, + "teal": 3651, + "source": "contracts/validatorRegistry.algo.ts:827", "pc": [ - 3618 + 3450, + 3451 ] }, { - "teal": 3648, - "source": 825, + "teal": 3658, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3619, - 3620, - 3621 + 3452, + 3453 ] }, { - "teal": 3653, - "source": 827, + "teal": 3659, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3622 + 3454, + 3455 ] }, { - "teal": 3654, - "source": 827, + "teal": 3660, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3623, - 3624 + 3456, + 3457 ] }, { "teal": 3661, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3625, - 3626 + 3458 ] }, { "teal": 3662, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3627, - 3628 + 3459 ] }, { "teal": 3663, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3629, - 3630 + 3460 ] }, { "teal": 3664, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3631 + 3461 ] }, { "teal": 3665, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3632 + 3462 ] }, { "teal": 3666, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3633 + 3463 ] }, { "teal": 3667, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3634 + 3464 ] }, { "teal": 3668, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3635 + 3465 ] }, { "teal": 3669, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3636 + 3466 ] }, { "teal": 3670, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3637 + 3467, + 3468 ] }, { "teal": 3671, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3638 + 3469 ] }, { "teal": 3672, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3639 + 3470 ] }, { "teal": 3673, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3640, - 3641 + 3471, + 3472 ] }, { "teal": 3674, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3642 + 3473 ] }, { "teal": 3675, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3643 + 3474 ] }, { "teal": 3676, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3644, - 3645 + 3475 ] }, { "teal": 3677, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3646 + 3476, + 3477 ] }, { "teal": 3678, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3647 + 3478 ] }, { "teal": 3679, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3648 + 3479 ] }, { "teal": 3680, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3649, - 3650 + 3480, + 3481 ] }, { "teal": 3681, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3651 + 3482 ] }, { "teal": 3682, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3652 + 3483 ] }, { "teal": 3683, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:830", "pc": [ - 3653, - 3654 + 3484, + 3485 ] }, { "teal": 3684, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:829", "pc": [ - 3655 + 3486 ] }, { "teal": 3685, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:831", "pc": [ - 3656 + 3487, + 3488 ] }, { "teal": 3686, - "source": 830, + "source": "contracts/validatorRegistry.algo.ts:830", "pc": [ - 3657, - 3658 + 3489 ] }, { "teal": 3687, - "source": 829, + "source": "contracts/validatorRegistry.algo.ts:828", "pc": [ - 3659 + 3490, + 3491, + 3492 ] }, { - "teal": 3688, - "source": 831, + "teal": 3692, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3660, - 3661 + 3493, + 3494 ] }, { - "teal": 3689, - "source": 830, + "teal": 3693, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3662 + 3495, + 3496 ] }, { - "teal": 3690, - "source": 828, + "teal": 3694, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3663, - 3664, - 3665 + 3497 ] }, { "teal": 3695, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3666, - 3667 + 3498 ] }, { "teal": 3696, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3668, - 3669 + 3499 ] }, { "teal": 3697, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3670 + 3500 ] }, { "teal": 3698, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3671 + 3501, + 3502 ] }, { "teal": 3699, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3672 + 3503 ] }, { "teal": 3700, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3673 + 3504, + 3505 ] }, { "teal": 3701, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3674, - 3675 + 3506 ] }, { "teal": 3702, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3676 + 3507 ] }, { "teal": 3703, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3677, - 3678 + 3508, + 3509 ] }, { "teal": 3704, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3679 + 3510 ] }, { "teal": 3705, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3680 + 3511 ] }, { "teal": 3706, - "source": 833, + "source": "contracts/validatorRegistry.algo.ts:833", "pc": [ - 3681, - 3682 + 3512, + 3513, + 3514 ] }, { - "teal": 3707, - "source": 833, + "teal": 3715, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3683 + 3515, + 3516 ] }, { - "teal": 3708, - "source": 833, + "teal": 3716, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3684 + 3517 ] }, { - "teal": 3709, - "source": 833, + "teal": 3717, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3685, - 3686, - 3687 + 3518 ] }, { "teal": 3718, - "source": 817, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3688, - 3689 + 3519, + 3520 ] }, { "teal": 3719, - "source": 817, + "source": "contracts/validatorRegistry.algo.ts:817", "pc": [ - 3690 + 3521, + 3522, + 3523 ] }, { - "teal": 3720, - "source": 817, + "teal": 3729, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3691 + 3524, + 3525 ] }, { - "teal": 3721, - "source": 817, + "teal": 3730, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3692, - 3693 + 3526, + 3527 ] }, { - "teal": 3722, - "source": 817, + "teal": 3731, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3694, - 3695, - 3696 + 3528 ] }, { "teal": 3732, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3697, - 3698 + 3529 ] }, { "teal": 3733, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3699, - 3700 + 3530, + 3531 ] }, { "teal": 3734, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3701 + 3532 ] }, { "teal": 3735, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3702 + 3533 ] }, { "teal": 3736, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3703, - 3704 + 3534, + 3535 ] }, { "teal": 3737, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3705 + 3536 ] }, { "teal": 3738, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3706 + 3537 ] }, { "teal": 3739, - "source": 841, + "source": "contracts/validatorRegistry.algo.ts:841", "pc": [ - 3707, - 3708 + 3538 ] }, { - "teal": 3740, - "source": 841, + "teal": 3742, + "source": "contracts/validatorRegistry.algo.ts:840", + "errorMessage": "must stake at least the minimum for this pool", "pc": [ - 3709 + 3539 ] }, { - "teal": 3741, - "source": 841, + "teal": 3746, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3710 + 3540, + 3541 ] }, { - "teal": 3742, - "source": 841, + "teal": 3747, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3711 + 3542, + 3543 ] }, { - "teal": 3745, - "source": 840, - "errorMessage": "must stake at least the minimum for this pool", + "teal": 3748, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3712 + 3544 ] }, { "teal": 3749, - "source": 846, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3713, - 3714 + 3545, + 3546 ] }, { "teal": 3750, - "source": 846, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3715, - 3716 + 3547 ] }, { "teal": 3751, - "source": 846, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3717 + 3548 ] }, { "teal": 3752, - "source": 846, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3718, - 3719 + 3549, + 3550 ] }, { "teal": 3753, - "source": 846, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3720 + 3551 ] }, { "teal": 3754, - "source": 846, + "source": "contracts/validatorRegistry.algo.ts:846", "pc": [ - 3721 + 3552, + 3553 ] }, { - "teal": 3755, - "source": 846, + "teal": 3758, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3722, - 3723 + 3554, + 3555 ] }, { - "teal": 3756, - "source": 846, + "teal": 3759, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3724 + 3556, + 3557 ] }, { - "teal": 3757, - "source": 846, + "teal": 3760, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3725, - 3726 + 3558 ] }, { "teal": 3761, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3727, - 3728 + 3559, + 3560 ] }, { "teal": 3762, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3729, - 3730 + 3561 ] }, { "teal": 3763, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3731 + 3562 ] }, { "teal": 3764, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3732, - 3733 + 3563, + 3564 ] }, { "teal": 3765, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3734 + 3565 ] }, { "teal": 3766, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3735 + 3566 ] }, { "teal": 3767, - "source": 847, + "source": "contracts/validatorRegistry.algo.ts:847", "pc": [ - 3736, - 3737 + 3567, + 3568 ] }, { - "teal": 3768, - "source": 847, + "teal": 3771, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3738 + 3569 ] }, { - "teal": 3769, - "source": 847, + "teal": 3772, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3739 + 3570, + 3571 ] }, { - "teal": 3770, - "source": 847, + "teal": 3777, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3740, - 3741 + 3572, + 3573 ] }, { - "teal": 3774, - "source": 848, + "teal": 3778, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3742 + 3574, + 3575 ] }, { - "teal": 3775, - "source": 848, + "teal": 3779, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3743, - 3744 + 3576 ] }, { "teal": 3780, - "source": 848, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3745, - 3746 + 3577, + 3578, + 3579 ] }, { - "teal": 3781, - "source": 848, + "teal": 3785, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3747, - 3748 + 3580, + 3581 ] }, { - "teal": 3782, - "source": 848, + "teal": 3786, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3749 + 3582, + 3583 ] }, { - "teal": 3783, - "source": 848, + "teal": 3787, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3750, - 3751, - 3752 + 3584, + 3585 ] }, { "teal": 3788, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3753, - 3754 + 3586 ] }, { "teal": 3789, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3755, - 3756 + 3587, + 3588 ] }, { "teal": 3790, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3757, - 3758 + 3589 ] }, { "teal": 3791, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3759 + 3590 ] }, { "teal": 3792, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3760, - 3761 + 3591 ] }, { "teal": 3793, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3762 + 3592 ] }, { "teal": 3794, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3763 + 3593, + 3594 ] }, { "teal": 3795, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3764 + 3595 ] }, { "teal": 3796, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3765 + 3596, + 3597 ] }, { "teal": 3797, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3766, - 3767 + 3598 ] }, { "teal": 3798, - "source": 849, + "source": "contracts/validatorRegistry.algo.ts:849", "pc": [ - 3768 + 3599, + 3600, + 3601 ] }, { - "teal": 3799, - "source": 849, + "teal": 3807, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3769, - 3770 + 3602, + 3603 ] }, { - "teal": 3800, - "source": 849, + "teal": 3808, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3771 + 3604 ] }, { - "teal": 3801, - "source": 849, + "teal": 3809, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3772, - 3773, - 3774 + 3605, + 3606 ] }, { "teal": 3810, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3775, - 3776 + 3607 ] }, { "teal": 3811, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3777 + 3608 ] }, { "teal": 3812, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3778, - 3779 + 3609 ] }, { "teal": 3813, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3780 + 3610 ] }, { "teal": 3814, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3781 + 3611, + 3612 ] }, { "teal": 3815, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3782 + 3613, + 3614 ] }, { "teal": 3816, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3783 + 3615, + 3616 ] }, { "teal": 3817, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3784, - 3785 + 3617 ] }, { "teal": 3818, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3786, - 3787 + 3618 ] }, { "teal": 3819, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3788, - 3789 + 3619 ] }, { "teal": 3820, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3790 + 3620 ] }, { "teal": 3821, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3791 + 3621 ] }, { "teal": 3822, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3792 + 3622 ] }, { "teal": 3823, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3793 + 3623 ] }, { "teal": 3824, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:851", "pc": [ - 3794 + 3624 ] }, { "teal": 3825, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:852", "pc": [ - 3795 + 3625, + 3626 ] }, { "teal": 3826, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:852", "pc": [ - 3796 + 3627 ] }, { "teal": 3827, - "source": 851, + "source": "contracts/validatorRegistry.algo.ts:852", "pc": [ - 3797 + 3628, + 3629 ] }, { "teal": 3828, - "source": 852, + "source": "contracts/validatorRegistry.algo.ts:852", "pc": [ - 3798, - 3799 + 3630 ] }, { "teal": 3829, - "source": 852, + "source": "contracts/validatorRegistry.algo.ts:853", "pc": [ - 3800 + 3631 ] }, { "teal": 3830, - "source": 852, + "source": "contracts/validatorRegistry.algo.ts:853", "pc": [ - 3801, - 3802 + 3632, + 3633 ] }, { "teal": 3831, - "source": 852, + "source": "contracts/validatorRegistry.algo.ts:853", "pc": [ - 3803 + 3634 ] }, { "teal": 3832, - "source": 853, + "source": "contracts/validatorRegistry.algo.ts:850", "pc": [ - 3804 + 3635 ] }, { "teal": 3833, - "source": 853, + "source": "contracts/validatorRegistry.algo.ts:850", "pc": [ - 3805, - 3806 + 3636, + 3637, + 3638 ] }, { - "teal": 3834, - "source": 853, + "teal": 3840, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3807 + 3639, + 3640 ] }, { - "teal": 3835, - "source": 850, + "teal": 3841, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3808 + 3641 ] }, { - "teal": 3836, - "source": 850, + "teal": 3842, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3809, - 3810, - 3811 + 3642 ] }, { "teal": 3843, - "source": 848, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3812, - 3813 + 3643, + 3644 ] }, { "teal": 3844, - "source": 848, + "source": "contracts/validatorRegistry.algo.ts:848", "pc": [ - 3814 + 3645, + 3646, + 3647 ] }, { - "teal": 3845, - "source": 848, + "teal": 3849, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3815 + 3648, + 3649 ] }, { - "teal": 3846, - "source": 848, + "teal": 3850, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3816, - 3817 + 3650 ] }, { - "teal": 3847, - "source": 848, + "teal": 3851, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3818, - 3819, - 3820 + 3651, + 3652 ] }, { "teal": 3852, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3821, - 3822 + 3653 ] }, { "teal": 3853, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3823 + 3654, + 3655 ] }, { "teal": 3854, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3824, - 3825 + 3656 ] }, { "teal": 3855, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3826 + 3657, + 3658 ] }, { "teal": 3856, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3827, - 3828 + 3659 ] }, { "teal": 3857, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3829 + 3660, + 3661 ] }, { "teal": 3858, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3830, - 3831 + 3662 ] }, { "teal": 3859, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3832 + 3663 ] }, { "teal": 3860, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3833, - 3834 + 3664, + 3665 ] }, { "teal": 3861, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3835 + 3666 ] }, { "teal": 3862, - "source": 858, + "source": "contracts/validatorRegistry.algo.ts:858", "pc": [ - 3836 + 3667 ] }, { - "teal": 3863, - "source": 858, + "teal": 3866, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3837, - 3838 + 3668, + 3669 ] }, { - "teal": 3864, - "source": 858, + "teal": 3869, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3839 + 3670, + 3671 ] }, { - "teal": 3865, - "source": 858, + "teal": 3870, + "source": "contracts/validatorRegistry.algo.ts:796", "pc": [ - 3840 + 3672 ] }, { - "teal": 3869, - "source": 796, + "teal": 3875, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3841, - 3842 + 3673, + 3674, + 3675 ] }, { - "teal": 3872, - "source": 796, + "teal": 3876, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3843, - 3844 + 3676 ] }, { - "teal": 3873, - "source": 796, + "teal": 3879, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3845 + 3677, + 3678, + 3679 ] }, { - "teal": 3878, - "source": 872, + "teal": 3880, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3846, - 3847, - 3848 + 3680 ] }, { - "teal": 3879, - "source": 872, + "teal": 3883, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3849 + 3681, + 3682, + 3683 ] }, { - "teal": 3882, - "source": 872, + "teal": 3884, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3850, - 3851, - 3852 + 3684 ] }, { - "teal": 3883, - "source": 872, + "teal": 3887, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3853 + 3685, + 3686, + 3687 ] }, { - "teal": 3886, - "source": 872, + "teal": 3888, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3854, - 3855, - 3856 + 3688 ] }, { - "teal": 3887, - "source": 872, + "teal": 3889, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3857 + 3689 ] }, { - "teal": 3890, - "source": 872, + "teal": 3903, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3858, - 3859, - 3860 + 3690, + 3691, + 3692 ] }, { - "teal": 3891, - "source": 872, + "teal": 3906, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3861 + 3693 ] }, { - "teal": 3892, - "source": 872, + "teal": 3907, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 3862 + 3694, + 3695 ] }, { - "teal": 3906, - "source": 872, + "teal": 3911, + "source": "contracts/validatorRegistry.algo.ts:873", "pc": [ - 3863, - 3864, - 3865 + 3696, + 3697 ] }, { - "teal": 3909, - "source": 872, + "teal": 3912, + "source": "contracts/validatorRegistry.algo.ts:873", "pc": [ - 3866 + 3698, + 3699, + 3700 ] }, { - "teal": 3910, - "source": 872, + "teal": 3916, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3867, - 3868 + 3701, + 3702 ] }, { - "teal": 3914, - "source": 873, + "teal": 3917, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3869, - 3870 + 3703, + 3704 ] }, { - "teal": 3915, - "source": 873, + "teal": 3918, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3871, - 3872, - 3873 + 3705 ] }, { "teal": 3919, - "source": 875, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3874, - 3875 + 3706, + 3707 ] }, { "teal": 3920, - "source": 875, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3876, - 3877 + 3708 ] }, { "teal": 3921, - "source": 875, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3878 + 3709 ] }, { "teal": 3922, - "source": 875, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3879, - 3880 + 3710, + 3711 ] }, { "teal": 3923, - "source": 875, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3881 + 3712 ] }, { "teal": 3924, - "source": 875, + "source": "contracts/validatorRegistry.algo.ts:875", "pc": [ - 3882 + 3713, + 3714 ] }, { - "teal": 3925, - "source": 875, + "teal": 3928, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3883, - 3884 + 3715, + 3716 ] }, { - "teal": 3926, - "source": 875, + "teal": 3929, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3885 + 3717 ] }, { - "teal": 3927, - "source": 875, + "teal": 3930, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3886, - 3887 + 3718 ] }, { "teal": 3931, - "source": 876, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3888, - 3889 + 3719 ] }, { "teal": 3932, - "source": 876, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3890 + 3720, + 3721, + 3722 ] }, { "teal": 3933, - "source": 876, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3891 + 3723, + 3724 ] }, { "teal": 3934, - "source": 876, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3892 + 3725 ] }, { "teal": 3935, - "source": 876, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3893, - 3894, - 3895 + 3726 ] }, { "teal": 3936, - "source": 876, + "source": "contracts/validatorRegistry.algo.ts:876", "pc": [ - 3896, - 3897 + 3727 ] }, { - "teal": 3937, - "source": 876, + "teal": 3940, + "source": "contracts/validatorRegistry.algo.ts:876", + "errorMessage": "node number out of allowable range", "pc": [ - 3898 + 3728 ] }, { - "teal": 3938, - "source": 876, + "teal": 3944, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 3899 + 3729 ] }, { - "teal": 3939, - "source": 876, + "teal": 3945, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 3900 + 3730, + 3731 ] }, { - "teal": 3943, - "source": 876, - "errorMessage": "node number out of allowable range", + "teal": 3950, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 3901 + 3732, + 3733 ] }, { - "teal": 3947, - "source": 878, + "teal": 3951, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 3902 + 3734 ] }, { - "teal": 3948, - "source": 878, + "teal": 3952, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 3903, - 3904 + 3735 ] }, { "teal": 3953, - "source": 878, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 3905, - 3906 + 3736, + 3737, + 3738 ] }, { - "teal": 3954, - "source": 878, + "teal": 3957, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 3907 + 3739 ] }, { - "teal": 3955, - "source": 878, + "teal": 3958, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 3908 + 3740, + 3741 ] }, { - "teal": 3956, - "source": 878, + "teal": 3963, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 3909, - 3910, - 3911 + 3742, + 3743 ] }, { - "teal": 3960, - "source": 879, + "teal": 3964, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 3912 + 3744, + 3745 ] }, { - "teal": 3961, - "source": 879, + "teal": 3965, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 3913, - 3914 + 3746 ] }, { "teal": 3966, - "source": 879, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 3915, - 3916 + 3747, + 3748, + 3749 ] }, { - "teal": 3967, - "source": 879, + "teal": 3971, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3917, - 3918 + 3750, + 3751 ] }, { - "teal": 3968, - "source": 879, + "teal": 3972, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3919 + 3752 ] }, { - "teal": 3969, - "source": 879, + "teal": 3973, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3920, - 3921, - 3922 + 3753, + 3754 ] }, { "teal": 3974, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3923, - 3924 + 3755 ] }, { "teal": 3975, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3925 + 3756 ] }, { "teal": 3976, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3926, - 3927 + 3757 ] }, { "teal": 3977, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3928 + 3758 ] }, { "teal": 3978, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3929 + 3759 ] }, { "teal": 3979, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3930 + 3760, + 3761 ] }, { "teal": 3980, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3931 + 3762 ] }, { "teal": 3981, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3932 + 3763 ] }, { "teal": 3982, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3933, - 3934 + 3764 ] }, { "teal": 3983, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3935 + 3765 ] }, { "teal": 3984, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3936 + 3766 ] }, { "teal": 3985, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3937 + 3767 ] }, { "teal": 3986, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3938 + 3768, + 3769 ] }, { "teal": 3987, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3939 + 3770 ] }, { "teal": 3988, - "source": 880, + "source": "contracts/validatorRegistry.algo.ts:880", "pc": [ - 3940 + 3771, + 3772, + 3773 ] }, { - "teal": 3989, - "source": 880, + "teal": 3993, + "source": "contracts/validatorRegistry.algo.ts:881", "pc": [ - 3941, - 3942 + 3774, + 3775 ] }, { - "teal": 3990, - "source": 880, + "teal": 3994, + "source": "contracts/validatorRegistry.algo.ts:881", "pc": [ - 3943 + 3776 ] }, { - "teal": 3991, - "source": 880, + "teal": 3995, + "source": "contracts/validatorRegistry.algo.ts:881", "pc": [ - 3944, - 3945, - 3946 + 3777 ] }, { "teal": 3996, - "source": 881, + "source": "contracts/validatorRegistry.algo.ts:881", "pc": [ - 3947, - 3948 + 3778, + 3779 ] }, { "teal": 3997, - "source": 881, + "source": "contracts/validatorRegistry.algo.ts:881", "pc": [ - 3949 + 3780 ] }, { - "teal": 3998, - "source": 881, + "teal": 4000, + "source": "contracts/validatorRegistry.algo.ts:881", + "errorMessage": "can't move to same node", "pc": [ - 3950 + 3781 ] }, { - "teal": 3999, - "source": 881, + "teal": 4004, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3951, - 3952 + 3782, + 3783 ] }, { - "teal": 4000, - "source": 881, + "teal": 4005, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3953 + 3784, + 3785 ] }, { - "teal": 4003, - "source": 881, - "errorMessage": "can't move to same node", + "teal": 4006, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3954 + 3786 ] }, { "teal": 4007, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3955, - 3956 + 3787 ] }, { "teal": 4008, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3957, - 3958 + 3788 ] }, { "teal": 4009, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3959 + 3789 ] }, { "teal": 4010, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3960 + 3790 ] }, { "teal": 4011, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3961 + 3791, + 3792 ] }, { "teal": 4012, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3962 + 3793 ] }, { "teal": 4013, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3963 + 3794 ] }, { "teal": 4014, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3964, - 3965 + 3795 ] }, { "teal": 4015, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3966 + 3796, + 3797 ] }, { "teal": 4016, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3967 + 3798 ] }, { "teal": 4017, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3968 + 3799, + 3800 ] }, { "teal": 4018, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3969, - 3970 + 3801 ] }, { "teal": 4019, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3971 + 3802 ] }, { "teal": 4020, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3972, - 3973 + 3803, + 3804 ] }, { "teal": 4021, - "source": 883, + "source": "contracts/validatorRegistry.algo.ts:883", "pc": [ - 3974 + 3805 ] }, { - "teal": 4022, - "source": 883, + "teal": 4027, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3975 + 3806 ] }, { - "teal": 4023, - "source": 883, + "teal": 4028, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3976, - 3977 + 3807, + 3808 ] }, { - "teal": 4024, - "source": 883, + "teal": 4029, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3978 + 3809, + 3810 ] }, { "teal": 4030, - "source": 886, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3979 + 3811, + 3812, + 3813, + 3814, + 3815, + 3816 ] }, { "teal": 4031, - "source": 886, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3980, - 3981 + 3817, + 3818 ] }, { - "teal": 4032, - "source": 886, + "teal": 4035, + "source": "contracts/validatorRegistry.algo.ts:887", "pc": [ - 3982, - 3983 + 3819, + 3820 ] }, { - "teal": 4033, - "source": 886, + "teal": 4036, + "source": "contracts/validatorRegistry.algo.ts:887", "pc": [ - 3984, - 3985, - 3986, - 3987, - 3988, - 3989 + 3821, + 3822 ] }, { - "teal": 4034, - "source": 886, + "teal": 4039, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3990, - 3991 + 3823 ] }, { - "teal": 4038, - "source": 887, + "teal": 4040, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3992, - 3993 + 3824, + 3825 ] }, { - "teal": 4039, - "source": 887, + "teal": 4043, + "source": "contracts/validatorRegistry.algo.ts:886", "pc": [ - 3994, - 3995 + 3826 ] }, { - "teal": 4042, - "source": 886, + "teal": 4047, + "source": "contracts/validatorRegistry.algo.ts:891", "pc": [ - 3996 + 3827, + 3828 ] }, { - "teal": 4043, - "source": 886, + "teal": 4048, + "source": "contracts/validatorRegistry.algo.ts:891", "pc": [ - 3997, - 3998 + 3829, + 3830 ] }, { - "teal": 4046, - "source": 886, + "teal": 4049, + "source": "contracts/validatorRegistry.algo.ts:891", "pc": [ - 3999 + 3831, + 3832 ] }, { "teal": 4050, - "source": 891, + "source": "contracts/validatorRegistry.algo.ts:891", "pc": [ - 4000, - 4001 + 3833, + 3834, + 3835 ] }, { - "teal": 4051, - "source": 891, + "teal": 4054, + "source": "contracts/validatorRegistry.algo.ts:892", "pc": [ - 4002, - 4003 + 3836 ] }, { - "teal": 4052, - "source": 891, + "teal": 4061, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 4004, - 4005 + 3837, + 3838 ] }, { - "teal": 4053, - "source": 891, + "teal": 4062, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 4006, - 4007, - 4008 + 3839 ] }, { - "teal": 4057, - "source": 892, + "teal": 4063, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 4009 + 3840 ] }, { "teal": 4064, - "source": 879, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 4010, - 4011 + 3841, + 3842 ] }, { "teal": 4065, - "source": 879, + "source": "contracts/validatorRegistry.algo.ts:879", "pc": [ - 4012 + 3843, + 3844, + 3845 ] }, { - "teal": 4066, - "source": 879, + "teal": 4072, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 4013 + 3846, + 3847 ] }, { - "teal": 4067, - "source": 879, + "teal": 4073, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 4014, - 4015 + 3848 ] }, { - "teal": 4068, - "source": 879, + "teal": 4074, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 4016, - 4017, - 4018 + 3849 ] }, { "teal": 4075, - "source": 878, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 4019, - 4020 + 3850, + 3851 ] }, { "teal": 4076, - "source": 878, + "source": "contracts/validatorRegistry.algo.ts:878", "pc": [ - 4021 + 3852, + 3853, + 3854 ] }, { - "teal": 4077, - "source": 878, + "teal": 4080, + "source": "contracts/validatorRegistry.algo.ts:896", + "errorMessage": "couldn't find pool app id in nodes to move", "pc": [ - 4022 + 3855 ] }, { - "teal": 4078, - "source": 878, + "teal": 4081, + "source": "contracts/validatorRegistry.algo.ts:872", "pc": [ - 4023, - 4024 + 3856 ] }, { - "teal": 4079, - "source": 878, + "teal": 4086, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4025, - 4026, - 4027 + 3857 ] }, { - "teal": 4083, - "source": 896, - "errorMessage": "couldn't find pool app id in nodes to move", + "teal": 4089, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4028 + 3858, + 3859, + 3860 ] }, { - "teal": 4084, - "source": 872, + "teal": 4090, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4029 + 3861 ] }, { - "teal": 4089, - "source": 910, + "teal": 4091, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4030 + 3862 ] }, { "teal": 4092, - "source": 910, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4031, - 4032, - 4033 + 3863, + 3864 ] }, { "teal": 4093, - "source": 910, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4034 + 3865 ] }, { - "teal": 4094, - "source": 910, + "teal": 4096, + "source": "contracts/validatorRegistry.algo.ts:910", + "errorMessage": "argument 0 (receiver) for emptyTokenRewards must be a address", "pc": [ - 4035 + 3866 ] }, { - "teal": 4095, - "source": 910, + "teal": 4099, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4036, - 4037 + 3867, + 3868, + 3869 ] }, { - "teal": 4096, - "source": 910, + "teal": 4100, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4038 + 3870 ] }, { - "teal": 4099, - "source": 910, - "errorMessage": "argument 0 (receiver) for emptyTokenRewards must be a address", + "teal": 4103, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4039 + 3871, + 3872, + 3873 ] }, { - "teal": 4102, - "source": 910, + "teal": 4104, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4040, - 4041, - 4042 + 3874 ] }, { - "teal": 4103, - "source": 910, + "teal": 4105, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4043 + 3875 ] }, { "teal": 4106, - "source": 910, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4044, - 4045, - 4046 + 3876 ] }, { "teal": 4107, - "source": 910, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4047 + 3877 ] }, { "teal": 4108, - "source": 910, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4048 + 3878 ] }, { - "teal": 4109, - "source": 910, + "teal": 4122, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4049 + 3879, + 3880, + 3881 ] }, { - "teal": 4110, - "source": 910, + "teal": 4125, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4050 + 3882 ] }, { - "teal": 4111, - "source": 910, + "teal": 4126, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4051 + 3883, + 3884 ] }, { - "teal": 4125, - "source": 910, + "teal": 4130, + "source": "contracts/validatorRegistry.algo.ts:911", "pc": [ - 4052, - 4053, - 4054 + 3885, + 3886 ] }, { - "teal": 4128, - "source": 910, + "teal": 4131, + "source": "contracts/validatorRegistry.algo.ts:911", "pc": [ - 4055 + 3887, + 3888, + 3889 ] }, { - "teal": 4129, - "source": 910, + "teal": 4135, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4056, - 4057 + 3890, + 3891 ] }, { - "teal": 4133, - "source": 911, + "teal": 4136, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4058, - 4059 + 3892 ] }, { - "teal": 4134, - "source": 911, + "teal": 4137, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4060, - 4061, - 4062 + 3893 ] }, { "teal": 4138, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4063, - 4064 + 3894, + 3895 ] }, { "teal": 4139, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4065 + 3896 ] }, { "teal": 4140, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4066 + 3897 ] }, { "teal": 4141, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4067, - 4068 + 3898, + 3899 ] }, { "teal": 4142, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4069 + 3900 ] }, { "teal": 4143, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4070 + 3901 ] }, { "teal": 4144, - "source": 912, + "source": "contracts/validatorRegistry.algo.ts:912", "pc": [ - 4071, - 4072 + 3902, + 3903 ] }, { - "teal": 4145, - "source": 912, + "teal": 4148, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4073 + 3904, + 3905 ] }, { - "teal": 4146, - "source": 912, + "teal": 4149, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4074 + 3906 ] }, { - "teal": 4147, - "source": 912, + "teal": 4150, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4075, - 4076 + 3907 ] }, { "teal": 4151, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4077, - 4078 + 3908, + 3909 ] }, { "teal": 4152, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4079 + 3910 ] }, { "teal": 4153, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4080 + 3911 ] }, { "teal": 4154, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4081, - 4082 + 3912, + 3913 ] }, { "teal": 4155, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4083 + 3914 ] }, { "teal": 4156, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4084 + 3915 ] }, { "teal": 4157, - "source": 913, + "source": "contracts/validatorRegistry.algo.ts:913", "pc": [ - 4085, - 4086 + 3916, + 3917 ] }, { - "teal": 4158, - "source": 913, + "teal": 4161, + "source": "contracts/validatorRegistry.algo.ts:914", "pc": [ - 4087 + 3918, + 3919 ] }, { - "teal": 4159, - "source": 913, + "teal": 4162, + "source": "contracts/validatorRegistry.algo.ts:914", "pc": [ - 4088 + 3920 ] }, { - "teal": 4160, - "source": 913, + "teal": 4163, + "source": "contracts/validatorRegistry.algo.ts:914", "pc": [ - 4089, - 4090 + 3921 ] }, { - "teal": 4164, - "source": 914, + "teal": 4166, + "source": "contracts/validatorRegistry.algo.ts:914", + "errorMessage": "this validator doesn't have a reward token defined", "pc": [ - 4091, - 4092 + 3922 ] }, { - "teal": 4165, - "source": 914, + "teal": 4170, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4093 + 3923, + 3924 ] }, { - "teal": 4166, - "source": 914, + "teal": 4171, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4094 + 3925 ] }, { - "teal": 4169, - "source": 914, - "errorMessage": "this validator doesn't have a reward token defined", + "teal": 4172, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4095 + 3926 ] }, { "teal": 4173, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4096, - 4097 + 3927, + 3928 ] }, { "teal": 4174, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4098 + 3929 ] }, { "teal": 4175, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4099 + 3930 ] }, { "teal": 4176, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4100, - 4101 + 3931, + 3932 ] }, { "teal": 4177, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4102 + 3933 ] }, { "teal": 4178, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4103 + 3934 ] }, { "teal": 4179, - "source": 915, + "source": "contracts/validatorRegistry.algo.ts:915", "pc": [ - 4104, - 4105 + 3935, + 3936 ] }, { - "teal": 4180, - "source": 915, + "teal": 4184, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4106 + 3937, + 3938 ] }, { - "teal": 4181, - "source": 915, + "teal": 4185, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4107 + 3939, + 3940 ] }, { - "teal": 4182, - "source": 915, + "teal": 4186, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4108, - 4109 + 3941 ] }, { "teal": 4187, - "source": 918, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4110, - 4111 + 3942, + 3943 ] }, { "teal": 4188, - "source": 918, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4112, - 4113 + 3944, + 3945 ] }, { "teal": 4189, - "source": 918, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4114 + 3946 ] }, { "teal": 4190, - "source": 918, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4115, - 4116 + 3947, + 3948 ] }, { "teal": 4191, - "source": 918, + "source": "contracts/validatorRegistry.algo.ts:918", "pc": [ - 4117, - 4118 + 3949 ] }, { "teal": 4192, - "source": 918, + "source": "contracts/validatorRegistry.algo.ts:917", "pc": [ - 4119 + 3950, + 3951 ] }, { - "teal": 4193, - "source": 918, + "teal": 4199, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4120, - 4121 + 3952 ] }, { - "teal": 4194, - "source": 918, + "teal": 4200, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4122 + 3953, + 3954 ] }, { - "teal": 4195, - "source": 917, + "teal": 4201, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4123, - 4124 + 3955, + 3956 ] }, { "teal": 4202, - "source": 921, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4125 + 3957, + 3958 ] }, { "teal": 4203, - "source": 921, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4126, - 4127 + 3959, + 3960 ] }, { - "teal": 4204, - "source": 921, + "teal": 4207, + "source": "contracts/validatorRegistry.algo.ts:922", "pc": [ - 4128, - 4129 + 3961, + 3962 ] }, { - "teal": 4205, - "source": 921, + "teal": 4208, + "source": "contracts/validatorRegistry.algo.ts:922", "pc": [ - 4130, - 4131 + 3963, + 3964 ] }, { - "teal": 4206, - "source": 921, + "teal": 4212, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4132, - 4133 + 3965, + 3966 ] }, { - "teal": 4210, - "source": 922, + "teal": 4213, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4134, - 4135 + 3967, + 3968 ] }, { - "teal": 4211, - "source": 922, + "teal": 4214, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4136, - 4137 + 3969, + 3970 ] }, { "teal": 4215, - "source": 923, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4138, - 4139 + 3971 ] }, { "teal": 4216, - "source": 923, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4140, - 4141 + 3972, + 3973 ] }, { "teal": 4217, - "source": 923, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4142, - 4143 + 3974, + 3975 ] }, { "teal": 4218, - "source": 923, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4144 + 3976 ] }, { "teal": 4219, - "source": 923, + "source": "contracts/validatorRegistry.algo.ts:923", "pc": [ - 4145, - 4146 + 3977, + 3978 ] }, { - "teal": 4220, - "source": 923, + "teal": 4222, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4147, - 4148 + 3979 ] }, { - "teal": 4221, - "source": 923, + "teal": 4223, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4149 + 3980, + 3981 ] }, { - "teal": 4222, - "source": 923, + "teal": 4226, + "source": "contracts/validatorRegistry.algo.ts:921", "pc": [ - 4150, - 4151 + 3982 ] }, { - "teal": 4225, - "source": 921, + "teal": 4233, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4152 + 3983, + 3984 ] }, { - "teal": 4226, - "source": 921, + "teal": 4234, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4153, - 4154 + 3985, + 3986 ] }, { - "teal": 4229, - "source": 921, + "teal": 4235, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4155 + 3987 ] }, { "teal": 4236, - "source": 926, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4156, - 4157 + 3988, + 3989 ] }, { "teal": 4237, - "source": 926, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4158, - 4159 + 3990, + 3991 ] }, { "teal": 4238, - "source": 926, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4160 + 3992 ] }, { "teal": 4239, - "source": 926, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4161, - 4162 + 3993, + 3994 ] }, { "teal": 4240, - "source": 926, + "source": "contracts/validatorRegistry.algo.ts:926", "pc": [ - 4163, - 4164 + 3995 ] }, { - "teal": 4241, - "source": 926, + "teal": 4243, + "source": "contracts/validatorRegistry.algo.ts:925", + "errorMessage": "balance of remaining reward tokens should match the held back amount", "pc": [ - 4165 + 3996 ] }, { - "teal": 4242, - "source": 926, + "teal": 4247, + "source": "contracts/validatorRegistry.algo.ts:929", "pc": [ - 4166, - 4167 + 3997, + 3998 ] }, { - "teal": 4243, - "source": 926, + "teal": 4250, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4168 + 3999, + 4000 ] }, { - "teal": 4246, - "source": 925, - "errorMessage": "balance of remaining reward tokens should match the held back amount", + "teal": 4253, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4169 + 4001, + 4002 ] }, { - "teal": 4250, - "source": 929, + "teal": 4254, + "source": "contracts/validatorRegistry.algo.ts:910", "pc": [ - 4170, - 4171 + 4003 ] }, { - "teal": 4253, - "source": 910, + "teal": 4258, + "source": "contracts/validatorRegistry.algo.ts:1021", "pc": [ - 4172, - 4173 + 4004, + 4005, + 4006 ] }, { - "teal": 4256, - "source": 910, + "teal": 4265, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4174, - 4175 + 4007, + 4008 ] }, { - "teal": 4257, - "source": 910, + "teal": 4266, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4176 + 4009 ] }, { - "teal": 4261, - "source": 1021, + "teal": 4267, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4177, - 4178, - 4179 + 4010, + 4011 ] }, { "teal": 4268, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4180, - 4181 + 4012 ] }, { "teal": 4269, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4182 + 4013, + 4014 ] }, { "teal": 4270, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4183, - 4184 + 4015 ] }, { "teal": 4271, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4185 + 4016 ] }, { "teal": 4272, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4186, - 4187 + 4017, + 4018 ] }, { "teal": 4273, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4188 + 4019 ] }, { "teal": 4274, - "source": 1023, + "source": "contracts/validatorRegistry.algo.ts:1023", "pc": [ - 4189 + 4020 ] }, { - "teal": 4275, - "source": 1023, + "teal": 4277, + "source": "contracts/validatorRegistry.algo.ts:1022", + "errorMessage": "can only be called by validator owner", "pc": [ - 4190, - 4191 + 4021 ] }, { - "teal": 4276, - "source": 1023, + "teal": 4278, + "source": "contracts/validatorRegistry.algo.ts:1021", "pc": [ - 4192 + 4022 ] }, { - "teal": 4277, - "source": 1023, + "teal": 4282, + "source": "contracts/validatorRegistry.algo.ts:1028", "pc": [ - 4193 + 4023, + 4024, + 4025 ] }, { - "teal": 4280, - "source": 1022, - "errorMessage": "can only be called by validator owner", + "teal": 4290, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4194 + 4026, + 4027 ] }, { - "teal": 4281, - "source": 1021, + "teal": 4291, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4195 + 4028 ] }, { - "teal": 4285, - "source": 1028, + "teal": 4292, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4196, - 4197, - 4198 + 4029, + 4030 ] }, { "teal": 4293, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4199, - 4200 + 4031 ] }, { "teal": 4294, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4201 + 4032, + 4033 ] }, { "teal": 4295, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4202, - 4203 + 4034 ] }, { "teal": 4296, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4204 + 4035 ] }, { "teal": 4297, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4205, - 4206 + 4036, + 4037 ] }, { "teal": 4298, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4207 + 4038 ] }, { "teal": 4299, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4208 + 4039 ] }, { "teal": 4300, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4209, - 4210 + 4040 ] }, { "teal": 4301, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4211 + 4041, + 4042, + 4043 ] }, { "teal": 4302, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4212 + 4044, + 4045 ] }, { "teal": 4303, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4213 + 4046, + 4047 ] }, { "teal": 4304, - "source": 1030, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4214, - 4215, - 4216 + 4048, + 4049 ] }, { "teal": 4305, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4217, - 4218 + 4050 ] }, { "teal": 4306, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4219, - 4220 + 4051, + 4052 ] }, { "teal": 4307, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4221, - 4222 + 4053 ] }, { "teal": 4308, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4223 + 4054 ] }, { "teal": 4309, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4224, - 4225 + 4055, + 4056 ] }, { "teal": 4310, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4226 + 4057 ] }, { "teal": 4311, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1031", "pc": [ - 4227 + 4058 ] }, { "teal": 4312, - "source": 1031, + "source": "contracts/validatorRegistry.algo.ts:1030", "pc": [ - 4228, - 4229 + 4059 ] }, { - "teal": 4313, - "source": 1031, + "teal": 4316, + "source": "contracts/validatorRegistry.algo.ts:1029", + "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 4230 + 4060 ] }, { - "teal": 4314, - "source": 1031, + "teal": 4317, + "source": "contracts/validatorRegistry.algo.ts:1028", "pc": [ - 4231 + 4061 ] }, { - "teal": 4315, - "source": 1030, + "teal": 4325, + "source": "contracts/validatorRegistry.algo.ts:1041", "pc": [ - 4232 + 4062, + 4063, + 4064 ] }, { - "teal": 4319, - "source": 1029, - "errorMessage": "can only be called by owner or manager of validator", + "teal": 4329, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4233 + 4065 ] }, { - "teal": 4320, - "source": 1028, + "teal": 4330, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4234 + 4066, + 4067 ] }, { - "teal": 4328, - "source": 1041, + "teal": 4331, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4235, - 4236, - 4237 + 4068, + 4069, + 4070 ] }, { "teal": 4332, - "source": 1042, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4238 + 4071 ] }, { "teal": 4333, - "source": 1042, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4239, - 4240 + 4072 ] }, { "teal": 4334, - "source": 1042, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4241, - 4242, - 4243 + 4073 ] }, { "teal": 4335, - "source": 1042, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4244 + 4074 ] }, { "teal": 4336, - "source": 1042, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4245 + 4075 ] }, { "teal": 4337, - "source": 1042, + "source": "contracts/validatorRegistry.algo.ts:1042", "pc": [ - 4246 + 4076 ] }, { - "teal": 4338, - "source": 1042, + "teal": 4340, + "source": "contracts/validatorRegistry.algo.ts:1042", + "errorMessage": "the specified validator id isn't valid", "pc": [ - 4247 + 4077 ] }, { - "teal": 4339, - "source": 1042, + "teal": 4344, + "source": "contracts/validatorRegistry.algo.ts:1043", "pc": [ - 4248 + 4078, + 4079 ] }, { - "teal": 4340, - "source": 1042, + "teal": 4345, + "source": "contracts/validatorRegistry.algo.ts:1043", "pc": [ - 4249 + 4080, + 4081, + 4082 ] }, { - "teal": 4343, - "source": 1042, - "errorMessage": "the specified validator id isn't valid", + "teal": 4346, + "source": "contracts/validatorRegistry.algo.ts:1043", "pc": [ - 4250 + 4083 ] }, { "teal": 4347, - "source": 1043, + "source": "contracts/constants.algo.ts:30", "pc": [ - 4251, - 4252 + 4084 ] }, { "teal": 4348, - "source": 1043, + "source": "contracts/validatorRegistry.algo.ts:1043", "pc": [ - 4253, - 4254, - 4255 + 4085 ] }, { - "teal": 4349, - "source": 1043, + "teal": 4351, + "source": "contracts/validatorRegistry.algo.ts:1043", + "errorMessage": "pool id not in valid range", "pc": [ - 4256 + 4086 ] }, { - "teal": 4350, - "source": 58, + "teal": 4358, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4257 + 4087, + 4088 ] }, { - "teal": 4351, - "source": 1043, + "teal": 4359, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4258 + 4089, + 4090, + 4091 ] }, { - "teal": 4354, - "source": 1043, - "errorMessage": "pool id not in valid range", + "teal": 4360, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4259 + 4092 ] }, { "teal": 4361, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4260, - 4261 + 4093 ] }, { "teal": 4362, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4262, - 4263, - 4264 + 4094 ] }, { "teal": 4363, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4265 + 4095 ] }, { "teal": 4364, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4266 + 4096, + 4097, + 4098 ] }, { "teal": 4365, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4267 + 4099, + 4100 ] }, { "teal": 4366, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4268 + 4101, + 4102, + 4103 ] }, { "teal": 4367, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4269, - 4270, - 4271 + 4104 ] }, { "teal": 4368, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4272, - 4273 + 4105, + 4106 ] }, { "teal": 4369, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4274, - 4275, - 4276 + 4107, + 4108 ] }, { "teal": 4370, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4277 + 4109 ] }, { "teal": 4371, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4278, - 4279 + 4110, + 4111 ] }, { "teal": 4372, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4280, - 4281 + 4112, + 4113, + 4114 ] }, { "teal": 4373, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4282 + 4115 ] }, { "teal": 4374, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4283, - 4284 + 4116 ] }, { "teal": 4375, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4285, - 4286, - 4287 + 4117 ] }, { "teal": 4376, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4288 + 4118, + 4119 ] }, { "teal": 4377, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4289 + 4120 ] }, { "teal": 4378, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4290 + 4121 ] }, { "teal": 4379, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4291, - 4292 + 4122 ] }, { "teal": 4380, - "source": 1045, + "source": "contracts/validatorRegistry.algo.ts:1045", "pc": [ - 4293 + 4123 ] }, { - "teal": 4381, - "source": 1045, + "teal": 4384, + "source": "contracts/validatorRegistry.algo.ts:1044", + "errorMessage": "pool id outside of range of pools created for this validator", "pc": [ - 4294 + 4124 ] }, { - "teal": 4382, - "source": 1045, + "teal": 4391, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4295 + 4125, + 4126 ] }, { - "teal": 4383, - "source": 1045, + "teal": 4392, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4296 + 4127, + 4128, + 4129 ] }, { - "teal": 4387, - "source": 1044, - "errorMessage": "pool id outside of range of pools created for this validator", + "teal": 4393, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4297 + 4130 ] }, { "teal": 4394, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4298, - 4299 + 4131, + 4132 ] }, { "teal": 4395, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4300, - 4301, - 4302 + 4133, + 4134 ] }, { "teal": 4396, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4303 + 4135, + 4136, + 4137 ] }, { "teal": 4397, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4304, - 4305 + 4138 ] }, { "teal": 4398, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4306, - 4307 + 4139 ] }, { "teal": 4399, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4308, - 4309, - 4310 + 4140 ] }, { "teal": 4400, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4311 + 4141, + 4142 ] }, { "teal": 4401, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4312 + 4143 ] }, { "teal": 4402, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4313 + 4144 ] }, { "teal": 4403, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4314, - 4315 + 4145 ] }, { "teal": 4404, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4316 + 4146 ] }, { "teal": 4405, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4317 + 4147 ] }, { "teal": 4406, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4318 + 4148 ] }, { "teal": 4407, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4319 + 4149, + 4150 ] }, { "teal": 4408, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4320 + 4151, + 4152, + 4153 ] }, { "teal": 4409, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4321 + 4154 ] }, { "teal": 4410, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4322, - 4323 + 4155 ] }, { "teal": 4411, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4324, - 4325, - 4326 + 4156 ] }, { "teal": 4412, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4327 + 4157, + 4158 ] }, { "teal": 4413, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4328 + 4159 ] }, { "teal": 4414, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4329 + 4160 ] }, { "teal": 4415, - "source": 1051, + "source": "contracts/validatorRegistry.algo.ts:1051", "pc": [ - 4330, - 4331 + 4161 ] }, { - "teal": 4416, - "source": 1051, + "teal": 4418, + "source": "contracts/validatorRegistry.algo.ts:1050", + "errorMessage": "The passed in app id doesn't match the passed in ids", "pc": [ - 4332 + 4162 ] }, { - "teal": 4417, - "source": 1051, + "teal": 4422, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4333 + 4163, + 4164 ] }, { - "teal": 4418, - "source": 1051, + "teal": 4423, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4334 + 4165, + 4166 ] }, { - "teal": 4421, - "source": 1050, - "errorMessage": "The passed in app id doesn't match the passed in ids", + "teal": 4424, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4335 + 4167, + 4168, + 4169 ] }, { "teal": 4425, - "source": 1055, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4336, - 4337 + 4170 ] }, { "teal": 4426, - "source": 1055, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4338, - 4339 + 4171, + 4172 ] }, { "teal": 4427, - "source": 1055, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4340, - 4341, - 4342 + 4173 ] }, { "teal": 4428, - "source": 1055, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4343 + 4174 ] }, { "teal": 4429, - "source": 1055, + "source": "contracts/validatorRegistry.algo.ts:1055", "pc": [ - 4344, - 4345 + 4175 ] }, { - "teal": 4430, - "source": 1055, + "teal": 4433, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4346 + 4176, + 4177 ] }, { - "teal": 4431, - "source": 1055, + "teal": 4434, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4347 + 4178, + 4179, + 4180 ] }, { - "teal": 4432, - "source": 1055, + "teal": 4435, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4348 + 4181 ] }, { "teal": 4436, - "source": 1057, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4349, - 4350 + 4182, + 4183 ] }, { "teal": 4437, - "source": 1057, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4351, - 4352, - 4353 + 4184, + 4185, + 4186 ] }, { "teal": 4438, - "source": 1057, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4354 + 4187 ] }, { "teal": 4439, - "source": 1057, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4355, - 4356 + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200 ] }, { "teal": 4440, - "source": 1057, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4357, - 4358, - 4359 + 4201 ] }, { - "teal": 4441, - "source": 1057, + "teal": 4443, + "source": "contracts/validatorRegistry.algo.ts:1057", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')", "pc": [ - 4360 + 4202 ] }, { - "teal": 4442, - "source": 1057, + "teal": 4444, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4361, - 4362, - 4363, - 4364, - 4365, - 4366, - 4367, - 4368, - 4369, - 4370, - 4371, - 4372, - 4373 + 4203 ] }, { - "teal": 4443, - "source": 1057, + "teal": 4445, + "source": "contracts/validatorRegistry.algo.ts:1057", "pc": [ - 4374 + 4204 ] }, { - "teal": 4446, - "source": 1057, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')", + "teal": 4449, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4375 + 4205, + 4206 ] }, { - "teal": 4447, - "source": 1057, + "teal": 4450, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4376 + 4207, + 4208, + 4209 ] }, { - "teal": 4448, - "source": 1057, + "teal": 4451, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4377 + 4210 ] }, { "teal": 4452, - "source": 1058, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4378, - 4379 + 4211, + 4212 ] }, { "teal": 4453, - "source": 1058, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4380, - 4381, - 4382 + 4213, + 4214, + 4215 ] }, { "teal": 4454, - "source": 1058, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4383 + 4216 ] }, { "teal": 4455, - "source": 1058, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4384, - 4385 + 4217, + 4218, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224 ] }, { "teal": 4456, - "source": 1058, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4386, - 4387, - 4388 + 4225 ] }, { - "teal": 4457, - "source": 1058, + "teal": 4459, + "source": "contracts/validatorRegistry.algo.ts:1058", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')", "pc": [ - 4389 + 4226 ] }, { - "teal": 4458, - "source": 1058, + "teal": 4460, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4390, - 4391, - 4392, - 4393, - 4394, - 4395, - 4396, - 4397 + 4227 ] }, { - "teal": 4459, - "source": 1058, + "teal": 4461, + "source": "contracts/validatorRegistry.algo.ts:1058", "pc": [ - 4398 + 4228 ] }, { "teal": 4462, - "source": 1058, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')", + "source": "contracts/validatorRegistry.algo.ts:1041", "pc": [ - 4399 + 4229 ] }, { - "teal": 4463, - "source": 1058, + "teal": 4471, + "source": "contracts/validatorRegistry.algo.ts:1067", "pc": [ - 4400 + 4230, + 4231, + 4232 ] }, { - "teal": 4464, - "source": 1058, + "teal": 4474, + "source": "contracts/validatorRegistry.algo.ts:1067", "pc": [ - 4401 + 4233 ] }, { - "teal": 4465, - "source": 1041, + "teal": 4475, + "source": "contracts/validatorRegistry.algo.ts:1067", "pc": [ - 4402 + 4234 ] }, { - "teal": 4474, - "source": 1067, + "teal": 4479, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4403, - 4404, - 4405 + 4235 ] }, { - "teal": 4477, - "source": 1067, + "teal": 4480, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4406 + 4236, + 4237 ] }, { - "teal": 4478, - "source": 1067, + "teal": 4481, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4407 + 4238 ] }, { "teal": 4482, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4408 + 4239 ] }, { "teal": 4483, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4409, - 4410 + 4240, + 4241 ] }, { - "teal": 4484, - "source": 1068, + "teal": 4488, + "source": "contracts/validatorRegistry.algo.ts:1069", "pc": [ - 4411 + 4242, + 4243 ] }, { - "teal": 4485, - "source": 1068, + "teal": 4489, + "source": "contracts/validatorRegistry.algo.ts:1069", "pc": [ - 4412 + 4244 ] }, { - "teal": 4486, - "source": 1068, + "teal": 4490, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4413, - 4414 + 4245 ] }, { "teal": 4491, - "source": 1069, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4415, - 4416 + 4246, + 4247 ] }, { "teal": 4492, - "source": 1069, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4417 + 4248 ] }, { "teal": 4493, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4418 + 4249 ] }, { "teal": 4494, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4419, - 4420 + 4250, + 4251 ] }, { "teal": 4495, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4421 + 4252 ] }, { "teal": 4496, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1069", "pc": [ - 4422 + 4253 ] }, { "teal": 4497, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1069", "pc": [ - 4423, - 4424 + 4254 ] }, { "teal": 4498, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1069", "pc": [ - 4425 + 4255 ] }, { "teal": 4499, - "source": 1069, + "source": "contracts/validatorRegistry.algo.ts:1069", "pc": [ - 4426 + 4256, + 4257, + 4258 ] }, { - "teal": 4500, - "source": 1069, + "teal": 4504, + "source": "contracts/validatorRegistry.algo.ts:1072", "pc": [ - 4427 + 4259, + 4260 ] }, { - "teal": 4501, - "source": 1069, + "teal": 4505, + "source": "contracts/validatorRegistry.algo.ts:1072", "pc": [ - 4428 + 4261 ] }, { - "teal": 4502, - "source": 1069, + "teal": 4506, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4429, - 4430, - 4431 + 4262 ] }, { "teal": 4507, - "source": 1072, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4432, - 4433 + 4263, + 4264 ] }, { "teal": 4508, - "source": 1072, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4434 + 4265 ] }, { "teal": 4509, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4435 + 4266 ] }, { "teal": 4510, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4436, - 4437 + 4267, + 4268 ] }, { "teal": 4511, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4438 + 4269 ] }, { "teal": 4512, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1072", "pc": [ - 4439 + 4270 ] }, { "teal": 4513, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1072", "pc": [ - 4440, - 4441 + 4271, + 4272 ] }, { "teal": 4514, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1072", "pc": [ - 4442 + 4273 ] }, { - "teal": 4515, - "source": 1072, + "teal": 4517, + "source": "contracts/validatorRegistry.algo.ts:1072", + "errorMessage": "global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')", "pc": [ - 4443 + 4274 ] }, { - "teal": 4516, - "source": 1072, + "teal": 4518, + "source": "contracts/validatorRegistry.algo.ts:1072", "pc": [ - 4444, - 4445 + 4275, + 4276 ] }, { - "teal": 4517, - "source": 1072, + "teal": 4523, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4446 + 4277 ] }, { - "teal": 4520, - "source": 1072, - "errorMessage": "global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')", + "teal": 4524, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4447 + 4278, + 4279 ] }, { - "teal": 4521, - "source": 1072, + "teal": 4525, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4448, - 4449 + 4280 ] }, { "teal": 4526, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4450 + 4281, + 4282 ] }, { "teal": 4527, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4451, - 4452 + 4283 ] }, { "teal": 4528, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4453 + 4284 ] }, { "teal": 4529, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4454, - 4455 + 4285, + 4286 ] }, { "teal": 4530, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4456 + 4287 ] }, { "teal": 4531, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4457 + 4288, + 4289 ] }, { "teal": 4532, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4458, - 4459 + 4290 ] }, { "teal": 4533, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4460 + 4291 ] }, { "teal": 4534, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4461, - 4462 + 4292, + 4293, + 4294 ] }, { "teal": 4535, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4463 + 4295, + 4296 ] }, { "teal": 4536, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4464 + 4297, + 4298 ] }, { "teal": 4537, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4465, - 4466, - 4467 + 4299 ] }, { "teal": 4538, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4468, - 4469 + 4300, + 4301 ] }, { "teal": 4539, - "source": 1074, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4470, - 4471 + 4302 ] }, { "teal": 4540, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4472 + 4303 ] }, { "teal": 4541, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4473, - 4474 + 4304, + 4305 ] }, { "teal": 4542, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1068", "pc": [ - 4475 + 4306 ] }, { "teal": 4543, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4476 + 4307, + 4308 ] }, { "teal": 4544, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4477, - 4478 + 4309 ] }, { "teal": 4545, - "source": 1068, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4479 + 4310 ] }, { - "teal": 4546, - "source": 1074, + "teal": 4548, + "source": "contracts/validatorRegistry.algo.ts:1074", "pc": [ - 4480, - 4481 + 4311, + 4312, + 4313 ] }, { - "teal": 4547, - "source": 1074, + "teal": 4553, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4482 + 4314, + 4315 ] }, { - "teal": 4548, - "source": 1074, + "teal": 4554, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4483 + 4316, + 4317 ] }, { - "teal": 4551, - "source": 1074, + "teal": 4555, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4484, - 4485, - 4486 + 4318 ] }, { "teal": 4556, - "source": 1076, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4487, - 4488 + 4319, + 4320 ] }, { "teal": 4557, - "source": 1076, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4489, - 4490 + 4321 ] }, { "teal": 4558, - "source": 1076, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4491 + 4322 ] }, { "teal": 4559, - "source": 1076, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4492, - 4493 + 4323, + 4324 ] }, { "teal": 4560, - "source": 1076, + "source": "contracts/validatorRegistry.algo.ts:1076", "pc": [ - 4494 + 4325 ] }, { - "teal": 4561, - "source": 1076, + "teal": 4565, + "source": "contracts/validatorRegistry.algo.ts:1067", "pc": [ - 4495 + 4326 ] }, { - "teal": 4562, - "source": 1076, + "teal": 4569, + "source": "contracts/validatorRegistry.algo.ts:1081", "pc": [ - 4496, - 4497 + 4327, + 4328, + 4329 ] }, { - "teal": 4563, - "source": 1076, + "teal": 4573, + "source": "contracts/validatorRegistry.algo.ts:1083", "pc": [ - 4498 + 4330, + 4331 ] }, { - "teal": 4568, - "source": 1067, + "teal": 4574, + "source": "contracts/validatorRegistry.algo.ts:1083", "pc": [ - 4499 + 4332, + 4333, + 4334 ] }, { - "teal": 4572, - "source": 1081, + "teal": 4575, + "source": "contracts/validatorRegistry.algo.ts:1083", "pc": [ - 4500, - 4501, - 4502 + 4335, + 4336 ] }, { "teal": 4576, - "source": 1083, + "source": "contracts/validatorRegistry.algo.ts:1083", "pc": [ - 4503, - 4504 + 4337 ] }, { "teal": 4577, - "source": 1083, + "source": "contracts/validatorRegistry.algo.ts:1083", "pc": [ - 4505, - 4506, - 4507 + 4338 ] }, { - "teal": 4578, - "source": 1083, + "teal": 4581, + "source": "contracts/validatorRegistry.algo.ts:1084", "pc": [ - 4508, - 4509 + 4339, + 4340 ] }, { - "teal": 4579, - "source": 1083, + "teal": 4582, + "source": "contracts/validatorRegistry.algo.ts:1084", "pc": [ - 4510 + 4341, + 4342, + 4343 ] }, { - "teal": 4580, - "source": 1083, + "teal": 4583, + "source": "contracts/validatorRegistry.algo.ts:1084", "pc": [ - 4511 + 4344, + 4345 ] }, { "teal": 4584, - "source": 1084, + "source": "contracts/validatorRegistry.algo.ts:1084", "pc": [ - 4512, - 4513 + 4346 ] }, { "teal": 4585, - "source": 1084, + "source": "contracts/validatorRegistry.algo.ts:1084", "pc": [ - 4514, - 4515, - 4516 + 4347 ] }, { - "teal": 4586, - "source": 1084, + "teal": 4589, + "source": "contracts/validatorRegistry.algo.ts:1085", "pc": [ - 4517, - 4518 + 4348, + 4349 ] }, { - "teal": 4587, - "source": 1084, + "teal": 4590, + "source": "contracts/validatorRegistry.algo.ts:1085", "pc": [ - 4519 + 4350, + 4351 ] }, { - "teal": 4588, - "source": 1084, + "teal": 4591, + "source": "contracts/validatorRegistry.algo.ts:1085", "pc": [ - 4520 + 4352, + 4353, + 4354 ] }, { "teal": 4592, - "source": 1085, + "source": "contracts/validatorRegistry.algo.ts:1085", "pc": [ - 4521, - 4522 + 4355 ] }, { - "teal": 4593, - "source": 1085, + "teal": 4595, + "source": "contracts/validatorRegistry.algo.ts:1085", + "errorMessage": "sender must be owner to add new validator", "pc": [ - 4523, - 4524 + 4356 ] }, { - "teal": 4594, - "source": 1085, + "teal": 4602, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4525, - 4526, - 4527 + 4357, + 4358 ] }, { - "teal": 4595, - "source": 1085, + "teal": 4603, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4528 + 4359, + 4360, + 4361 ] }, { - "teal": 4598, - "source": 1085, - "errorMessage": "sender must be owner to add new validator", + "teal": 4604, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4529 + 4362 ] }, { "teal": 4605, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4530, - 4531 + 4363 ] }, { "teal": 4606, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4532, - 4533, - 4534 + 4364 ] }, { "teal": 4607, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4535 + 4365 ] }, { "teal": 4608, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4536 + 4366, + 4367, + 4368 ] }, { "teal": 4609, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4537 + 4369, + 4370 ] }, { "teal": 4610, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4538 + 4371, + 4372, + 4373 ] }, { "teal": 4611, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4539, - 4540, - 4541 + 4374 ] }, { "teal": 4612, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4542, - 4543 + 4375, + 4376 ] }, { "teal": 4613, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4544, - 4545, - 4546 + 4377 ] }, { "teal": 4614, - "source": 1088, + "source": "contracts/validatorRegistry.algo.ts:1088", "pc": [ - 4547 + 4378 ] }, { - "teal": 4615, - "source": 1088, + "teal": 4618, + "source": "contracts/validatorRegistry.algo.ts:1087", + "errorMessage": "gating type not valid", "pc": [ - 4548, - 4549 + 4379 ] }, { - "teal": 4616, - "source": 1088, + "teal": 4625, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4550 + 4380, + 4381 ] }, { - "teal": 4617, - "source": 1088, + "teal": 4626, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4551 + 4382, + 4383, + 4384 ] }, { - "teal": 4621, - "source": 1087, - "errorMessage": "gating type not valid", + "teal": 4627, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4552 + 4385 ] }, { "teal": 4628, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4553, - 4554 + 4386 ] }, { "teal": 4629, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4555, - 4556, - 4557 + 4387 ] }, { "teal": 4630, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4558 + 4388 ] }, { "teal": 4631, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4559 + 4389, + 4390, + 4391 ] }, { "teal": 4632, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4560 + 4392, + 4393 ] }, { "teal": 4633, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4561 + 4394, + 4395, + 4396 ] }, { "teal": 4634, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4562, - 4563, - 4564 + 4397 ] }, { "teal": 4635, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4565, - 4566 + 4398, + 4399 ] }, { "teal": 4636, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4567, - 4568, - 4569 + 4400 ] }, { "teal": 4637, - "source": 1092, + "source": "contracts/validatorRegistry.algo.ts:1092", "pc": [ - 4570 + 4401 ] }, { - "teal": 4638, - "source": 1092, + "teal": 4641, + "source": "contracts/validatorRegistry.algo.ts:1091", + "errorMessage": "epoch length not in allowable range", "pc": [ - 4571, - 4572 + 4402 ] }, { - "teal": 4639, - "source": 1092, + "teal": 4648, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4573 + 4403, + 4404 ] }, { - "teal": 4640, - "source": 1092, + "teal": 4649, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4574 + 4405, + 4406, + 4407 ] }, { - "teal": 4644, - "source": 1091, - "errorMessage": "epoch length not in allowable range", + "teal": 4650, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4575 + 4408 ] }, { "teal": 4651, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4576, - 4577 + 4409 ] }, { "teal": 4652, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4578, - 4579, - 4580 + 4410 ] }, { "teal": 4653, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4581 + 4411 ] }, { "teal": 4654, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4582 + 4412, + 4413, + 4414 ] }, { "teal": 4655, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4583 + 4415, + 4416 ] }, { "teal": 4656, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4584 + 4417, + 4418, + 4419 ] }, { "teal": 4657, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4585, - 4586, - 4587 + 4420 ] }, { "teal": 4658, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4588, - 4589 + 4421, + 4422 ] }, { "teal": 4659, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4590, - 4591, - 4592 + 4423 ] }, { "teal": 4660, - "source": 1096, + "source": "contracts/validatorRegistry.algo.ts:1096", "pc": [ - 4593 + 4424 ] }, { - "teal": 4661, - "source": 1096, + "teal": 4664, + "source": "contracts/validatorRegistry.algo.ts:1095", + "errorMessage": "commission percentage not valid", "pc": [ - 4594, - 4595 + 4425 ] }, { - "teal": 4662, - "source": 1096, + "teal": 4669, + "source": "contracts/validatorRegistry.algo.ts:1099", "pc": [ - 4596 + 4426, + 4427 ] }, { - "teal": 4663, - "source": 1096, + "teal": 4670, + "source": "contracts/validatorRegistry.algo.ts:1099", "pc": [ - 4597 + 4428, + 4429, + 4430 ] }, { - "teal": 4667, - "source": 1095, - "errorMessage": "commission percentage not valid", + "teal": 4671, + "source": "contracts/validatorRegistry.algo.ts:1099", "pc": [ - 4598 + 4431 ] }, { "teal": 4672, - "source": 1099, + "source": "contracts/validatorRegistry.algo.ts:1099", "pc": [ - 4599, - 4600 + 4432 ] }, { "teal": 4673, - "source": 1099, + "source": "contracts/validatorRegistry.algo.ts:1099", "pc": [ - 4601, - 4602, - 4603 + 4433 ] }, { "teal": 4674, - "source": 1099, + "source": "contracts/validatorRegistry.algo.ts:1099", "pc": [ - 4604 + 4434, + 4435, + 4436 ] }, { - "teal": 4675, - "source": 1099, + "teal": 4682, + "source": "contracts/validatorRegistry.algo.ts:1101", "pc": [ - 4605 + 4437, + 4438 ] }, { - "teal": 4676, - "source": 1099, + "teal": 4683, + "source": "contracts/validatorRegistry.algo.ts:1101", "pc": [ - 4606 + 4439, + 4440, + 4441 ] }, { - "teal": 4677, - "source": 1099, + "teal": 4684, + "source": "contracts/validatorRegistry.algo.ts:1101", "pc": [ - 4607, - 4608, - 4609 + 4442, + 4443 ] }, { "teal": 4685, - "source": 1101, + "source": "contracts/validatorRegistry.algo.ts:1101", "pc": [ - 4610, - 4611 + 4444 ] }, { - "teal": 4686, - "source": 1101, + "teal": 4688, + "source": "contracts/validatorRegistry.algo.ts:1100", + "errorMessage": "validatorCommissionAddress must be set if percent to validator is not 0", "pc": [ - 4612, - 4613, - 4614 + 4445 ] }, { - "teal": 4687, - "source": 1101, + "teal": 4693, + "source": "contracts/validatorRegistry.algo.ts:1105", "pc": [ - 4615, - 4616 + 4446, + 4447 ] }, { - "teal": 4688, - "source": 1101, + "teal": 4694, + "source": "contracts/validatorRegistry.algo.ts:1105", "pc": [ - 4617 + 4448, + 4449, + 4450 ] }, { - "teal": 4691, - "source": 1100, - "errorMessage": "validatorCommissionAddress must be set if percent to validator is not 0", + "teal": 4695, + "source": "contracts/validatorRegistry.algo.ts:1105", "pc": [ - 4618 + 4451 ] }, { "teal": 4696, - "source": 1105, + "source": "contracts/validatorRegistry.algo.ts:1105", "pc": [ - 4619, - 4620 + 4452, + 4453 ] }, { "teal": 4697, - "source": 1105, + "source": "contracts/validatorRegistry.algo.ts:1105", "pc": [ - 4621, - 4622, - 4623 + 4454 ] }, { - "teal": 4698, - "source": 1105, + "teal": 4700, + "source": "contracts/validatorRegistry.algo.ts:1105", + "errorMessage": "staking pool must have minimum entry of 1 algo", "pc": [ - 4624 + 4455 ] }, { - "teal": 4699, - "source": 1105, + "teal": 4707, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4625, - 4626 + 4456, + 4457 ] }, { - "teal": 4700, - "source": 1105, + "teal": 4708, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4627 + 4458, + 4459, + 4460 ] }, { - "teal": 4703, - "source": 1105, - "errorMessage": "staking pool must have minimum entry of 1 algo", + "teal": 4709, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4628 + 4461 ] }, { "teal": 4710, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4629, - 4630 + 4462 ] }, { "teal": 4711, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4631, - 4632, - 4633 + 4463 ] }, { "teal": 4712, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4634 + 4464 ] }, { "teal": 4713, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4635 + 4465, + 4466, + 4467 ] }, { "teal": 4714, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4636 + 4468, + 4469 ] }, { "teal": 4715, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4637 + 4470, + 4471, + 4472 ] }, { "teal": 4716, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4638, - 4639, - 4640 + 4473 ] }, { "teal": 4717, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4641, - 4642 + 4474, + 4475 ] }, { "teal": 4718, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4643, - 4644, - 4645 + 4476 ] }, { "teal": 4719, - "source": 1108, + "source": "contracts/validatorRegistry.algo.ts:1108", "pc": [ - 4646 + 4477 ] }, { - "teal": 4720, - "source": 1108, + "teal": 4723, + "source": "contracts/validatorRegistry.algo.ts:1107", + "errorMessage": "number of pools per node must be be between 1 and the maximum allowed number", "pc": [ - 4647, - 4648 + 4478 ] }, { - "teal": 4721, - "source": 1108, + "teal": 4728, + "source": "contracts/validatorRegistry.algo.ts:1111", "pc": [ - 4649 + 4479, + 4480 ] }, { - "teal": 4722, - "source": 1108, + "teal": 4729, + "source": "contracts/validatorRegistry.algo.ts:1111", "pc": [ - 4650 + 4481, + 4482, + 4483 ] }, { - "teal": 4726, - "source": 1107, - "errorMessage": "number of pools per node must be be between 1 and the maximum allowed number", + "teal": 4730, + "source": "contracts/validatorRegistry.algo.ts:1111", "pc": [ - 4651 + 4484 ] }, { "teal": 4731, - "source": 1111, + "source": "contracts/validatorRegistry.algo.ts:1111", "pc": [ - 4652, - 4653 + 4485 ] }, { "teal": 4732, - "source": 1111, + "source": "contracts/validatorRegistry.algo.ts:1111", "pc": [ - 4654, - 4655, - 4656 + 4486 ] }, { "teal": 4733, - "source": 1111, + "source": "contracts/validatorRegistry.algo.ts:1111", "pc": [ - 4657 + 4487, + 4488, + 4489 ] }, { - "teal": 4734, - "source": 1111, + "teal": 4738, + "source": "contracts/validatorRegistry.algo.ts:1112", "pc": [ - 4658 + 4490, + 4491 ] }, { - "teal": 4735, - "source": 1111, + "teal": 4739, + "source": "contracts/validatorRegistry.algo.ts:1112", "pc": [ - 4659 + 4492, + 4493, + 4494 ] }, { - "teal": 4736, - "source": 1111, + "teal": 4740, + "source": "contracts/validatorRegistry.algo.ts:1112", "pc": [ - 4660, - 4661, - 4662 + 4495 ] }, { "teal": 4741, - "source": 1112, + "source": "contracts/validatorRegistry.algo.ts:1112", "pc": [ - 4663, - 4664 + 4496, + 4497 ] }, { "teal": 4742, - "source": 1112, + "source": "contracts/validatorRegistry.algo.ts:1112", "pc": [ - 4665, - 4666, - 4667 + 4498 ] }, { - "teal": 4743, - "source": 1112, + "teal": 4745, + "source": "contracts/validatorRegistry.algo.ts:1112", + "errorMessage": "sunsettingOn must be later than now if set", "pc": [ - 4668 + 4499 ] }, { - "teal": 4744, - "source": 1112, + "teal": 4748, + "source": "contracts/validatorRegistry.algo.ts:1081", "pc": [ - 4669, - 4670 + 4500 ] }, { - "teal": 4745, - "source": 1112, + "teal": 4762, + "source": "contracts/validatorRegistry.algo.ts:1127", "pc": [ - 4671 + 4501, + 4502, + 4503 ] }, { - "teal": 4748, - "source": 1112, - "errorMessage": "sunsettingOn must be later than now if set", + "teal": 4765, + "source": "contracts/validatorRegistry.algo.ts:1127", "pc": [ - 4672 + 4504 ] }, { - "teal": 4751, - "source": 1081, + "teal": 4766, + "source": "contracts/validatorRegistry.algo.ts:1127", "pc": [ - 4673 + 4505, + 4506 ] }, { - "teal": 4765, - "source": 1127, + "teal": 4770, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4674, - 4675, - 4676 + 4507, + 4508 ] }, { - "teal": 4768, - "source": 1127, + "teal": 4771, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4677 + 4509, + 4510 ] }, { - "teal": 4769, - "source": 1127, + "teal": 4772, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4678, - 4679 + 4511, + 4512, + 4513 ] }, { "teal": 4773, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4680, - 4681 + 4514 ] }, { "teal": 4774, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4682, - 4683 + 4515 ] }, { "teal": 4775, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4684, - 4685, - 4686 + 4516 ] }, { "teal": 4776, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4687 + 4517, + 4518 ] }, { "teal": 4777, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4688 + 4519 ] }, { "teal": 4778, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4689 + 4520 ] }, { "teal": 4779, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4690, - 4691 + 4521 ] }, { "teal": 4780, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4692 + 4522 ] }, { "teal": 4781, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4693 + 4523 ] }, { "teal": 4782, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4694 + 4524 ] }, { "teal": 4783, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4695 + 4525, + 4526 ] }, { "teal": 4784, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4696 + 4527, + 4528, + 4529 ] }, { "teal": 4785, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4697 + 4530 ] }, { "teal": 4786, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4698, - 4699 + 4531 ] }, { "teal": 4787, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4700, - 4701, - 4702 + 4532 ] }, { "teal": 4788, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4703 + 4533, + 4534 ] }, { "teal": 4789, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4704 + 4535 ] }, { "teal": 4790, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4705 + 4536 ] }, { "teal": 4791, - "source": 1134, + "source": "contracts/validatorRegistry.algo.ts:1134", "pc": [ - 4706, - 4707 + 4537, + 4538 ] }, { - "teal": 4792, - "source": 1134, + "teal": 4804, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4708 + 4539 ] }, { - "teal": 4793, - "source": 1134, + "teal": 4805, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4709 + 4540 ] }, { - "teal": 4794, - "source": 1134, + "teal": 4806, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4710, - 4711 + 4541, + 4542 ] }, { - "teal": 4807, - "source": 1143, + "teal": 4810, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4712 + 4543, + 4544 ] }, { - "teal": 4808, - "source": 1143, + "teal": 4811, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4713 + 4545, + 4546 ] }, { - "teal": 4809, - "source": 1143, + "teal": 4812, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4714, - 4715 + 4547, + 4548 ] }, { "teal": 4813, - "source": 1143, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4716, - 4717 + 4549 ] }, { "teal": 4814, - "source": 1143, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4718, - 4719 + 4550, + 4551 ] }, { - "teal": 4815, - "source": 1143, + "teal": 4818, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4720, - 4721 + 4552, + 4553 ] }, { - "teal": 4816, - "source": 1143, + "teal": 4819, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4722 + 4554, + 4555 ] }, { - "teal": 4817, - "source": 1143, + "teal": 4820, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4723, - 4724 + 4556 ] }, { "teal": 4821, - "source": 1143, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4725, - 4726 + 4557, + 4558 ] }, { - "teal": 4822, - "source": 1143, + "teal": 4824, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4727, - 4728 + 4559 ] }, { - "teal": 4823, - "source": 1143, + "teal": 4825, + "source": "contracts/validatorRegistry.algo.ts:1143", "pc": [ - 4729 + 4560, + 4561 ] }, { - "teal": 4824, - "source": 1143, + "teal": 4826, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4730, - 4731 + 4562 ] }, { "teal": 4827, - "source": 1143, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4732 + 4563, + 4564 ] }, { "teal": 4828, - "source": 1143, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4733, - 4734 + 4565, + 4566 ] }, { "teal": 4829, - "source": 1138, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4735 + 4567, + 4568, + 4569, + 4570, + 4571, + 4572 ] }, { "teal": 4830, - "source": 1138, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4736, - 4737 + 4573, + 4574 ] }, { - "teal": 4831, - "source": 1138, + "teal": 4834, + "source": "contracts/validatorRegistry.algo.ts:1139", "pc": [ - 4738, - 4739 + 4575, + 4576 ] }, { - "teal": 4832, - "source": 1138, + "teal": 4835, + "source": "contracts/validatorRegistry.algo.ts:1139", "pc": [ - 4740, - 4741, - 4742, - 4743, - 4744, - 4745 + 4577, + 4578 ] }, { - "teal": 4833, - "source": 1138, + "teal": 4845, + "source": "contracts/validatorRegistry.algo.ts:1145", "pc": [ - 4746, - 4747 + 4579, + 4580 ] }, { - "teal": 4837, - "source": 1139, + "teal": 4846, + "source": "contracts/validatorRegistry.algo.ts:1145", "pc": [ - 4748, - 4749 + 4581, + 4582 ] }, { - "teal": 4838, - "source": 1139, + "teal": 4847, + "source": "contracts/validatorRegistry.algo.ts:1145", "pc": [ - 4750, - 4751 + 4583, + 4584 ] }, { - "teal": 4848, - "source": 1145, + "teal": 4850, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4752, - 4753 + 4585 ] }, { - "teal": 4849, - "source": 1145, + "teal": 4851, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4754, - 4755 + 4586, + 4587 ] }, { - "teal": 4850, - "source": 1145, + "teal": 4854, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4756, - 4757 + 4588 ] }, { - "teal": 4853, - "source": 1138, + "teal": 4855, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4758 + 4589, + 4590 ] }, { - "teal": 4854, - "source": 1138, + "teal": 4856, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4759, - 4760 + 4591 ] }, { "teal": 4857, - "source": 1138, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4761 + 4592 ] }, { "teal": 4858, - "source": 1138, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4762, - 4763 + 4593, + 4594 ] }, { "teal": 4859, - "source": 1138, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4764 + 4595, + 4596, + 4597 ] }, { "teal": 4860, - "source": 1138, + "source": "contracts/validatorRegistry.algo.ts:1138", "pc": [ - 4765 + 4598 ] }, { - "teal": 4861, - "source": 1138, + "teal": 4865, + "source": "contracts/validatorRegistry.algo.ts:1148", "pc": [ - 4766, - 4767 + 4599, + 4600 ] }, { - "teal": 4862, - "source": 1138, + "teal": 4866, + "source": "contracts/validatorRegistry.algo.ts:1148", "pc": [ - 4768, - 4769, - 4770 + 4601, + 4602, + 4603 ] }, { - "teal": 4863, - "source": 1138, + "teal": 4867, + "source": "contracts/validatorRegistry.algo.ts:1148", "pc": [ - 4771 + 4604 ] }, { "teal": 4868, - "source": 1148, + "source": "contracts/validatorRegistry.algo.ts:1148", "pc": [ - 4772, - 4773 + 4605, + 4606, + 4607 ] }, { - "teal": 4869, - "source": 1148, + "teal": 4873, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4774, - 4775, - 4776 + 4608 ] }, { - "teal": 4870, - "source": 1148, + "teal": 4874, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4777 + 4609, + 4610 ] }, { - "teal": 4871, - "source": 1148, + "teal": 4875, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4778, - 4779, - 4780 + 4611, + 4612 ] }, { "teal": 4876, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4781 + 4613 ] }, { "teal": 4877, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4782, - 4783 + 4614, + 4615 ] }, { "teal": 4878, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4784, - 4785 + 4616, + 4617 ] }, { "teal": 4879, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4786 + 4618 ] }, { "teal": 4880, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4787, - 4788 + 4619, + 4620 ] }, { "teal": 4881, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4789, - 4790 + 4621, + 4622 ] }, { "teal": 4882, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4791 + 4623, + 4624 ] }, { "teal": 4883, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4792, - 4793 + 4625, + 4626 ] }, { "teal": 4884, - "source": 1149, + "source": "contracts/validatorRegistry.algo.ts:1149", "pc": [ - 4794, - 4795 + 4627 ] }, { - "teal": 4885, - "source": 1149, + "teal": 4889, + "source": "contracts/validatorRegistry.algo.ts:1153", "pc": [ - 4796, - 4797 + 4628, + 4629 ] }, { - "teal": 4886, - "source": 1149, + "teal": 4890, + "source": "contracts/validatorRegistry.algo.ts:1153", "pc": [ - 4798, - 4799 + 4630, + 4631 ] }, { - "teal": 4887, - "source": 1149, + "teal": 4891, + "source": "contracts/validatorRegistry.algo.ts:1153", "pc": [ - 4800 + 4632 ] }, { - "teal": 4892, - "source": 1153, + "teal": 4894, + "source": "contracts/validatorRegistry.algo.ts:1153", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')", "pc": [ - 4801, - 4802 + 4633 ] }, { - "teal": 4893, - "source": 1153, + "teal": 4895, + "source": "contracts/validatorRegistry.algo.ts:1153", "pc": [ - 4803, - 4804 + 4634, + 4635 ] }, { - "teal": 4894, - "source": 1153, + "teal": 4899, + "source": "contracts/validatorRegistry.algo.ts:1154", "pc": [ - 4805 + 4636, + 4637 ] }, { - "teal": 4897, - "source": 1153, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')", + "teal": 4900, + "source": "contracts/validatorRegistry.algo.ts:1154", "pc": [ - 4806 + 4638, + 4639 ] }, { - "teal": 4898, - "source": 1153, + "teal": 4901, + "source": "contracts/validatorRegistry.algo.ts:1154", "pc": [ - 4807, - 4808 + 4640 ] }, { - "teal": 4902, - "source": 1154, + "teal": 4904, + "source": "contracts/validatorRegistry.algo.ts:1154", + "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')", "pc": [ - 4809, - 4810 + 4641 ] }, { - "teal": 4903, - "source": 1154, + "teal": 4905, + "source": "contracts/validatorRegistry.algo.ts:1154", "pc": [ - 4811, - 4812 + 4642, + 4643 ] }, { - "teal": 4904, - "source": 1154, + "teal": 4909, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4813 + 4644, + 4645 ] }, { - "teal": 4907, - "source": 1154, - "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')", + "teal": 4910, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4814 + 4646, + 4647 ] }, { - "teal": 4908, - "source": 1154, + "teal": 4911, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4815, - 4816 + 4648, + 4649, + 4650 ] }, { "teal": 4912, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4817, - 4818 + 4651 ] }, { "teal": 4913, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4819, - 4820 + 4652 ] }, { "teal": 4914, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4821, - 4822, - 4823 + 4653 ] }, { "teal": 4915, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4824 + 4654, + 4655 ] }, { "teal": 4916, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4825 + 4656 ] }, { "teal": 4917, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4826 + 4657 ] }, { "teal": 4918, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4827, - 4828 + 4658 ] }, { "teal": 4919, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4829 + 4659 ] }, { "teal": 4920, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4830 + 4660, + 4661 ] }, { "teal": 4921, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4831 + 4662 ] }, { "teal": 4922, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4832 + 4663, + 4664, + 4665 ] }, { "teal": 4923, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4833, - 4834 + 4666 ] }, { "teal": 4924, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4835 + 4667, + 4668 ] }, { "teal": 4925, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4836, - 4837, - 4838 + 4669, + 4670, + 4671 ] }, { "teal": 4926, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4839 + 4672 ] }, { "teal": 4927, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4840, - 4841 + 4673 ] }, { "teal": 4928, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4842, - 4843, - 4844 + 4674 ] }, { "teal": 4929, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4845 + 4675, + 4676 ] }, { "teal": 4930, - "source": 1155, + "source": "contracts/validatorRegistry.algo.ts:1155", "pc": [ - 4846 + 4677 ] }, { - "teal": 4931, - "source": 1155, + "teal": 4934, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4847 + 4678, + 4679 ] }, { - "teal": 4932, - "source": 1155, + "teal": 4935, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4848, - 4849 + 4680, + 4681 ] }, { - "teal": 4933, - "source": 1155, + "teal": 4936, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4850 + 4682, + 4683, + 4684 ] }, { "teal": 4937, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4851, - 4852 + 4685 ] }, { "teal": 4938, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4853, - 4854 + 4686 ] }, { "teal": 4939, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4855, - 4856, - 4857 + 4687 ] }, { "teal": 4940, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4858 + 4688, + 4689 ] }, { "teal": 4941, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4859 + 4690 ] }, { "teal": 4942, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4860 + 4691 ] }, { "teal": 4943, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4861, - 4862 + 4692, + 4693 ] }, { "teal": 4944, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4863 + 4694 ] }, { "teal": 4945, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4864 + 4695, + 4696 ] }, { "teal": 4946, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4865, - 4866 + 4697 ] }, { "teal": 4947, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4867 + 4698 ] }, { "teal": 4948, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4868, - 4869 + 4699, + 4700 ] }, { "teal": 4949, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4870 + 4701, + 4702, + 4703 ] }, { "teal": 4950, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4871 + 4704 ] }, { "teal": 4951, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4872, - 4873 + 4705 ] }, { "teal": 4952, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4874, - 4875, - 4876 + 4706 ] }, { "teal": 4953, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4877 + 4707, + 4708 ] }, { "teal": 4954, - "source": 1156, + "source": "contracts/validatorRegistry.algo.ts:1156", "pc": [ - 4878 + 4709 ] }, { - "teal": 4955, - "source": 1156, + "teal": 4959, + "source": "contracts/validatorRegistry.algo.ts:1159", "pc": [ - 4879 + 4710, + 4711 ] }, { - "teal": 4956, - "source": 1156, + "teal": 4960, + "source": "contracts/validatorRegistry.algo.ts:1159", "pc": [ - 4880, - 4881 + 4712, + 4713, + 4714 ] }, { - "teal": 4957, - "source": 1156, + "teal": 4965, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4882 + 4715, + 4716 ] }, { - "teal": 4962, - "source": 1159, + "teal": 4966, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4883, - 4884 + 4717 ] }, { - "teal": 4963, - "source": 1159, + "teal": 4967, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4885, - 4886, - 4887 + 4718 ] }, { "teal": 4968, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4888, - 4889 + 4719 ] }, { "teal": 4969, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4890 + 4720, + 4721 ] }, { "teal": 4970, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4891 + 4722, + 4723, + 4724 ] }, { "teal": 4971, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4892 + 4725 ] }, { "teal": 4972, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4893, - 4894 + 4726 ] }, { "teal": 4973, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4895, - 4896, - 4897 + 4727 ] }, { "teal": 4974, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4898 + 4728, + 4729 ] }, { "teal": 4975, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4899 + 4730 ] }, { "teal": 4976, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4900 + 4731 ] }, { "teal": 4977, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4901, - 4902 + 4732 ] }, { "teal": 4978, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4903 + 4733 ] }, { "teal": 4979, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4904 + 4734 ] }, { "teal": 4980, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4905 + 4735 ] }, { "teal": 4981, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4906 + 4736, + 4737 ] }, { "teal": 4982, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4907 + 4738, + 4739, + 4740 ] }, { "teal": 4983, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4908 + 4741 ] }, { "teal": 4984, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4909, - 4910 + 4742 ] }, { "teal": 4985, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4911, - 4912, - 4913 + 4743 ] }, { "teal": 4986, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4914 + 4744, + 4745 ] }, { "teal": 4987, - "source": 1160, + "source": "contracts/validatorRegistry.algo.ts:1160", "pc": [ - 4915 + 4746 ] }, { - "teal": 4988, - "source": 1160, + "teal": 4993, + "source": "contracts/validatorRegistry.algo.ts:1162", "pc": [ - 4916 + 4747, + 4748 ] }, { - "teal": 4989, - "source": 1160, + "teal": 4994, + "source": "contracts/validatorRegistry.algo.ts:1162", "pc": [ - 4917, - 4918 + 4749, + 4750, + 4751 ] }, { - "teal": 4990, - "source": 1160, + "teal": 4999, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4919 + 4752, + 4753 ] }, { - "teal": 4996, - "source": 1162, + "teal": 5000, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4920, - 4921 + 4754 ] }, { - "teal": 4997, - "source": 1162, + "teal": 5001, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4922, - 4923, - 4924 + 4755 ] }, { "teal": 5002, - "source": 1163, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4925, - 4926 + 4756 ] }, { "teal": 5003, - "source": 1163, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4927 + 4757, + 4758 ] }, { "teal": 5004, - "source": 1163, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4928 + 4759 ] }, { "teal": 5005, - "source": 1163, + "source": "contracts/validatorRegistry.algo.ts:1163", "pc": [ - 4929 + 4760 ] }, { - "teal": 5006, - "source": 1163, + "teal": 5010, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4930, - 4931 + 4761, + 4762 ] }, { - "teal": 5007, - "source": 1163, + "teal": 5011, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4932 + 4763 ] }, { - "teal": 5008, - "source": 1163, + "teal": 5012, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4933 + 4764 ] }, { "teal": 5013, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4934, - 4935 + 4765 ] }, { "teal": 5014, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4936 + 4766, + 4767 ] }, { "teal": 5015, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4937 + 4768, + 4769, + 4770 ] }, { "teal": 5016, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4938 + 4771 ] }, { "teal": 5017, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4939, - 4940 + 4772 ] }, { "teal": 5018, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4941, - 4942, - 4943 + 4773 ] }, { "teal": 5019, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4944 + 4774, + 4775 ] }, { "teal": 5020, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4945 + 4776 ] }, { "teal": 5021, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4946 + 4777 ] }, { "teal": 5022, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4947, - 4948 + 4778, + 4779 ] }, { "teal": 5023, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4949 + 4780, + 4781 ] }, { "teal": 5024, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4950 + 4782, + 4783 ] }, { "teal": 5025, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4951, - 4952 + 4784 ] }, { "teal": 5026, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4953, - 4954 + 4785 ] }, { "teal": 5027, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4955, - 4956 + 4786 ] }, { "teal": 5028, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4957 + 4787 ] }, { "teal": 5029, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4958 + 4788, + 4789 ] }, { "teal": 5030, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4959 + 4790, + 4791, + 4792 ] }, { "teal": 5031, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4960 + 4793 ] }, { "teal": 5032, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4961, - 4962 + 4794 ] }, { "teal": 5033, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4963, - 4964, - 4965 + 4795 ] }, { "teal": 5034, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4966 + 4796, + 4797 ] }, { "teal": 5035, - "source": 1165, + "source": "contracts/validatorRegistry.algo.ts:1165", "pc": [ - 4967 + 4798 ] }, { - "teal": 5036, - "source": 1165, + "teal": 5039, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4968 + 4799, + 4800 ] }, { - "teal": 5037, - "source": 1165, + "teal": 5040, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4969, - 4970 + 4801 ] }, { - "teal": 5038, - "source": 1165, + "teal": 5041, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4971 + 4802, + 4803 ] }, { "teal": 5042, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4972, - 4973 + 4804, + 4805 ] }, { "teal": 5043, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4974 + 4806, + 4807 ] }, { "teal": 5044, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4975, - 4976 + 4808 ] }, { "teal": 5045, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4977, - 4978 + 4809 ] }, { "teal": 5046, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4979, - 4980 + 4810, + 4811 ] }, { "teal": 5047, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4981 + 4812 ] }, { "teal": 5048, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1166", "pc": [ - 4982 + 4813 ] }, { "teal": 5049, - "source": 1166, + "source": "contracts/validatorRegistry.algo.ts:1127", "pc": [ - 4983, - 4984 + 4814 ] }, { - "teal": 5050, - "source": 1166, + "teal": 5053, + "source": "contracts/validatorRegistry.algo.ts:1169", "pc": [ - 4985 + 4815, + 4816, + 4817 ] }, { - "teal": 5051, - "source": 1166, + "teal": 5056, + "source": "contracts/validatorRegistry.algo.ts:1169", "pc": [ - 4986 + 4818 ] }, { - "teal": 5052, - "source": 1127, + "teal": 5057, + "source": "contracts/validatorRegistry.algo.ts:1169", "pc": [ - 4987 + 4819, + 4820 ] }, { - "teal": 5056, - "source": 1169, + "teal": 5061, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4988, - 4989, - 4990 + 4821 ] }, { - "teal": 5059, - "source": 1169, + "teal": 5062, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4991 + 4822, + 4823 ] }, { - "teal": 5060, - "source": 1169, + "teal": 5063, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4992, - 4993 + 4824 ] }, { "teal": 5064, - "source": 1170, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4994 + 4825 ] }, { "teal": 5065, - "source": 1170, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4995, - 4996 + 4826 ] }, { "teal": 5066, - "source": 1170, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4997 + 4827 ] }, { "teal": 5067, - "source": 1170, + "source": "contracts/validatorRegistry.algo.ts:1170", "pc": [ - 4998 + 4828 ] }, { - "teal": 5068, - "source": 1170, + "teal": 5071, + "source": "contracts/validatorRegistry.algo.ts:1172", "pc": [ - 4999 + 4829 ] }, { - "teal": 5069, - "source": 1170, + "teal": 5072, + "source": "contracts/validatorRegistry.algo.ts:1172", "pc": [ - 5000 + 4830, + 4831 ] }, { - "teal": 5070, - "source": 1170, + "teal": 5073, + "source": "contracts/validatorRegistry.algo.ts:1172", "pc": [ - 5001 + 4832 ] }, { "teal": 5074, - "source": 1172, + "source": "contracts/validatorRegistry.algo.ts:1172", "pc": [ - 5002 + 4833 ] }, { - "teal": 5075, - "source": 1172, + "teal": 5077, + "source": "contracts/validatorRegistry.algo.ts:1172", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 5003, - 5004 + 4834 ] }, { - "teal": 5076, - "source": 1172, + "teal": 5078, + "source": "contracts/validatorRegistry.algo.ts:1172", "pc": [ - 5005 + 4835, + 4836 ] }, { - "teal": 5077, - "source": 1172, + "teal": 5082, + "source": "contracts/validatorRegistry.algo.ts:1173", "pc": [ - 5006 + 4837 ] }, { - "teal": 5080, - "source": 1172, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "teal": 5083, + "source": "contracts/validatorRegistry.algo.ts:1173", "pc": [ - 5007 + 4838, + 4839 ] }, { - "teal": 5081, - "source": 1172, + "teal": 5087, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5008, - 5009 + 4840 ] }, { - "teal": 5085, - "source": 1173, + "teal": 5088, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5010 + 4841, + 4842 ] }, { - "teal": 5086, - "source": 1173, + "teal": 5093, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5011, - 5012 + 4843, + 4844 ] }, { - "teal": 5090, - "source": 1174, + "teal": 5094, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5013 + 4845, + 4846 ] }, { - "teal": 5091, - "source": 1174, + "teal": 5095, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5014, - 5015 + 4847 ] }, { "teal": 5096, - "source": 1174, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5016, - 5017 + 4848, + 4849, + 4850 ] }, { - "teal": 5097, - "source": 1174, + "teal": 5101, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5018, - 5019 + 4851, + 4852 ] }, { - "teal": 5098, - "source": 1174, + "teal": 5102, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5020 + 4853, + 4854 ] }, { - "teal": 5099, - "source": 1174, + "teal": 5103, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5021, - 5022, - 5023 + 4855 ] }, { "teal": 5104, - "source": 1175, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5024, - 5025 + 4856 ] }, { "teal": 5105, - "source": 1175, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5026, - 5027 + 4857 ] }, { "teal": 5106, - "source": 1175, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5028 + 4858 ] }, { "teal": 5107, - "source": 1175, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5029 + 4859, + 4860 ] }, { "teal": 5108, - "source": 1175, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5030 + 4861 ] }, { "teal": 5109, - "source": 1175, + "source": "contracts/validatorRegistry.algo.ts:1175", "pc": [ - 5031 + 4862, + 4863, + 4864 ] }, { - "teal": 5110, - "source": 1175, + "teal": 5114, + "source": "contracts/validatorRegistry.algo.ts:1177", "pc": [ - 5032, - 5033 + 4865 ] }, { - "teal": 5111, - "source": 1175, + "teal": 5120, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5034 + 4866, + 4867 ] }, { - "teal": 5112, - "source": 1175, + "teal": 5121, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5035, - 5036, - 5037 + 4868 ] }, { - "teal": 5117, - "source": 1177, + "teal": 5122, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5038 + 4869 ] }, { "teal": 5123, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5039, - 5040 + 4870 ] }, { "teal": 5124, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5041 + 4871, + 4872, + 4873 ] }, { "teal": 5125, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5042 + 4874, + 4875 ] }, { "teal": 5126, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5043 + 4876, + 4877 ] }, { "teal": 5127, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5044, - 5045, - 5046 + 4878 ] }, { "teal": 5128, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5047, - 5048 + 4879 ] }, { "teal": 5129, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5049, - 5050 + 4880 ] }, { "teal": 5130, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5051 + 4881 ] }, { "teal": 5131, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5052 + 4882 ] }, { "teal": 5132, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5053 + 4883 ] }, { "teal": 5133, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5054 + 4884 ] }, { "teal": 5134, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5055 + 4885 ] }, { "teal": 5135, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5056 + 4886 ] }, { "teal": 5136, - "source": 1179, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5057 + 4887 ] }, { - "teal": 5137, - "source": 1179, + "teal": 5139, + "source": "contracts/validatorRegistry.algo.ts:1179", "pc": [ - 5058 + 4888, + 4889, + 4890 ] }, { - "teal": 5138, - "source": 1179, + "teal": 5144, + "source": "contracts/validatorRegistry.algo.ts:1180", "pc": [ - 5059 + 4891, + 4892 ] }, { - "teal": 5139, - "source": 1179, + "teal": 5145, + "source": "contracts/validatorRegistry.algo.ts:1180", "pc": [ - 5060 + 4893 ] }, { - "teal": 5142, - "source": 1179, + "teal": 5146, + "source": "contracts/validatorRegistry.algo.ts:1180", "pc": [ - 5061, - 5062, - 5063 + 4894 ] }, { "teal": 5147, - "source": 1180, + "source": "contracts/validatorRegistry.algo.ts:1180", "pc": [ - 5064, - 5065 + 4895, + 4896 ] }, { - "teal": 5148, - "source": 1180, + "teal": 5154, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5066 + 4897, + 4898 ] }, { - "teal": 5149, - "source": 1180, + "teal": 5155, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5067 + 4899 ] }, { - "teal": 5150, - "source": 1180, + "teal": 5156, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5068, - 5069 + 4900 ] }, { "teal": 5157, - "source": 1174, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5070, - 5071 + 4901, + 4902 ] }, { "teal": 5158, - "source": 1174, + "source": "contracts/validatorRegistry.algo.ts:1174", "pc": [ - 5072 + 4903, + 4904, + 4905 ] }, { - "teal": 5159, - "source": 1174, + "teal": 5164, + "source": "contracts/validatorRegistry.algo.ts:1183", "pc": [ - 5073 + 4906, + 4907 ] }, { - "teal": 5160, - "source": 1174, + "teal": 5165, + "source": "contracts/validatorRegistry.algo.ts:1183", "pc": [ - 5074, - 5075 + 4908 ] }, { - "teal": 5161, - "source": 1174, + "teal": 5166, + "source": "contracts/validatorRegistry.algo.ts:1183", "pc": [ - 5076, - 5077, - 5078 + 4909 ] }, { "teal": 5167, - "source": 1183, + "source": "contracts/validatorRegistry.algo.ts:1183", "pc": [ - 5079, - 5080 + 4910, + 4911, + 4912 ] }, { - "teal": 5168, - "source": 1183, + "teal": 5171, + "source": "contracts/validatorRegistry.algo.ts:1184", + "errorMessage": "No empty slot available in the staker pool set", "pc": [ - 5081 + 4913 ] }, { - "teal": 5169, - "source": 1183, + "teal": 5176, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5082 + 4914, + 4915 ] }, { - "teal": 5170, - "source": 1183, + "teal": 5177, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5083, - 5084, - 5085 + 4916 ] }, { - "teal": 5174, - "source": 1184, - "errorMessage": "No empty slot available in the staker pool set", + "teal": 5178, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5086 + 4917 ] }, { "teal": 5179, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5087, - 5088 + 4918 ] }, { "teal": 5180, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5089 + 4919 ] }, { "teal": 5181, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5090 + 4920, + 4921 ] }, { "teal": 5182, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5091 + 4922 ] }, { "teal": 5183, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5092 + 4923, + 4924 ] }, { "teal": 5184, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5093, - 5094 + 4925 ] }, { "teal": 5185, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5095 + 4926, + 4927 ] }, { "teal": 5186, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1186", "pc": [ - 5096, - 5097 + 4928 ] }, { "teal": 5187, - "source": 1186, + "source": "contracts/validatorRegistry.algo.ts:1169", "pc": [ - 5098 + 4929 ] }, { - "teal": 5188, - "source": 1186, + "teal": 5198, + "source": "contracts/validatorRegistry.algo.ts:1197", "pc": [ - 5099, - 5100 + 4930, + 4931, + 4932 ] }, { - "teal": 5189, - "source": 1186, + "teal": 5201, + "source": "contracts/validatorRegistry.algo.ts:1197", "pc": [ - 5101 + 4933 ] }, { - "teal": 5190, - "source": 1169, + "teal": 5202, + "source": "contracts/validatorRegistry.algo.ts:1197", "pc": [ - 5102 + 4934, + 4935 ] }, { - "teal": 5201, - "source": 1197, + "teal": 5206, + "source": "contracts/validatorRegistry.algo.ts:1199", "pc": [ - 5103, - 5104, - 5105 + 4936 ] }, { - "teal": 5204, - "source": 1197, + "teal": 5207, + "source": "contracts/validatorRegistry.algo.ts:1199", "pc": [ - 5106 + 4937, + 4938 ] }, { - "teal": 5205, - "source": 1197, + "teal": 5211, + "source": "contracts/validatorRegistry.algo.ts:1200", "pc": [ - 5107, - 5108 + 4939 ] }, { - "teal": 5209, - "source": 1199, + "teal": 5212, + "source": "contracts/validatorRegistry.algo.ts:1200", "pc": [ - 5109 + 4940, + 4941 ] }, { - "teal": 5210, - "source": 1199, + "teal": 5216, + "source": "contracts/validatorRegistry.algo.ts:1201", "pc": [ - 5110, - 5111 + 4942 ] }, { - "teal": 5214, - "source": 1200, + "teal": 5217, + "source": "contracts/validatorRegistry.algo.ts:1201", "pc": [ - 5112 + 4943, + 4944 ] }, { - "teal": 5215, - "source": 1200, + "teal": 5221, + "source": "contracts/validatorRegistry.algo.ts:1203", "pc": [ - 5113, - 5114 + 4945 ] }, { - "teal": 5219, - "source": 1201, + "teal": 5222, + "source": "contracts/validatorRegistry.algo.ts:1203", "pc": [ - 5115 + 4946, + 4947 ] }, { - "teal": 5220, - "source": 1201, + "teal": 5223, + "source": "contracts/validatorRegistry.algo.ts:1203", "pc": [ - 5116, - 5117 + 4948 ] }, { "teal": 5224, - "source": 1203, + "source": "contracts/validatorRegistry.algo.ts:1203", "pc": [ - 5118 + 4949 ] }, { - "teal": 5225, - "source": 1203, + "teal": 5227, + "source": "contracts/validatorRegistry.algo.ts:1203", + "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 5119, - 5120 + 4950 ] }, { - "teal": 5226, - "source": 1203, + "teal": 5228, + "source": "contracts/validatorRegistry.algo.ts:1203", "pc": [ - 5121 + 4951, + 4952 ] }, { - "teal": 5227, - "source": 1203, + "teal": 5232, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5122 + 4953 ] }, { - "teal": 5230, - "source": 1203, - "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", + "teal": 5233, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5123 + 4954, + 4955 ] }, { - "teal": 5231, - "source": 1203, + "teal": 5238, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5124, - 5125 + 4956, + 4957 ] }, { - "teal": 5235, - "source": 1204, + "teal": 5239, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5126 + 4958, + 4959 ] }, { - "teal": 5236, - "source": 1204, + "teal": 5240, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5127, - 5128 + 4960 ] }, { "teal": 5241, - "source": 1204, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5129, - 5130 + 4961, + 4962, + 4963 ] }, { - "teal": 5242, - "source": 1204, + "teal": 5246, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5131, - 5132 + 4964, + 4965 ] }, { - "teal": 5243, - "source": 1204, + "teal": 5247, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5133 + 4966, + 4967 ] }, { - "teal": 5244, - "source": 1204, + "teal": 5248, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5134, - 5135, - 5136 + 4968 ] }, { "teal": 5249, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5137, - 5138 + 4969 ] }, { "teal": 5250, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5139, - 5140 + 4970 ] }, { "teal": 5251, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5141 + 4971 ] }, { "teal": 5252, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5142 + 4972 ] }, { "teal": 5253, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5143 + 4973 ] }, { "teal": 5254, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5144 + 4974 ] }, { "teal": 5255, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5145 + 4975 ] }, { "teal": 5256, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5146 + 4976 ] }, { "teal": 5257, - "source": 1205, + "source": "contracts/validatorRegistry.algo.ts:1205", "pc": [ - 5147 + 4977, + 4978, + 4979 ] }, { - "teal": 5258, - "source": 1205, + "teal": 5260, + "source": "contracts/validatorRegistry.algo.ts:1206", "pc": [ - 5148 + 4980, + 4981, + 4982 ] }, { - "teal": 5259, - "source": 1205, + "teal": 5265, + "source": "contracts/validatorRegistry.algo.ts:1208", "pc": [ - 5149 + 4983, + 4984 ] }, { - "teal": 5260, - "source": 1205, + "teal": 5266, + "source": "contracts/validatorRegistry.algo.ts:1208", "pc": [ - 5150, - 5151, - 5152 + 4985 ] }, { - "teal": 5263, - "source": 1206, + "teal": 5267, + "source": "contracts/validatorRegistry.algo.ts:1208", "pc": [ - 5153, - 5154, - 5155 + 4986 ] }, { "teal": 5268, - "source": 1208, + "source": "contracts/validatorRegistry.algo.ts:1208", "pc": [ - 5156, - 5157 + 4987, + 4988 ] }, { - "teal": 5269, - "source": 1208, + "teal": 5273, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5158 + 4989, + 4990 ] }, { - "teal": 5270, - "source": 1208, + "teal": 5274, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5159 + 4991, + 4992 ] }, { - "teal": 5271, - "source": 1208, + "teal": 5275, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5160, - 5161 + 4993 ] }, { "teal": 5276, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5162, - 5163 + 4994 ] }, { "teal": 5277, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5164, - 5165 + 4995 ] }, { "teal": 5278, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5166 + 4996 ] }, { "teal": 5279, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5167 + 4997 ] }, { "teal": 5280, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5168 + 4998 ] }, { "teal": 5281, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5169 + 4999 ] }, { "teal": 5282, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5170 + 5000, + 5001 ] }, { "teal": 5283, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5171 + 5002, + 5003, + 5004 ] }, { "teal": 5284, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5172 + 5005 ] }, { "teal": 5285, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5173, - 5174 + 5006 ] }, { "teal": 5286, - "source": 1209, + "source": "contracts/validatorRegistry.algo.ts:1209", "pc": [ - 5175, - 5176, - 5177 + 5007, + 5008, + 5009 ] }, { - "teal": 5287, - "source": 1209, + "teal": 5292, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5178 + 5010, + 5011 ] }, { - "teal": 5288, - "source": 1209, + "teal": 5293, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5179 + 5012, + 5013 ] }, { - "teal": 5289, - "source": 1209, + "teal": 5294, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5180, - 5181, - 5182 + 5014 ] }, { "teal": 5295, - "source": 1210, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5183, - 5184 + 5015 ] }, { "teal": 5296, - "source": 1210, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5185, - 5186 + 5016 ] }, { "teal": 5297, - "source": 1210, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5187 + 5017 ] }, { "teal": 5298, - "source": 1210, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5188 + 5018, + 5019 ] }, { "teal": 5299, - "source": 1210, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5189 + 5020 ] }, { "teal": 5300, - "source": 1210, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5190 + 5021, + 5022, + 5023 ] }, { - "teal": 5301, - "source": 1210, + "teal": 5305, + "source": "contracts/validatorRegistry.algo.ts:1211", "pc": [ - 5191, - 5192 + 5024 ] }, { - "teal": 5302, - "source": 1210, + "teal": 5306, + "source": "contracts/validatorRegistry.algo.ts:1211", "pc": [ - 5193 + 5025, + 5026 ] }, { - "teal": 5303, - "source": 1210, + "teal": 5310, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5194, - 5195, - 5196 + 5027, + 5028 ] }, { - "teal": 5308, - "source": 1211, + "teal": 5311, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5197 + 5029 ] }, { - "teal": 5309, - "source": 1211, + "teal": 5312, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5198, - 5199 + 5030 ] }, { "teal": 5313, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5200, - 5201 + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5037, + 5038, + 5039, + 5040, + 5041, + 5042, + 5043, + 5044, + 5045, + 5046, + 5047, + 5048, + 5049, + 5050, + 5051, + 5052, + 5053, + 5054, + 5055, + 5056 ] }, { "teal": 5314, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5202 + 5057 ] }, { "teal": 5315, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5203 + 5058, + 5059 ] }, { "teal": 5316, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5204, - 5205, - 5206, - 5207, - 5208, - 5209, - 5210, - 5211, - 5212, - 5213, - 5214, - 5215, - 5216, - 5217, - 5218, - 5219, - 5220, - 5221, - 5222, - 5223, - 5224, - 5225, - 5226, - 5227, - 5228, - 5229 + 5060 ] }, { "teal": 5317, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5230 + 5061, + 5062 ] }, { "teal": 5318, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1213", "pc": [ - 5231, - 5232 + 5063 ] }, { "teal": 5319, - "source": 1213, + "source": "contracts/validatorRegistry.algo.ts:1210", "pc": [ - 5233 + 5064, + 5065, + 5066 ] }, { - "teal": 5320, - "source": 1213, + "teal": 5324, + "source": "contracts/validatorRegistry.algo.ts:1215", "pc": [ - 5234, - 5235 + 5067, + 5068 ] }, { - "teal": 5321, - "source": 1213, + "teal": 5325, + "source": "contracts/validatorRegistry.algo.ts:1215", "pc": [ - 5236 + 5069 ] }, { - "teal": 5322, - "source": 1210, + "teal": 5326, + "source": "contracts/validatorRegistry.algo.ts:1215", "pc": [ - 5237, - 5238, - 5239 + 5070 ] }, { "teal": 5327, - "source": 1215, + "source": "contracts/validatorRegistry.algo.ts:1215", "pc": [ - 5240, - 5241 + 5071, + 5072 ] }, { - "teal": 5328, - "source": 1215, + "teal": 5336, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5242 + 5073, + 5074 ] }, { - "teal": 5329, - "source": 1215, + "teal": 5337, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5243 + 5075 ] }, { - "teal": 5330, - "source": 1215, + "teal": 5338, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5244, - 5245 + 5076 ] }, { "teal": 5339, - "source": 1204, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5246, - 5247 + 5077, + 5078 ] }, { "teal": 5340, - "source": 1204, + "source": "contracts/validatorRegistry.algo.ts:1204", "pc": [ - 5248 + 5079, + 5080, + 5081 ] }, { - "teal": 5341, - "source": 1204, + "teal": 5346, + "source": "contracts/validatorRegistry.algo.ts:1219", "pc": [ - 5249 + 5082, + 5083 ] }, { - "teal": 5342, - "source": 1204, + "teal": 5347, + "source": "contracts/validatorRegistry.algo.ts:1219", "pc": [ - 5250, - 5251 + 5084 ] }, { - "teal": 5343, - "source": 1204, + "teal": 5348, + "source": "contracts/validatorRegistry.algo.ts:1219", "pc": [ - 5252, - 5253, - 5254 + 5085, + 5086, + 5087 ] }, { - "teal": 5349, - "source": 1219, + "teal": 5352, + "source": "contracts/validatorRegistry.algo.ts:1220", + "errorMessage": "No matching slot found when told to remove a pool from the stakers set", "pc": [ - 5255, - 5256 + 5088 ] }, { - "teal": 5350, - "source": 1219, + "teal": 5357, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5257 + 5089, + 5090 ] }, { - "teal": 5351, - "source": 1219, + "teal": 5358, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5258, - 5259, - 5260 + 5091 ] }, { - "teal": 5355, - "source": 1220, - "errorMessage": "No matching slot found when told to remove a pool from the stakers set", + "teal": 5359, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5261 + 5092, + 5093 ] }, { "teal": 5360, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5262, - 5263 + 5094 ] }, { "teal": 5361, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5264 + 5095 ] }, { "teal": 5362, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5265, - 5266 + 5096 ] }, { "teal": 5363, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5267 + 5097 ] }, { "teal": 5364, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5268 + 5098, + 5099 ] }, { "teal": 5365, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5269 + 5100 ] }, { "teal": 5366, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5270 + 5101 ] }, { "teal": 5367, - "source": 1223, + "source": "contracts/validatorRegistry.algo.ts:1223", "pc": [ - 5271, - 5272 + 5102 ] }, { - "teal": 5368, - "source": 1223, + "teal": 5370, + "source": "contracts/validatorRegistry.algo.ts:1197", "pc": [ - 5273 + 5103, + 5104 ] }, { - "teal": 5369, - "source": 1223, + "teal": 5373, + "source": "contracts/validatorRegistry.algo.ts:1197", "pc": [ - 5274 + 5105, + 5106 ] }, { - "teal": 5370, - "source": 1223, + "teal": 5374, + "source": "contracts/validatorRegistry.algo.ts:1197", "pc": [ - 5275 + 5107 ] }, { - "teal": 5373, - "source": 1197, + "teal": 5378, + "source": "contracts/validatorRegistry.algo.ts:1226", "pc": [ - 5276, - 5277 + 5108, + 5109, + 5110 ] }, { - "teal": 5376, - "source": 1197, + "teal": 5381, + "source": "contracts/validatorRegistry.algo.ts:1226", "pc": [ - 5278, - 5279 + 5111 ] }, { - "teal": 5377, - "source": 1197, + "teal": 5382, + "source": "contracts/validatorRegistry.algo.ts:1226", "pc": [ - 5280 + 5112, + 5113 ] }, { - "teal": 5381, - "source": 1226, + "teal": 5386, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5281, - 5282, - 5283 + 5114, + 5115 ] }, { - "teal": 5384, - "source": 1226, + "teal": 5387, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5284 + 5116, + 5117 ] }, { - "teal": 5385, - "source": 1226, + "teal": 5388, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5285, - 5286 + 5118 ] }, { "teal": 5389, - "source": 1227, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5287, - 5288 + 5119, + 5120 ] }, { "teal": 5390, - "source": 1227, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5289, - 5290 + 5121 ] }, { "teal": 5391, - "source": 1227, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5291 + 5122 ] }, { "teal": 5392, - "source": 1227, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5292, - 5293 + 5123, + 5124 ] }, { "teal": 5393, - "source": 1227, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5294 + 5125 ] }, { "teal": 5394, - "source": 1227, + "source": "contracts/validatorRegistry.algo.ts:1227", "pc": [ - 5295 + 5126, + 5127 ] }, { - "teal": 5395, - "source": 1227, + "teal": 5398, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5296, - 5297 + 5128, + 5129, + 5130 ] }, { - "teal": 5396, - "source": 1227, + "teal": 5399, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5298 + 5131 ] }, { - "teal": 5397, - "source": 1227, + "teal": 5400, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5299, - 5300 + 5132 ] }, { "teal": 5401, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5301, - 5302, - 5303 + 5133, + 5134 ] }, { "teal": 5402, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5304 + 5135 ] }, { "teal": 5403, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5305 + 5136 ] }, { "teal": 5404, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5306, - 5307 + 5137, + 5138 ] }, { "teal": 5405, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5308 + 5139 ] }, { "teal": 5406, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5309 + 5140 ] }, { "teal": 5407, - "source": 1228, + "source": "contracts/validatorRegistry.algo.ts:1228", "pc": [ - 5310, - 5311 + 5141, + 5142 ] }, { - "teal": 5408, - "source": 1228, + "teal": 5411, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5312 + 5143, + 5144 ] }, { - "teal": 5409, - "source": 1228, + "teal": 5412, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5313 + 5145 ] }, { - "teal": 5410, - "source": 1228, + "teal": 5413, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5314, - 5315 + 5146 ] }, { "teal": 5414, - "source": 1230, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5316, - 5317 + 5147 ] }, { "teal": 5415, - "source": 1230, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5318 + 5148, + 5149, + 5150 ] }, { "teal": 5416, - "source": 1230, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5319 + 5151, + 5152 ] }, { "teal": 5417, - "source": 1230, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5320 + 5153 ] }, { "teal": 5418, - "source": 1230, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5321, - 5322, - 5323 + 5154 ] }, { "teal": 5419, - "source": 1230, + "source": "contracts/validatorRegistry.algo.ts:1230", "pc": [ - 5324, - 5325 + 5155 ] }, { - "teal": 5420, - "source": 1230, + "teal": 5423, + "source": "contracts/validatorRegistry.algo.ts:1230", + "errorMessage": "node number not in valid range", "pc": [ - 5326 + 5156 ] }, { - "teal": 5421, - "source": 1230, + "teal": 5427, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5327 + 5157 ] }, { - "teal": 5422, - "source": 1230, + "teal": 5428, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5328 + 5158, + 5159 ] }, { - "teal": 5426, - "source": 1230, - "errorMessage": "node number not in valid range", + "teal": 5433, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5329 + 5160, + 5161 ] }, { - "teal": 5430, - "source": 1232, + "teal": 5434, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5330 + 5162, + 5163 ] }, { - "teal": 5431, - "source": 1232, + "teal": 5435, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5331, - 5332 + 5164 ] }, { "teal": 5436, - "source": 1232, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5333, - 5334 + 5165, + 5166, + 5167 ] }, { - "teal": 5437, - "source": 1232, + "teal": 5441, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5335, - 5336 + 5168, + 5169 ] }, { - "teal": 5438, - "source": 1232, + "teal": 5442, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5337 + 5170 ] }, { - "teal": 5439, - "source": 1232, + "teal": 5443, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5338, - 5339, - 5340 + 5171, + 5172 ] }, { "teal": 5444, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5341, - 5342 + 5173 ] }, { "teal": 5445, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5343 + 5174 ] }, { "teal": 5446, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5344, - 5345 + 5175 ] }, { "teal": 5447, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5346 + 5176 ] }, { "teal": 5448, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5347 + 5177 ] }, { "teal": 5449, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5348 + 5178 ] }, { "teal": 5450, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5349 + 5179 ] }, { "teal": 5451, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5350 + 5180, + 5181 ] }, { "teal": 5452, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5351 + 5182 ] }, { "teal": 5453, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5352 + 5183 ] }, { "teal": 5454, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5353, - 5354 + 5184 ] }, { "teal": 5455, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5355 + 5185 ] }, { "teal": 5456, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5356 + 5186 ] }, { "teal": 5457, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5357 + 5187 ] }, { "teal": 5458, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5358 + 5188 ] }, { "teal": 5459, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5359 + 5189 ] }, { "teal": 5460, - "source": 1233, + "source": "contracts/validatorRegistry.algo.ts:1233", "pc": [ - 5360 + 5190, + 5191, + 5192 ] }, { - "teal": 5461, - "source": 1233, + "teal": 5465, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5361 + 5193, + 5194 ] }, { - "teal": 5462, - "source": 1233, + "teal": 5466, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5362 + 5195, + 5196 ] }, { - "teal": 5463, - "source": 1233, + "teal": 5467, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5363, - 5364, - 5365 + 5197 ] }, { "teal": 5468, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5366, - 5367 + 5198 ] }, { "teal": 5469, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5368, - 5369 + 5199 ] }, { "teal": 5470, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5370 + 5200 ] }, { "teal": 5471, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5371 + 5201 ] }, { "teal": 5472, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5372 + 5202 ] }, { "teal": 5473, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5373 + 5203 ] }, { "teal": 5474, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5374 + 5204, + 5205 ] }, { "teal": 5475, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5375 + 5206 ] }, { "teal": 5476, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5376 + 5207 ] }, { "teal": 5477, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5377, - 5378 + 5208 ] }, { "teal": 5478, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5379 + 5209, + 5210 ] }, { "teal": 5479, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5380 + 5211 ] }, { "teal": 5480, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5381 + 5212 ] }, { "teal": 5481, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5382, - 5383 + 5213, + 5214 ] }, { "teal": 5482, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5384 + 5215 ] }, { "teal": 5483, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5385 + 5216 ] }, { "teal": 5484, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5386, - 5387 + 5217, + 5218 ] }, { "teal": 5485, - "source": 1235, + "source": "contracts/validatorRegistry.algo.ts:1235", "pc": [ - 5388 + 5219 ] }, { - "teal": 5486, - "source": 1235, + "teal": 5489, + "source": "contracts/validatorRegistry.algo.ts:1236", "pc": [ - 5389 + 5220 ] }, { - "teal": 5487, - "source": 1235, + "teal": 5496, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5390, - 5391 + 5221, + 5222 ] }, { - "teal": 5488, - "source": 1235, + "teal": 5497, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5392 + 5223 ] }, { - "teal": 5492, - "source": 1236, + "teal": 5498, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5393 + 5224 ] }, { "teal": 5499, - "source": 1232, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5394, - 5395 + 5225, + 5226 ] }, { "teal": 5500, - "source": 1232, + "source": "contracts/validatorRegistry.algo.ts:1232", "pc": [ - 5396 + 5227, + 5228, + 5229 ] }, { - "teal": 5501, - "source": 1232, + "teal": 5504, + "source": "contracts/validatorRegistry.algo.ts:1239", + "errorMessage": "no available space in specified node for this pool", "pc": [ - 5397 + 5230 ] }, { - "teal": 5502, - "source": 1232, + "teal": 5505, + "source": "contracts/validatorRegistry.algo.ts:1226", "pc": [ - 5398, - 5399 + 5231 ] }, { - "teal": 5503, - "source": 1232, + "teal": 5515, + "source": "contracts/validatorRegistry.algo.ts:1249", "pc": [ - 5400, - 5401, - 5402 + 5232, + 5233, + 5234 ] }, { - "teal": 5507, - "source": 1239, - "errorMessage": "no available space in specified node for this pool", + "teal": 5518, + "source": "contracts/validatorRegistry.algo.ts:1249", "pc": [ - 5403 + 5235 ] }, { - "teal": 5508, - "source": 1226, + "teal": 5519, + "source": "contracts/validatorRegistry.algo.ts:1249", "pc": [ - 5404 + 5236, + 5237 ] }, { - "teal": 5518, - "source": 1249, + "teal": 5523, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5405, - 5406, - 5407 + 5238, + 5239 ] }, { - "teal": 5521, - "source": 1249, + "teal": 5524, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5408 + 5240 ] }, { - "teal": 5522, - "source": 1249, + "teal": 5525, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5409, - 5410 + 5241 ] }, { "teal": 5526, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5411, - 5412 + 5242, + 5243 ] }, { "teal": 5527, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5413 + 5244 ] }, { "teal": 5528, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5414 + 5245 ] }, { "teal": 5529, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5415, - 5416 + 5246, + 5247 ] }, { "teal": 5530, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5417 + 5248 ] }, { "teal": 5531, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5418 + 5249 ] }, { "teal": 5532, - "source": 1250, + "source": "contracts/validatorRegistry.algo.ts:1250", "pc": [ - 5419, - 5420 + 5250, + 5251 ] }, { - "teal": 5533, - "source": 1250, + "teal": 5537, + "source": "contracts/validatorRegistry.algo.ts:1251", "pc": [ - 5421 + 5252, + 5253 ] }, { - "teal": 5534, - "source": 1250, + "teal": 5538, + "source": "contracts/validatorRegistry.algo.ts:1251", "pc": [ - 5422 + 5254 ] }, { - "teal": 5535, - "source": 1250, + "teal": 5539, + "source": "contracts/validatorRegistry.algo.ts:1251", "pc": [ - 5423, - 5424 + 5255 ] }, { "teal": 5540, - "source": 1251, + "source": "contracts/validatorRegistry.algo.ts:1251", "pc": [ - 5425, - 5426 + 5256, + 5257, + 5258 ] }, { - "teal": 5541, - "source": 1251, + "teal": 5545, + "source": "contracts/validatorRegistry.algo.ts:1252", "pc": [ - 5427 + 5259 ] }, { - "teal": 5542, - "source": 1251, + "teal": 5550, + "source": "contracts/validatorRegistry.algo.ts:1254", "pc": [ - 5428 + 5260, + 5261 ] }, { - "teal": 5543, - "source": 1251, + "teal": 5551, + "source": "contracts/validatorRegistry.algo.ts:1254", "pc": [ - 5429, - 5430, - 5431 + 5262, + 5263 ] }, { - "teal": 5548, - "source": 1252, + "teal": 5555, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5432 + 5264 ] }, { - "teal": 5553, - "source": 1254, + "teal": 5556, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5433, - 5434 + 5265, + 5266 ] }, { - "teal": 5554, - "source": 1254, + "teal": 5557, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5435, - 5436 + 5267 ] }, { "teal": 5558, - "source": 1255, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5437 + 5268, + 5269 ] }, { "teal": 5559, - "source": 1255, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5438, - 5439 + 5270 ] }, { "teal": 5560, - "source": 1255, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5440 + 5271 ] }, { "teal": 5561, - "source": 1255, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5441, - 5442 + 5272, + 5273 ] }, { "teal": 5562, - "source": 1255, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5443 + 5274 ] }, { "teal": 5563, - "source": 1255, + "source": "contracts/validatorRegistry.algo.ts:1255", "pc": [ - 5444 + 5275, + 5276 ] }, { - "teal": 5564, - "source": 1255, + "teal": 5570, + "source": "contracts/validatorRegistry.algo.ts:1259", "pc": [ - 5445, - 5446 + 5277, + 5278 ] }, { - "teal": 5565, - "source": 1255, + "teal": 5571, + "source": "contracts/validatorRegistry.algo.ts:1259", "pc": [ - 5447 + 5279 ] }, { - "teal": 5566, - "source": 1255, + "teal": 5572, + "source": "contracts/validatorRegistry.algo.ts:1259", "pc": [ - 5448, - 5449 + 5280 ] }, { "teal": 5573, - "source": 1259, + "source": "contracts/validatorRegistry.algo.ts:1259", "pc": [ - 5450, - 5451 + 5281 ] }, { "teal": 5574, - "source": 1259, + "source": "contracts/validatorRegistry.algo.ts:1259", "pc": [ - 5452 + 5282, + 5283, + 5284 ] }, { "teal": 5575, - "source": 1259, + "source": "contracts/validatorRegistry.algo.ts:1260", "pc": [ - 5453 + 5285, + 5286 ] }, { "teal": 5576, - "source": 1259, + "source": "contracts/validatorRegistry.algo.ts:1260", "pc": [ - 5454 + 5287, + 5288 ] }, { "teal": 5577, - "source": 1259, + "source": "contracts/validatorRegistry.algo.ts:1260", "pc": [ - 5455, - 5456, - 5457 + 5289 ] }, { "teal": 5578, - "source": 1260, + "source": "contracts/validatorRegistry.algo.ts:1259", "pc": [ - 5458, - 5459 + 5290 ] }, { - "teal": 5579, - "source": 1260, + "teal": 5581, + "source": "contracts/validatorRegistry.algo.ts:1260", "pc": [ - 5460, - 5461 + 5291 ] }, { - "teal": 5580, - "source": 1260, + "teal": 5582, + "source": "contracts/validatorRegistry.algo.ts:1260", "pc": [ - 5462 + 5292, + 5293, + 5294 ] }, { - "teal": 5581, - "source": 1259, + "teal": 5583, + "source": "contracts/validatorRegistry.algo.ts:1261", "pc": [ - 5463 + 5295, + 5296 ] }, { "teal": 5584, - "source": 1260, + "source": "contracts/validatorRegistry.algo.ts:1261", "pc": [ - 5464 + 5297, + 5298 ] }, { "teal": 5585, - "source": 1260, + "source": "contracts/validatorRegistry.algo.ts:1261", "pc": [ - 5465, - 5466, - 5467 + 5299 ] }, { "teal": 5586, - "source": 1261, + "source": "contracts/validatorRegistry.algo.ts:1260", "pc": [ - 5468, - 5469 + 5300 ] }, { - "teal": 5587, - "source": 1261, + "teal": 5589, + "source": "contracts/validatorRegistry.algo.ts:1258", "pc": [ - 5470, - 5471 + 5301, + 5302, + 5303 ] }, { - "teal": 5588, - "source": 1261, + "teal": 5594, + "source": "contracts/validatorRegistry.algo.ts:1263", "pc": [ - 5472 + 5304, + 5305 ] }, { - "teal": 5589, - "source": 1260, + "teal": 5595, + "source": "contracts/validatorRegistry.algo.ts:1263", "pc": [ - 5473 + 5306 ] }, { - "teal": 5592, - "source": 1258, + "teal": 5596, + "source": "contracts/validatorRegistry.algo.ts:1263", "pc": [ - 5474, - 5475, - 5476 + 5307 ] }, { "teal": 5597, - "source": 1263, + "source": "contracts/validatorRegistry.algo.ts:1263", "pc": [ - 5477, - 5478 + 5308 ] }, { - "teal": 5598, - "source": 1263, + "teal": 5601, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5479 + 5309, + 5310 ] }, { - "teal": 5599, - "source": 1263, + "teal": 5602, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5480 + 5311 ] }, { - "teal": 5600, - "source": 1263, + "teal": 5603, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5481 + 5312 ] }, { "teal": 5604, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5482, - 5483 + 5313, + 5314 ] }, { "teal": 5605, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5484 + 5315 ] }, { "teal": 5606, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5485 + 5316 ] }, { "teal": 5607, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5486, - 5487 + 5317, + 5318 ] }, { "teal": 5608, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5488 + 5319 ] }, { "teal": 5609, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5489 + 5320 ] }, { "teal": 5610, - "source": 1264, + "source": "contracts/validatorRegistry.algo.ts:1264", "pc": [ - 5490, - 5491 + 5321, + 5322 ] }, { - "teal": 5611, - "source": 1264, + "teal": 5615, + "source": "contracts/validatorRegistry.algo.ts:1265", "pc": [ - 5492 + 5323, + 5324 ] }, { - "teal": 5612, - "source": 1264, + "teal": 5616, + "source": "contracts/validatorRegistry.algo.ts:1265", "pc": [ - 5493 + 5325 ] }, { - "teal": 5613, - "source": 1264, + "teal": 5617, + "source": "contracts/validatorRegistry.algo.ts:1265", "pc": [ - 5494, - 5495 + 5326 ] }, { "teal": 5618, - "source": 1265, + "source": "contracts/validatorRegistry.algo.ts:1265", "pc": [ - 5496, - 5497 + 5327, + 5328, + 5329 ] }, { - "teal": 5619, - "source": 1265, + "teal": 5623, + "source": "contracts/validatorRegistry.algo.ts:1266", "pc": [ - 5498 + 5330 ] }, { - "teal": 5620, - "source": 1265, + "teal": 5624, + "source": "contracts/validatorRegistry.algo.ts:1266", "pc": [ - 5499 + 5331, + 5332 ] }, { - "teal": 5621, - "source": 1265, + "teal": 5632, + "source": "contracts/validatorRegistry.algo.ts:1269", "pc": [ - 5500, - 5501, - 5502 + 5333, + 5334 ] }, { - "teal": 5626, - "source": 1266, + "teal": 5633, + "source": "contracts/validatorRegistry.algo.ts:1269", "pc": [ - 5503 + 5335, + 5336 ] }, { - "teal": 5627, - "source": 1266, + "teal": 5634, + "source": "contracts/validatorRegistry.algo.ts:1269", "pc": [ - 5504, - 5505 + 5337, + 5338 ] }, { "teal": 5635, - "source": 1269, + "source": "contracts/validatorRegistry.algo.ts:1269", "pc": [ - 5506, - 5507 + 5339 ] }, { "teal": 5636, - "source": 1269, + "source": "contracts/validatorRegistry.algo.ts:1269", "pc": [ - 5508, - 5509 + 5340, + 5341 ] }, { "teal": 5637, - "source": 1269, + "source": "contracts/validatorRegistry.algo.ts:1269", "pc": [ - 5510, - 5511 + 5342 ] }, { - "teal": 5638, - "source": 1269, + "teal": 5640, + "source": "contracts/validatorRegistry.algo.ts:1268", + "errorMessage": "must have required minimum balance of validator defined token to add stake", "pc": [ - 5512 + 5343 ] }, { - "teal": 5639, - "source": 1269, + "teal": 5646, + "source": "contracts/validatorRegistry.algo.ts:1273", "pc": [ - 5513, - 5514 + 5344, + 5345 ] }, { - "teal": 5640, - "source": 1269, + "teal": 5647, + "source": "contracts/validatorRegistry.algo.ts:1273", "pc": [ - 5515 + 5346 ] }, { - "teal": 5643, - "source": 1268, - "errorMessage": "must have required minimum balance of validator defined token to add stake", + "teal": 5648, + "source": "contracts/validatorRegistry.algo.ts:1273", "pc": [ - 5516 + 5347 ] }, { "teal": 5649, - "source": 1273, + "source": "contracts/validatorRegistry.algo.ts:1273", "pc": [ - 5517, - 5518 + 5348, + 5349, + 5350 ] }, { - "teal": 5650, - "source": 1273, + "teal": 5657, + "source": "contracts/validatorRegistry.algo.ts:1275", "pc": [ - 5519 + 5351, + 5352 ] }, { - "teal": 5651, - "source": 1273, + "teal": 5658, + "source": "contracts/validatorRegistry.algo.ts:1275", "pc": [ - 5520 + 5353, + 5354 ] }, { - "teal": 5652, - "source": 1273, + "teal": 5659, + "source": "contracts/validatorRegistry.algo.ts:1275", "pc": [ - 5521, - 5522, - 5523 + 5355 ] }, { "teal": 5660, - "source": 1275, + "source": "contracts/validatorRegistry.algo.ts:1275", "pc": [ - 5524, - 5525 + 5356, + 5357 ] }, { "teal": 5661, - "source": 1275, + "source": "contracts/validatorRegistry.algo.ts:1275", "pc": [ - 5526, - 5527 + 5358, + 5359, + 5360 ] }, { "teal": 5662, - "source": 1275, + "source": "contracts/validatorRegistry.algo.ts:1275", "pc": [ - 5528 + 5361 ] }, { - "teal": 5663, - "source": 1275, + "teal": 5665, + "source": "contracts/validatorRegistry.algo.ts:1274", + "errorMessage": "specified asset must be created by creator that the validator defined as a requirement to stake", "pc": [ - 5529, - 5530 + 5362 ] }, { - "teal": 5664, - "source": 1275, + "teal": 5671, + "source": "contracts/validatorRegistry.algo.ts:1279", "pc": [ - 5531, - 5532, - 5533 + 5363, + 5364 ] }, { - "teal": 5665, - "source": 1275, + "teal": 5672, + "source": "contracts/validatorRegistry.algo.ts:1279", "pc": [ - 5534 + 5365, + 5366 ] }, { - "teal": 5668, - "source": 1274, - "errorMessage": "specified asset must be created by creator that the validator defined as a requirement to stake", + "teal": 5673, + "source": "contracts/validatorRegistry.algo.ts:1279", "pc": [ - 5535 + 5367 ] }, { "teal": 5674, - "source": 1279, + "source": "contracts/validatorRegistry.algo.ts:1279", "pc": [ - 5536, - 5537 + 5368, + 5369, + 5370 ] }, { - "teal": 5675, - "source": 1279, + "teal": 5679, + "source": "contracts/validatorRegistry.algo.ts:1280", "pc": [ - 5538, - 5539 + 5371 ] }, { - "teal": 5676, - "source": 1279, + "teal": 5680, + "source": "contracts/validatorRegistry.algo.ts:1280", "pc": [ - 5540 + 5372, + 5373 ] }, { - "teal": 5677, - "source": 1279, + "teal": 5684, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5541, - 5542, - 5543 + 5374, + 5375 ] }, { - "teal": 5682, - "source": 1280, + "teal": 5685, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5544 + 5376, + 5377, + 5378 ] }, { - "teal": 5683, - "source": 1280, + "teal": 5686, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5545, - 5546 + 5379 ] }, { "teal": 5687, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5547, - 5548 + 5380, + 5381 ] }, { "teal": 5688, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5549, - 5550, - 5551 + 5382, + 5383, + 5384 ] }, { "teal": 5689, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5552 + 5385 ] }, { "teal": 5690, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5553, - 5554 + 5386, + 5387 ] }, { "teal": 5691, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5555, - 5556, - 5557 + 5388 ] }, { "teal": 5692, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5558 + 5389, + 5390 ] }, { - "teal": 5693, - "source": 1281, + "teal": 5698, + "source": "contracts/validatorRegistry.algo.ts:1282", "pc": [ - 5559, - 5560 + 5391, + 5392 ] }, { - "teal": 5694, - "source": 1281, + "teal": 5699, + "source": "contracts/validatorRegistry.algo.ts:1282", "pc": [ - 5561 + 5393, + 5394 ] }, { - "teal": 5695, - "source": 1281, + "teal": 5700, + "source": "contracts/validatorRegistry.algo.ts:1282", "pc": [ - 5562, - 5563 + 5395 ] }, { "teal": 5701, - "source": 1282, + "source": "contracts/validatorRegistry.algo.ts:1282", "pc": [ - 5564, - 5565 + 5396, + 5397, + 5398 ] }, { - "teal": 5702, - "source": 1282, + "teal": 5706, + "source": "contracts/validatorRegistry.algo.ts:1283", "pc": [ - 5566, - 5567 + 5399 ] }, { - "teal": 5703, - "source": 1282, + "teal": 5707, + "source": "contracts/validatorRegistry.algo.ts:1283", "pc": [ - 5568 + 5400, + 5401 ] }, { - "teal": 5704, - "source": 1282, + "teal": 5708, + "source": "contracts/validatorRegistry.algo.ts:1284", "pc": [ - 5569, - 5570, - 5571 + 5402, + 5403, + 5404 ] }, { - "teal": 5709, - "source": 1283, + "teal": 5714, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5572 + 5405, + 5406 ] }, { - "teal": 5710, - "source": 1283, + "teal": 5715, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5573, - 5574 + 5407 ] }, { - "teal": 5711, - "source": 1284, + "teal": 5716, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5575, - 5576, - 5577 + 5408 ] }, { "teal": 5717, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5578, - 5579 + 5409 ] }, { "teal": 5718, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5580 + 5410, + 5411 ] }, { "teal": 5719, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5581 + 5412 ] }, { "teal": 5720, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5582 + 5413, + 5414, + 5415 ] }, { "teal": 5721, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5583, - 5584 + 5416, + 5417 ] }, { "teal": 5722, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5585 + 5418, + 5419 ] }, { "teal": 5723, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5586, - 5587, - 5588 + 5420, + 5421 ] }, { "teal": 5724, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5589, - 5590 + 5422 ] }, { "teal": 5725, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5591, - 5592 + 5423 ] }, { "teal": 5726, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5593, - 5594 + 5424 ] }, { "teal": 5727, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5595 + 5425, + 5426 ] }, { "teal": 5728, - "source": 1281, + "source": "contracts/validatorRegistry.algo.ts:1281", "pc": [ - 5596 + 5427, + 5428, + 5429 ] }, { - "teal": 5729, - "source": 1281, + "teal": 5733, + "source": "contracts/validatorRegistry.algo.ts:1287", "pc": [ - 5597 + 5430, + 5431 ] }, { - "teal": 5730, - "source": 1281, - "pc": [ - 5598, - 5599 + "teal": 5736, + "source": "contracts/validatorRegistry.algo.ts:1287", + "errorMessage": "specified asset must be identical to the asset id defined as a requirement to stake", + "pc": [ + 5432 ] }, { - "teal": 5731, - "source": 1281, + "teal": 5742, + "source": "contracts/validatorRegistry.algo.ts:1289", "pc": [ - 5600, - 5601, - 5602 + 5433, + 5434 ] }, { - "teal": 5736, - "source": 1287, + "teal": 5743, + "source": "contracts/validatorRegistry.algo.ts:1289", "pc": [ - 5603, - 5604 + 5435, + 5436 ] }, { - "teal": 5739, - "source": 1287, - "errorMessage": "specified asset must be identical to the asset id defined as a requirement to stake", + "teal": 5744, + "source": "contracts/validatorRegistry.algo.ts:1289", "pc": [ - 5605 + 5437 ] }, { "teal": 5745, - "source": 1289, + "source": "contracts/validatorRegistry.algo.ts:1289", "pc": [ - 5606, - 5607 + 5438, + 5439, + 5440 ] }, { - "teal": 5746, - "source": 1289, + "teal": 5753, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5608, - 5609 + 5441, + 5442 ] }, { - "teal": 5747, - "source": 1289, + "teal": 5754, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5610 + 5443, + 5444 ] }, { - "teal": 5748, - "source": 1289, + "teal": 5755, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5611, - 5612, - 5613 + 5445 ] }, { "teal": 5756, - "source": 1293, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5614, - 5615 + 5446, + 5447 ] }, { "teal": 5757, - "source": 1293, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5616, - 5617 + 5448, + 5449, + 5450 ] }, { "teal": 5758, - "source": 1293, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5618 + 5451 ] }, { "teal": 5759, - "source": 1293, + "source": "contracts/validatorRegistry.algo.ts:1293", "pc": [ - 5619, - 5620 + 5452, + 5453, + 5454 ] }, { - "teal": 5760, - "source": 1293, + "teal": 5762, + "source": "contracts/validatorRegistry.algo.ts:1292", + "errorMessage": "specified asset must be created by creator that is one of the linked addresses in an nfd", "pc": [ - 5621, - 5622, - 5623 + 5455 ] }, { - "teal": 5761, - "source": 1293, + "teal": 5768, + "source": "contracts/validatorRegistry.algo.ts:1297", "pc": [ - 5624 + 5456, + 5457 ] }, { - "teal": 5762, - "source": 1293, + "teal": 5769, + "source": "contracts/validatorRegistry.algo.ts:1297", "pc": [ - 5625, - 5626, - 5627 + 5458, + 5459 ] }, { - "teal": 5765, - "source": 1292, - "errorMessage": "specified asset must be created by creator that is one of the linked addresses in an nfd", + "teal": 5770, + "source": "contracts/validatorRegistry.algo.ts:1297", "pc": [ - 5628 + 5460 ] }, { "teal": 5771, - "source": 1297, + "source": "contracts/validatorRegistry.algo.ts:1297", "pc": [ - 5629, - 5630 + 5461, + 5462, + 5463 ] }, { - "teal": 5772, - "source": 1297, + "teal": 5776, + "source": "contracts/validatorRegistry.algo.ts:1299", "pc": [ - 5631, - 5632 + 5464, + 5465 ] }, { - "teal": 5773, - "source": 1297, + "teal": 5777, + "source": "contracts/validatorRegistry.algo.ts:1299", "pc": [ - 5633 + 5466, + 5467 ] }, { - "teal": 5774, - "source": 1297, + "teal": 5781, + "source": "contracts/validatorRegistry.algo.ts:1300", "pc": [ - 5634, - 5635, - 5636 + 5468, + 5469 ] }, { - "teal": 5779, - "source": 1299, + "teal": 5782, + "source": "contracts/validatorRegistry.algo.ts:1300", "pc": [ - 5637, - 5638 + 5470, + 5471, + 5472 ] }, { - "teal": 5780, - "source": 1299, + "teal": 5785, + "source": "contracts/validatorRegistry.algo.ts:1300", + "errorMessage": "provided NFD must be valid", "pc": [ - 5639, - 5640 + 5473 ] }, { - "teal": 5784, - "source": 1300, + "teal": 5793, + "source": "contracts/validatorRegistry.algo.ts:1304", "pc": [ - 5641, - 5642 + 5474, + 5475 ] }, { - "teal": 5785, - "source": 1300, + "teal": 5794, + "source": "contracts/validatorRegistry.algo.ts:1304", "pc": [ - 5643, - 5644, - 5645 + 5476, + 5477 ] }, { - "teal": 5788, - "source": 1300, - "errorMessage": "provided NFD must be valid", + "teal": 5795, + "source": "contracts/validatorRegistry.algo.ts:1304", "pc": [ - 5646 + 5478 ] }, { - "teal": 5796, - "source": 1304, + "teal": 5798, + "source": "contracts/validatorRegistry.algo.ts:1304", + "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')", "pc": [ - 5647, - 5648 + 5479 ] }, { - "teal": 5797, - "source": 1304, + "teal": 5799, + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5649, - 5650 + 5480, + 5481 ] }, { - "teal": 5798, - "source": 1304, + "teal": 5800, + "source": "contracts/validatorRegistry.algo.ts:1304", "pc": [ - 5651 + 5482 ] }, { "teal": 5801, - "source": 1304, - "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')", + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5652 + 5483 ] }, { "teal": 5802, - "source": 1305, + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5653, - 5654 + 5484, + 5485, + 5486 ] }, { "teal": 5803, - "source": 1304, + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5655 + 5487, + 5488 ] }, { "teal": 5804, - "source": 1305, + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5656 + 5489, + 5490 ] }, { "teal": 5805, - "source": 1305, + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5657, - 5658, - 5659 + 5491, + 5492, + 5493 ] }, { "teal": 5806, - "source": 1305, + "source": "contracts/validatorRegistry.algo.ts:1305", "pc": [ - 5660, - 5661 + 5494 ] }, { - "teal": 5807, - "source": 1305, + "teal": 5810, + "source": "contracts/validatorRegistry.algo.ts:1303", + "errorMessage": "provided nfd for entry isn't owned or linked to the staker", "pc": [ - 5662, - 5663 + 5495 ] }, { - "teal": 5808, - "source": 1305, + "teal": 5818, + "source": "contracts/validatorRegistry.algo.ts:1311", "pc": [ - 5664, - 5665, - 5666 + 5496, + 5497 ] }, { - "teal": 5809, - "source": 1305, + "teal": 5819, + "source": "contracts/validatorRegistry.algo.ts:1311", "pc": [ - 5667 + 5498, + 5499, + 5500, + 5501, + 5502, + 5503, + 5504, + 5505, + 5506, + 5507, + 5508, + 5509, + 5510, + 5511, + 5512 ] }, { - "teal": 5813, - "source": 1303, - "errorMessage": "provided nfd for entry isn't owned or linked to the staker", + "teal": 5820, + "source": "contracts/validatorRegistry.algo.ts:1311", "pc": [ - 5668 + 5513 ] }, { - "teal": 5821, - "source": 1311, + "teal": 5823, + "source": "contracts/validatorRegistry.algo.ts:1311", + "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')", "pc": [ - 5669, - 5670 + 5514 ] }, { - "teal": 5822, - "source": 1311, + "teal": 5824, + "source": "contracts/validatorRegistry.algo.ts:1311", "pc": [ - 5671, - 5672, - 5673, - 5674, - 5675, - 5676, - 5677, - 5678, - 5679, - 5680, - 5681, - 5682, - 5683, - 5684, - 5685 + 5515 ] }, { - "teal": 5823, - "source": 1311, + "teal": 5825, + "source": "contracts/validatorRegistry.algo.ts:1312", "pc": [ - 5686 + 5516, + 5517 ] }, { "teal": 5826, - "source": 1311, - "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')", + "source": "contracts/validatorRegistry.algo.ts:1312", "pc": [ - 5687 + 5518, + 5519, + 5520 ] }, { "teal": 5827, - "source": 1311, + "source": "contracts/validatorRegistry.algo.ts:1312", "pc": [ - 5688 + 5521 ] }, { "teal": 5828, - "source": 1312, + "source": "contracts/validatorRegistry.algo.ts:1311", "pc": [ - 5689, - 5690 + 5522 ] }, { - "teal": 5829, - "source": 1312, + "teal": 5831, + "source": "contracts/validatorRegistry.algo.ts:1310", + "errorMessage": "specified nfd must be a segment of the nfd the validator specified as a requirement", "pc": [ - 5691, - 5692, - 5693 + 5523 ] }, { - "teal": 5830, - "source": 1312, + "teal": 5834, + "source": "contracts/validatorRegistry.algo.ts:1249", "pc": [ - 5694 + 5524 ] }, { - "teal": 5831, - "source": 1311, + "teal": 5846, + "source": "contracts/validatorRegistry.algo.ts:1327", "pc": [ - 5695 + 5525, + 5526, + 5527 ] }, { - "teal": 5834, - "source": 1310, - "errorMessage": "specified nfd must be a segment of the nfd the validator specified as a requirement", + "teal": 5849, + "source": "contracts/validatorRegistry.algo.ts:1327", "pc": [ - 5696 + 5528 ] }, { - "teal": 5837, - "source": 1249, + "teal": 5853, + "source": "contracts/validatorRegistry.algo.ts:1329", "pc": [ - 5697 + 5529, + 5530 ] }, { - "teal": 5849, - "source": 1327, + "teal": 5854, + "source": "contracts/validatorRegistry.algo.ts:1329", "pc": [ - 5698, - 5699, - 5700 + 5531, + 5532, + 5533, + 5534, + 5535, + 5536, + 5537, + 5538 ] }, { - "teal": 5852, - "source": 1327, + "teal": 5855, + "source": "contracts/validatorRegistry.algo.ts:1329", "pc": [ - 5701 + 5539 ] }, { - "teal": 5856, - "source": 1329, + "teal": 5858, + "source": "contracts/validatorRegistry.algo.ts:1329", + "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')", "pc": [ - 5702, - 5703 + 5540 ] }, { - "teal": 5857, - "source": 1329, + "teal": 5859, + "source": "contracts/validatorRegistry.algo.ts:1329", "pc": [ - 5704, - 5705, - 5706, - 5707, - 5708, - 5709, - 5710, - 5711 + 5541, + 5542 ] }, { - "teal": 5858, - "source": 1329, + "teal": 5867, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5712 + 5543 ] }, { - "teal": 5861, - "source": 1329, - "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')", + "teal": 5868, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5713 + 5544, + 5545 ] }, { - "teal": 5862, - "source": 1329, + "teal": 5869, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5714, - 5715 + 5546, + 5547 ] }, { "teal": 5870, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1333", "pc": [ - 5716 + 5548, + 5549, + 5550, + 5551, + 5552, + 5553 ] }, { "teal": 5871, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1333", "pc": [ - 5717, - 5718 + 5554, + 5555 ] }, { - "teal": 5872, - "source": 1331, + "teal": 5875, + "source": "contracts/validatorRegistry.algo.ts:1332", "pc": [ - 5719, - 5720 + 5556, + 5557 ] }, { - "teal": 5873, - "source": 1333, + "teal": 5876, + "source": "contracts/validatorRegistry.algo.ts:1332", "pc": [ - 5721, - 5722, - 5723, - 5724, - 5725, - 5726 + 5558, + 5559 ] }, { - "teal": 5874, - "source": 1333, + "teal": 5880, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5727, - 5728 + 5560, + 5561 ] }, { - "teal": 5878, - "source": 1332, + "teal": 5881, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5729, - 5730 + 5562 ] }, { - "teal": 5879, - "source": 1332, + "teal": 5882, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5731, - 5732 + 5563 ] }, { "teal": 5883, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5733, - 5734 + 5564 ] }, { "teal": 5884, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5735 + 5565, + 5566, + 5567 ] }, { "teal": 5885, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5736 + 5568 ] }, { "teal": 5886, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5737 + 5569 ] }, { "teal": 5887, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5738, - 5739, - 5740 + 5570, + 5571 ] }, { "teal": 5888, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5741 + 5572, + 5573 ] }, { "teal": 5889, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5742 + 5574 ] }, { "teal": 5890, - "source": 1334, + "source": "contracts/validatorRegistry.algo.ts:1334", "pc": [ - 5743, - 5744 + 5575, + 5576 ] }, { - "teal": 5891, - "source": 1334, + "teal": 5893, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5745, - 5746 + 5577 ] }, { - "teal": 5892, - "source": 1334, + "teal": 5894, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5747 + 5578, + 5579 ] }, { - "teal": 5893, - "source": 1334, + "teal": 5897, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5748, - 5749 + 5580 ] }, { - "teal": 5896, - "source": 1331, + "teal": 5898, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5750 + 5581, + 5582 ] }, { - "teal": 5897, - "source": 1331, + "teal": 5899, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5751, - 5752 + 5583 ] }, { "teal": 5900, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5753 + 5584 ] }, { "teal": 5901, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5754, - 5755 + 5585, + 5586 ] }, { "teal": 5902, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5756 + 5587, + 5588, + 5589 ] }, { "teal": 5903, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5757 + 5590 ] }, { "teal": 5904, - "source": 1331, + "source": "contracts/validatorRegistry.algo.ts:1331", "pc": [ - 5758, - 5759 + 5591 ] }, { - "teal": 5905, - "source": 1331, + "teal": 5907, + "source": "contracts/validatorRegistry.algo.ts:1327", "pc": [ - 5760, - 5761, - 5762 + 5592, + 5593 ] }, { - "teal": 5906, - "source": 1331, + "teal": 5908, + "source": "contracts/validatorRegistry.algo.ts:1327", "pc": [ - 5763 + 5594 ] }, { - "teal": 5907, - "source": 1331, + "teal": 5919, + "source": "contracts/validatorRegistry.algo.ts:1346", "pc": [ - 5764 + 5595, + 5596, + 5597 ] }, { - "teal": 5910, - "source": 1327, + "teal": 5922, + "source": "contracts/validatorRegistry.algo.ts:1346", "pc": [ - 5765, - 5766 + 5598 ] }, { - "teal": 5911, - "source": 1327, + "teal": 5923, + "source": "contracts/validatorRegistry.algo.ts:1346", "pc": [ - 5767 + 5599, + 5600 ] }, { - "teal": 5922, - "source": 1346, + "teal": 5930, + "source": "contracts/validatorRegistry.algo.ts:1347", "pc": [ - 5768, - 5769, - 5770 + 5601 ] }, { - "teal": 5925, - "source": 1346, + "teal": 5931, + "source": "contracts/validatorRegistry.algo.ts:1347", "pc": [ - 5771 + 5602, + 5603 ] }, { - "teal": 5926, - "source": 1346, + "teal": 5932, + "source": "contracts/validatorRegistry.algo.ts:1347", "pc": [ - 5772, - 5773 + 5604, + 5605 ] }, { - "teal": 5933, - "source": 1347, + "teal": 5936, + "source": "contracts/validatorRegistry.algo.ts:1348", "pc": [ - 5774 + 5606, + 5607 ] }, { - "teal": 5934, - "source": 1347, + "teal": 5937, + "source": "contracts/validatorRegistry.algo.ts:1348", "pc": [ - 5775, - 5776 + 5608, + 5609 ] }, { - "teal": 5935, - "source": 1347, + "teal": 5941, + "source": "contracts/validatorRegistry.algo.ts:1349", "pc": [ - 5777, - 5778 + 5610, + 5611, + 5612, + 5613, + 5614, + 5615, + 5616, + 5617, + 5618, + 5619, + 5620, + 5621, + 5622, + 5623, + 5624 ] }, { - "teal": 5939, - "source": 1348, + "teal": 5942, + "source": "contracts/validatorRegistry.algo.ts:1349", "pc": [ - 5779, - 5780 + 5625, + 5626 ] }, { - "teal": 5940, - "source": 1348, + "teal": 5943, + "source": "contracts/validatorRegistry.algo.ts:1349", "pc": [ - 5781, - 5782 + 5627, + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635, + 5636, + 5637, + 5638, + 5639, + 5640, + 5641 ] }, { "teal": 5944, - "source": 1349, + "source": "contracts/validatorRegistry.algo.ts:1349", "pc": [ - 5783, - 5784, - 5785, - 5786, - 5787, - 5788, - 5789, - 5790, - 5791, - 5792, - 5793, - 5794, - 5795, - 5796, - 5797 + 5642, + 5643 ] }, { - "teal": 5945, - "source": 1349, + "teal": 5947, + "source": "contracts/validatorRegistry.algo.ts:1347", "pc": [ - 5798, - 5799 + 5644 ] }, { - "teal": 5946, - "source": 1349, + "teal": 5948, + "source": "contracts/validatorRegistry.algo.ts:1347", "pc": [ - 5800, - 5801, - 5802, - 5803, - 5804, - 5805, - 5806, - 5807, - 5808, - 5809, - 5810, - 5811, - 5812, - 5813, - 5814 + 5645, + 5646 ] }, { - "teal": 5947, - "source": 1349, + "teal": 5951, + "source": "contracts/validatorRegistry.algo.ts:1347", "pc": [ - 5815, - 5816 + 5647 ] }, { - "teal": 5950, - "source": 1347, + "teal": 5955, + "source": "contracts/validatorRegistry.algo.ts:1351", "pc": [ - 5817 + 5648, + 5649 ] }, { - "teal": 5951, - "source": 1347, + "teal": 5956, + "source": "contracts/validatorRegistry.algo.ts:1351", "pc": [ - 5818, - 5819 + 5650, + 5651 ] }, { - "teal": 5954, - "source": 1347, + "teal": 5960, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5820 + 5652 ] }, { - "teal": 5958, - "source": 1351, + "teal": 5961, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5821, - 5822 - ] + 5653, + 5654 + ] }, { - "teal": 5959, - "source": 1351, + "teal": 5966, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5823, - 5824 + 5655, + 5656 ] }, { - "teal": 5963, - "source": 1352, + "teal": 5967, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5825 + 5657, + 5658 ] }, { - "teal": 5964, - "source": 1352, + "teal": 5968, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5826, - 5827 + 5659 ] }, { "teal": 5969, - "source": 1352, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5828, - 5829 + 5660 ] }, { "teal": 5970, - "source": 1352, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5830, - 5831 + 5661, + 5662, + 5663 ] }, { - "teal": 5971, - "source": 1352, + "teal": 5974, + "source": "contracts/validatorRegistry.algo.ts:1353", "pc": [ - 5832 + 5664, + 5665 ] }, { - "teal": 5972, - "source": 1352, + "teal": 5975, + "source": "contracts/validatorRegistry.algo.ts:1353", "pc": [ - 5833 + 5666, + 5667 ] }, { - "teal": 5973, - "source": 1352, + "teal": 5976, + "source": "contracts/validatorRegistry.algo.ts:1353", "pc": [ - 5834, - 5835, - 5836 + 5668, + 5669 ] }, { "teal": 5977, - "source": 1353, + "source": "contracts/validatorRegistry.algo.ts:1353", "pc": [ - 5837, - 5838 + 5670 ] }, { "teal": 5978, - "source": 1353, + "source": "contracts/validatorRegistry.algo.ts:1353", "pc": [ - 5839, - 5840 + 5671, + 5672 ] }, { - "teal": 5979, - "source": 1353, + "teal": 5983, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5841, - 5842 + 5673, + 5674 ] }, { - "teal": 5980, - "source": 1353, + "teal": 5984, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5843 + 5675, + 5676 ] }, { - "teal": 5981, - "source": 1353, + "teal": 5985, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5844, - 5845 + 5677 ] }, { "teal": 5986, - "source": 1354, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5846, - 5847 + 5678 ] }, { "teal": 5987, - "source": 1354, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5848, - 5849 + 5679, + 5680, + 5681 ] }, { "teal": 5988, - "source": 1354, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5850 + 5682, + 5683 ] }, { "teal": 5989, - "source": 1354, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5851 + 5684, + 5685 ] }, { "teal": 5990, - "source": 1354, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5852, - 5853, - 5854 + 5686 ] }, { "teal": 5991, - "source": 1354, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5855, - 5856 + 5687 ] }, { - "teal": 5992, - "source": 1354, + "teal": 5994, + "source": "contracts/validatorRegistry.algo.ts:1354", "pc": [ - 5857, - 5858 + 5688, + 5689, + 5690 ] }, { - "teal": 5993, - "source": 1354, + "teal": 5999, + "source": "contracts/validatorRegistry.algo.ts:1355", "pc": [ - 5859 + 5691 ] }, { - "teal": 5994, - "source": 1354, + "teal": 6000, + "source": "contracts/validatorRegistry.algo.ts:1355", "pc": [ - 5860 + 5692, + 5693, + 5694 ] }, { - "teal": 5997, - "source": 1354, + "teal": 6007, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5861, - 5862, - 5863 + 5695, + 5696 ] }, { - "teal": 6002, - "source": 1355, + "teal": 6008, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5864 + 5697, + 5698 ] }, { - "teal": 6003, - "source": 1355, + "teal": 6009, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5865, - 5866, - 5867 + 5699 ] }, { "teal": 6010, - "source": 1352, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5868, - 5869 + 5700, + 5701 ] }, { "teal": 6011, - "source": 1352, + "source": "contracts/validatorRegistry.algo.ts:1352", "pc": [ - 5870, - 5871 + 5702, + 5703, + 5704 ] }, { - "teal": 6012, - "source": 1352, + "teal": 6016, + "source": "contracts/validatorRegistry.algo.ts:1358", "pc": [ - 5872 + 5705 ] }, { - "teal": 6013, - "source": 1352, + "teal": 6020, + "source": "contracts/validatorRegistry.algo.ts:1346", "pc": [ - 5873, - 5874 + 5706, + 5707 ] }, { - "teal": 6014, - "source": 1352, + "teal": 6023, + "source": "contracts/validatorRegistry.algo.ts:1346", "pc": [ - 5875, - 5876, - 5877 + 5708, + 5709 ] }, { - "teal": 6019, - "source": 1358, + "teal": 6024, + "source": "contracts/validatorRegistry.algo.ts:1346", "pc": [ - 5878 + 5710 ] }, { - "teal": 6023, - "source": 1346, + "teal": 6032, + "source": "contracts/validatorRegistry.algo.ts:1366", "pc": [ - 5879, - 5880 + 5711, + 5712, + 5713 ] }, { - "teal": 6026, - "source": 1346, + "teal": 6035, + "source": "contracts/validatorRegistry.algo.ts:1366", "pc": [ - 5881, - 5882 + 5714 ] }, { - "teal": 6027, - "source": 1346, + "teal": 6039, + "source": "contracts/validatorRegistry.algo.ts:1367", "pc": [ - 5883 + 5715, + 5716, + 5717 ] }, { - "teal": 6035, - "source": 1366, + "teal": 6040, + "source": "contracts/validatorRegistry.algo.ts:1367", "pc": [ - 5884, - 5885, - 5886 + 5718, + 5719 ] }, { - "teal": 6038, - "source": 1366, + "teal": 6044, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5887 + 5720, + 5721 ] }, { - "teal": 6042, - "source": 1367, + "teal": 6045, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5888, - 5889, - 5890 + 5722, + 5723 ] }, { - "teal": 6043, - "source": 1367, + "teal": 6046, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5891, - 5892 + 5724 ] }, { "teal": 6047, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5893, - 5894 + 5725 ] }, { "teal": 6048, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5895, - 5896 + 5726, + 5727 ] }, { "teal": 6049, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5897 + 5728 ] }, { "teal": 6050, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5898 + 5729 ] }, { "teal": 6051, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5899, - 5900 + 5730 ] }, { "teal": 6052, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5901 + 5731 ] }, { "teal": 6053, - "source": 1369, + "source": "contracts/validatorRegistry.algo.ts:1369", "pc": [ - 5902 + 5732 ] }, { - "teal": 6054, - "source": 1369, + "teal": 6056, + "source": "contracts/validatorRegistry.algo.ts:1369", + "errorMessage": "wideRatio failed", "pc": [ - 5903 + 5733 ] }, { - "teal": 6055, - "source": 1369, + "teal": 6059, + "source": "contracts/validatorRegistry.algo.ts:1366", "pc": [ - 5904 + 5734, + 5735 ] }, { - "teal": 6056, - "source": 1369, + "teal": 6060, + "source": "contracts/validatorRegistry.algo.ts:1366", "pc": [ - 5905 + 5736 ] }, { - "teal": 6059, - "source": 1369, - "errorMessage": "wideRatio failed", + "teal": 6067, + "source": "contracts/validatorRegistry.algo.ts:1376", "pc": [ - 5906 + 5737, + 5738, + 5739 ] }, { - "teal": 6062, - "source": 1366, + "teal": 6070, + "source": "contracts/validatorRegistry.algo.ts:1376", "pc": [ - 5907, - 5908 + 5740 ] }, { - "teal": 6063, - "source": 1366, + "teal": 6074, + "source": "contracts/validatorRegistry.algo.ts:1377", "pc": [ - 5909 + 5741, + 5742, + 5743 ] }, { - "teal": 6070, - "source": 1376, + "teal": 6075, + "source": "contracts/validatorRegistry.algo.ts:1377", "pc": [ - 5910, - 5911, - 5912 + 5744, + 5745 ] }, { - "teal": 6073, - "source": 1376, + "teal": 6079, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5913 + 5746, + 5747 ] }, { - "teal": 6077, - "source": 1377, + "teal": 6080, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5914, - 5915, - 5916 + 5748, + 5749, + 5750 ] }, { - "teal": 6078, - "source": 1377, + "teal": 6081, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5917, - 5918 + 5751 ] }, { "teal": 6082, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5919, - 5920 + 5752 ] }, { "teal": 6083, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5921, - 5922, - 5923 + 5753, + 5754 ] }, { "teal": 6084, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5924 + 5755 ] }, { "teal": 6085, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5925 + 5756 ] }, { "teal": 6086, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5926, - 5927 + 5757 ] }, { "teal": 6087, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5928 + 5758 ] }, { "teal": 6088, - "source": 1379, + "source": "contracts/validatorRegistry.algo.ts:1379", "pc": [ - 5929 + 5759 ] }, { - "teal": 6089, - "source": 1379, + "teal": 6091, + "source": "contracts/validatorRegistry.algo.ts:1379", + "errorMessage": "wideRatio failed", "pc": [ - 5930 + 5760 ] }, { - "teal": 6090, - "source": 1379, + "teal": 6094, + "source": "contracts/validatorRegistry.algo.ts:1376", "pc": [ - 5931 + 5761, + 5762 ] }, { - "teal": 6091, - "source": 1379, + "teal": 6095, + "source": "contracts/validatorRegistry.algo.ts:1376", "pc": [ - 5932 + 5763 ] }, { - "teal": 6094, - "source": 1379, - "errorMessage": "wideRatio failed", + "teal": 6101, + "source": "contracts/validatorRegistry.algo.ts:1385", "pc": [ - 5933 + 5764, + 5765, + 5766 ] }, { - "teal": 6097, - "source": 1376, + "teal": 6105, + "source": "contracts/validatorRegistry.algo.ts:1386", "pc": [ - 5934, - 5935 + 5767, + 5768 ] }, { - "teal": 6098, - "source": 1376, + "teal": 6106, + "source": "contracts/validatorRegistry.algo.ts:1385", "pc": [ - 5936 + 5769 ] }, { - "teal": 6104, - "source": 1385, + "teal": 6110, + "source": "contracts/validatorRegistry.algo.ts:1389", "pc": [ - 5937, - 5938, - 5939 + 5770, + 5771, + 5772 ] }, { - "teal": 6108, - "source": 1386, + "teal": 6114, + "source": "contracts/validatorRegistry.algo.ts:1390", "pc": [ - 5940, - 5941 + 5773 ] }, { - "teal": 6109, - "source": 1385, + "teal": 6115, + "source": "contracts/validatorRegistry.algo.ts:1389", "pc": [ - 5942 + 5774 ] }, { - "teal": 6113, - "source": 1389, + "teal": 6119, + "source": "contracts/validatorRegistry.algo.ts:1393", "pc": [ - 5943, - 5944, - 5945 + 5775, + 5776, + 5777 ] }, { - "teal": 6117, - "source": 1390, + "teal": 6122, + "source": "contracts/validatorRegistry.algo.ts:1393", "pc": [ - 5946 + 5778 ] }, { - "teal": 6118, - "source": 1389, + "teal": 6126, + "source": "contracts/validatorRegistry.algo.ts:1402", "pc": [ - 5947 + 5779, + 5780 ] }, { - "teal": 6122, - "source": 1393, + "teal": 6127, + "source": "contracts/validatorRegistry.algo.ts:1402", "pc": [ - 5948, - 5949, - 5950 + 5781, + 5782 ] }, { - "teal": 6125, - "source": 1393, + "teal": 6131, + "source": "contracts/validatorRegistry.algo.ts:1403", "pc": [ - 5951 + 5783, + 5784 ] }, { - "teal": 6129, - "source": 1402, + "teal": 6132, + "source": "contracts/validatorRegistry.algo.ts:1403", "pc": [ - 5952, - 5953 + 5785, + 5786 ] }, { - "teal": 6130, - "source": 1402, + "teal": 6133, + "source": "contracts/validatorRegistry.algo.ts:1403", "pc": [ - 5954, - 5955 + 5787, + 5788 ] }, { "teal": 6134, - "source": 1403, + "source": "contracts/validatorRegistry.algo.ts:1403", "pc": [ - 5956, - 5957 + 5789 ] }, { "teal": 6135, - "source": 1403, + "source": "contracts/validatorRegistry.algo.ts:1403", "pc": [ - 5958, - 5959 + 5790 ] }, { "teal": 6136, - "source": 1403, + "source": "contracts/validatorRegistry.algo.ts:1403", "pc": [ - 5960, - 5961 + 5791, + 5792 ] }, { - "teal": 6137, - "source": 1403, + "teal": 6140, + "source": "contracts/validatorRegistry.algo.ts:1404", "pc": [ - 5962 + 5793, + 5794 ] }, { - "teal": 6138, - "source": 1403, + "teal": 6141, + "source": "contracts/validatorRegistry.algo.ts:1404", "pc": [ - 5963 + 5795, + 5796 ] }, { - "teal": 6139, - "source": 1403, + "teal": 6142, + "source": "contracts/validatorRegistry.algo.ts:1404", "pc": [ - 5964, - 5965 + 5797, + 5798 ] }, { "teal": 6143, - "source": 1404, + "source": "contracts/validatorRegistry.algo.ts:1404", "pc": [ - 5966, - 5967 + 5799 ] }, { "teal": 6144, - "source": 1404, + "source": "contracts/validatorRegistry.algo.ts:1404", "pc": [ - 5968, - 5969 + 5800 ] }, { "teal": 6145, - "source": 1404, + "source": "contracts/validatorRegistry.algo.ts:1404", "pc": [ - 5970, - 5971 + 5801, + 5802 ] }, { - "teal": 6146, - "source": 1404, + "teal": 6149, + "source": "contracts/validatorRegistry.algo.ts:1405", "pc": [ - 5972 + 5803, + 5804 ] }, { - "teal": 6147, - "source": 1404, + "teal": 6150, + "source": "contracts/validatorRegistry.algo.ts:1405", "pc": [ - 5973 + 5805, + 5806 ] }, { - "teal": 6148, - "source": 1404, + "teal": 6151, + "source": "contracts/validatorRegistry.algo.ts:1405", "pc": [ - 5974, - 5975 + 5807, + 5808 ] }, { "teal": 6152, - "source": 1405, + "source": "contracts/validatorRegistry.algo.ts:1405", "pc": [ - 5976, - 5977 + 5809 ] }, { "teal": 6153, - "source": 1405, + "source": "contracts/validatorRegistry.algo.ts:1405", "pc": [ - 5978, - 5979 + 5810 ] }, { "teal": 6154, - "source": 1405, + "source": "contracts/validatorRegistry.algo.ts:1405", "pc": [ - 5980, - 5981 + 5811, + 5812 ] }, { - "teal": 6155, - "source": 1405, + "teal": 6158, + "source": "contracts/validatorRegistry.algo.ts:1406", "pc": [ - 5982 + 5813, + 5814 ] }, { - "teal": 6156, - "source": 1405, + "teal": 6159, + "source": "contracts/validatorRegistry.algo.ts:1406", "pc": [ - 5983 + 5815, + 5816 ] }, { - "teal": 6157, - "source": 1405, + "teal": 6160, + "source": "contracts/validatorRegistry.algo.ts:1406", "pc": [ - 5984, - 5985 + 5817, + 5818 ] }, { "teal": 6161, - "source": 1406, + "source": "contracts/validatorRegistry.algo.ts:1406", "pc": [ - 5986, - 5987 + 5819 ] }, { "teal": 6162, - "source": 1406, + "source": "contracts/validatorRegistry.algo.ts:1406", "pc": [ - 5988, - 5989 + 5820 ] }, { "teal": 6163, - "source": 1406, + "source": "contracts/validatorRegistry.algo.ts:1406", "pc": [ - 5990, - 5991 + 5821, + 5822 ] }, { - "teal": 6164, - "source": 1406, + "teal": 6167, + "source": "contracts/validatorRegistry.algo.ts:1407", "pc": [ - 5992 + 5823, + 5824 ] }, { - "teal": 6165, - "source": 1406, + "teal": 6168, + "source": "contracts/validatorRegistry.algo.ts:1407", "pc": [ - 5993 + 5825, + 5826 ] }, { - "teal": 6166, - "source": 1406, + "teal": 6169, + "source": "contracts/validatorRegistry.algo.ts:1407", "pc": [ - 5994, - 5995 + 5827, + 5828 ] }, { "teal": 6170, - "source": 1407, + "source": "contracts/validatorRegistry.algo.ts:1407", "pc": [ - 5996, - 5997 + 5829 ] }, { "teal": 6171, - "source": 1407, + "source": "contracts/validatorRegistry.algo.ts:1407", "pc": [ - 5998, - 5999 + 5830 ] }, { "teal": 6172, - "source": 1407, + "source": "contracts/validatorRegistry.algo.ts:1407", "pc": [ - 6000, - 6001 + 5831, + 5832 ] }, { - "teal": 6173, - "source": 1407, + "teal": 6176, + "source": "contracts/validatorRegistry.algo.ts:1408", "pc": [ - 6002 + 5833, + 5834 ] }, { - "teal": 6174, - "source": 1407, + "teal": 6177, + "source": "contracts/validatorRegistry.algo.ts:1408", "pc": [ - 6003 + 5835, + 5836 ] }, { - "teal": 6175, - "source": 1407, + "teal": 6178, + "source": "contracts/validatorRegistry.algo.ts:1408", "pc": [ - 6004, - 6005 + 5837, + 5838 ] }, { "teal": 6179, - "source": 1408, + "source": "contracts/validatorRegistry.algo.ts:1408", "pc": [ - 6006, - 6007 + 5839 ] }, { "teal": 6180, - "source": 1408, + "source": "contracts/validatorRegistry.algo.ts:1408", "pc": [ - 6008, - 6009 + 5840 ] }, { "teal": 6181, - "source": 1408, + "source": "contracts/validatorRegistry.algo.ts:1408", "pc": [ - 6010, - 6011 + 5841, + 5842 ] }, { - "teal": 6182, - "source": 1408, + "teal": 6185, + "source": "contracts/validatorRegistry.algo.ts:1409", "pc": [ - 6012 + 5843, + 5844 ] }, { - "teal": 6183, - "source": 1408, + "teal": 6186, + "source": "contracts/validatorRegistry.algo.ts:1409", "pc": [ - 6013 + 5845, + 5846 ] }, { - "teal": 6184, - "source": 1408, + "teal": 6187, + "source": "contracts/validatorRegistry.algo.ts:1409", "pc": [ - 6014, - 6015 + 5847, + 5848 ] }, { "teal": 6188, - "source": 1409, + "source": "contracts/validatorRegistry.algo.ts:1409", "pc": [ - 6016, - 6017 + 5849 ] }, { "teal": 6189, - "source": 1409, + "source": "contracts/validatorRegistry.algo.ts:1409", "pc": [ - 6018, - 6019 + 5850 ] }, { "teal": 6190, - "source": 1409, + "source": "contracts/validatorRegistry.algo.ts:1409", "pc": [ - 6020, - 6021 + 5851, + 5852 ] }, { - "teal": 6191, - "source": 1409, + "teal": 6194, + "source": "contracts/validatorRegistry.algo.ts:1410", "pc": [ - 6022 + 5853, + 5854 ] }, { - "teal": 6192, - "source": 1409, + "teal": 6197, + "source": "contracts/validatorRegistry.algo.ts:1393", "pc": [ - 6023 + 5855, + 5856 ] }, { - "teal": 6193, - "source": 1409, + "teal": 6198, + "source": "contracts/validatorRegistry.algo.ts:1393", "pc": [ - 6024, - 6025 + 5857 ] }, { - "teal": 6197, - "source": 1410, + "teal": 6202, + "source": "contracts/validatorRegistry.algo.ts:1413", "pc": [ - 6026, - 6027 + 5858, + 5859, + 5860 ] }, { - "teal": 6200, - "source": 1393, + "teal": 6206, + "source": "contracts/validatorRegistry.algo.ts:1417", "pc": [ - 6028, - 6029 + 5861, + 5862, + 5863 ] }, { - "teal": 6201, - "source": 1393, + "teal": 6207, + "source": "contracts/validatorRegistry.algo.ts:1417", "pc": [ - 6030 + 5864, + 5865 ] }, { - "teal": 6205, - "source": 1413, + "teal": 6208, + "source": "contracts/validatorRegistry.algo.ts:1417", "pc": [ - 6031, - 6032, - 6033 + 5866, + 5867, + 5868 ] }, { "teal": 6209, - "source": 1417, + "source": "contracts/validatorRegistry.algo.ts:1417", "pc": [ - 6034, - 6035, - 6036 + 5869 ] }, { "teal": 6210, - "source": 1417, + "source": "contracts/validatorRegistry.algo.ts:1417", "pc": [ - 6037, - 6038 + 5870 ] }, { "teal": 6211, - "source": 1417, + "source": "contracts/validatorRegistry.algo.ts:1413", "pc": [ - 6039, - 6040, - 6041 + 5871 ] }, { - "teal": 6212, - "source": 1417, + "teal": 6214, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6042 + 5872, + 5873, + 5874, + 5875, + 5876, + 5877 ] }, { - "teal": 6213, - "source": 1417, + "teal": 6215, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6043 + 5878, + 5879, + 5880 ] }, { - "teal": 6214, - "source": 1413, + "teal": 6216, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6044 + 5881, + 5882, + 5883, + 5884 ] }, { - "teal": 6217, - "source": 50, + "teal": 6219, + "source": "contracts/validatorRegistry.algo.ts:50", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 6045, - 6046, - 6047, - 6048, - 6049, - 6050 + 5885 ] }, { - "teal": 6218, - "source": 50, + "teal": 6222, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6051, - 6052, - 6053 + 5886, + 5887, + 5888, + 5889, + 5890, + 5891 ] }, { - "teal": 6219, - "source": 50, + "teal": 6223, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6054, - 6055, - 6056, - 6057 + 5892, + 5893, + 5894, + 5895, + 5896, + 5897 ] }, { - "teal": 6222, - "source": 50, - "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "teal": 6224, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6058 + 5898, + 5899, + 5900, + 5901, + 5902, + 5903 ] }, { "teal": 6225, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6059, - 6060, - 6061, - 6062, - 6063, - 6064 + 5904, + 5905, + 5906, + 5907, + 5908, + 5909 ] }, { "teal": 6226, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6065, - 6066, - 6067, - 6068, - 6069, - 6070 + 5910, + 5911, + 5912, + 5913, + 5914, + 5915 ] }, { "teal": 6227, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6071, - 6072, - 6073, - 6074, - 6075, - 6076 + 5916, + 5917, + 5918, + 5919, + 5920, + 5921 ] }, { "teal": 6228, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6077, - 6078, - 6079, - 6080, - 6081, - 6082 + 5922, + 5923, + 5924, + 5925, + 5926, + 5927 ] }, { "teal": 6229, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6083, - 6084, - 6085, - 6086, - 6087, - 6088 + 5928, + 5929, + 5930, + 5931, + 5932, + 5933 ] }, { "teal": 6230, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6089, - 6090, - 6091, - 6092, - 6093, - 6094 + 5934, + 5935, + 5936, + 5937, + 5938, + 5939 ] }, { "teal": 6231, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6095, - 6096, - 6097, - 6098, - 6099, - 6100 + 5940, + 5941, + 5942, + 5943, + 5944, + 5945 ] }, { "teal": 6232, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6101, - 6102, - 6103, - 6104, - 6105, - 6106 + 5946, + 5947, + 5948, + 5949, + 5950, + 5951 ] }, { "teal": 6233, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6107, - 6108, - 6109, - 6110, - 6111, - 6112 + 5952, + 5953, + 5954, + 5955, + 5956, + 5957 ] }, { "teal": 6234, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6113, - 6114, - 6115, - 6116, - 6117, - 6118 + 5958, + 5959, + 5960, + 5961, + 5962, + 5963 ] }, { "teal": 6235, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6119, - 6120, - 6121, - 6122, - 6123, - 6124 + 5964, + 5965, + 5966, + 5967, + 5968, + 5969 ] }, { "teal": 6236, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6125, - 6126, - 6127, - 6128, - 6129, - 6130 + 5970, + 5971, + 5972, + 5973, + 5974, + 5975 ] }, { "teal": 6237, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6131, - 6132, - 6133, - 6134, - 6135, - 6136 + 5976, + 5977, + 5978, + 5979, + 5980, + 5981 ] }, { "teal": 6238, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6137, - 6138, - 6139, - 6140, - 6141, - 6142 + 5982, + 5983, + 5984, + 5985, + 5986, + 5987 ] }, { "teal": 6239, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6143, - 6144, - 6145, - 6146, - 6147, - 6148 + 5988, + 5989, + 5990, + 5991, + 5992, + 5993 ] }, { "teal": 6240, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6149, - 6150, - 6151, - 6152, - 6153, - 6154 + 5994, + 5995, + 5996, + 5997, + 5998, + 5999 ] }, { "teal": 6241, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6155, - 6156, - 6157, - 6158, - 6159, - 6160 + 6000, + 6001, + 6002, + 6003, + 6004, + 6005 ] }, { "teal": 6242, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6161, - 6162, - 6163, - 6164, - 6165, - 6166 + 6006, + 6007, + 6008, + 6009, + 6010, + 6011 ] }, { "teal": 6243, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6167, - 6168, - 6169, - 6170, - 6171, - 6172 + 6012, + 6013, + 6014, + 6015, + 6016, + 6017 ] }, { "teal": 6244, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6173, - 6174, - 6175, - 6176, - 6177, - 6178 + 6018, + 6019, + 6020, + 6021, + 6022, + 6023 ] }, { "teal": 6245, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6179, - 6180, - 6181, - 6182, - 6183, - 6184 + 6024, + 6025, + 6026, + 6027, + 6028, + 6029 ] }, { "teal": 6246, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6185, - 6186, - 6187, - 6188, - 6189, - 6190 + 6030, + 6031, + 6032, + 6033, + 6034, + 6035 ] }, { "teal": 6247, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6191, - 6192, - 6193, - 6194, - 6195, - 6196 + 6036, + 6037, + 6038, + 6039, + 6040, + 6041 ] }, { "teal": 6248, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6197, - 6198, - 6199, - 6200, - 6201, - 6202 + 6042, + 6043, + 6044, + 6045, + 6046, + 6047 ] }, { "teal": 6249, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6203, - 6204, - 6205, - 6206, - 6207, - 6208 + 6048, + 6049, + 6050, + 6051, + 6052, + 6053 ] }, { "teal": 6250, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6209, - 6210, - 6211, - 6212, - 6213, - 6214 + 6054, + 6055, + 6056, + 6057, + 6058, + 6059 ] }, { "teal": 6251, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6215, - 6216, - 6217, - 6218, - 6219, - 6220 + 6060, + 6061, + 6062, + 6063, + 6064, + 6065 ] }, { "teal": 6252, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6221, - 6222, - 6223, - 6224, - 6225, - 6226 + 6066, + 6067, + 6068, + 6069, + 6070, + 6071 ] }, { "teal": 6253, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6227, - 6228, - 6229, - 6230, - 6231, - 6232 + 6072, + 6073, + 6074, + 6075, + 6076, + 6077 ] }, { "teal": 6254, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6233, - 6234, - 6235, - 6236, - 6237, - 6238 + 6078, + 6079, + 6080, + 6081, + 6082, + 6083 ] }, { "teal": 6255, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6239, - 6240, - 6241, - 6242, - 6243, - 6244 + 6084, + 6085, + 6086 ] }, { "teal": 6256, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "pc": [ - 6245, - 6246, - 6247, - 6248, - 6249, - 6250 - ] - }, - { - "teal": 6257, - "source": 50, - "pc": [ - 6251, - 6252, - 6253, - 6254, - 6255, - 6256 - ] - }, - { - "teal": 6258, - "source": 50, - "pc": [ - 6257, - 6258, - 6259 + 6087, + 6088, + 6089, + 6090, + 6091, + 6092, + 6093, + 6094, + 6095, + 6096, + 6097, + 6098, + 6099, + 6100, + 6101, + 6102, + 6103, + 6104, + 6105, + 6106, + 6107, + 6108, + 6109, + 6110, + 6111, + 6112, + 6113, + 6114, + 6115, + 6116, + 6117, + 6118, + 6119, + 6120, + 6121, + 6122, + 6123, + 6124, + 6125, + 6126, + 6127, + 6128, + 6129, + 6130, + 6131, + 6132, + 6133, + 6134, + 6135, + 6136, + 6137, + 6138, + 6139, + 6140, + 6141, + 6142, + 6143, + 6144, + 6145, + 6146, + 6147, + 6148, + 6149, + 6150, + 6151, + 6152, + 6153, + 6154 ] }, { "teal": 6259, - "source": 50, - "pc": [ - 6260, - 6261, - 6262, - 6263, - 6264, - 6265, - 6266, - 6267, - 6268, - 6269, - 6270, - 6271, - 6272, - 6273, - 6274, - 6275, - 6276, - 6277, - 6278, - 6279, - 6280, - 6281, - 6282, - 6283, - 6284, - 6285, - 6286, - 6287, - 6288, - 6289, - 6290, - 6291, - 6292, - 6293, - 6294, - 6295, - 6296, - 6297, - 6298, - 6299, - 6300, - 6301, - 6302, - 6303, - 6304, - 6305, - 6306, - 6307, - 6308, - 6309, - 6310, - 6311, - 6312, - 6313, - 6314, - 6315, - 6316, - 6317, - 6318, - 6319, - 6320, - 6321, - 6322, - 6323, - 6324, - 6325, - 6326, - 6327 - ] - }, - { - "teal": 6262, - "source": 50, + "source": "contracts/validatorRegistry.algo.ts:50", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 6328 + 6155 ] } ] \ No newline at end of file diff --git a/contracts/contracts/clients/StakingPoolClient.ts b/contracts/contracts/clients/StakingPoolClient.ts index 46ea6adf..26b2c946 100644 --- a/contracts/contracts/clients/StakingPoolClient.ts +++ b/contracts/contracts/clients/StakingPoolClient.ts @@ -16,6 +16,7 @@ import { AppClientCompilationParams, ResolveAppClientByCreatorAndName, ResolveAppClientByNetwork, + CloneAppClientParams, } from '@algorandfoundation/algokit-utils/types/app-client' import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory' import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer' @@ -23,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":[{"teal":1,"source":37,"pc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296]},{"teal":9,"source":37,"pc":[297,298]},{"teal":10,"source":37,"pc":[299]},{"teal":11,"source":37,"pc":[300,301]},{"teal":18,"source":37,"pc":[302,303]},{"teal":19,"source":37,"pc":[304]},{"teal":20,"source":37,"pc":[305]},{"teal":21,"source":37,"pc":[306]},{"teal":22,"source":37,"pc":[307,308]},{"teal":23,"source":37,"pc":[309]},{"teal":24,"source":37,"pc":[310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335]},{"teal":28,"source":37,"errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[336]},{"teal":33,"source":101,"pc":[337,338,339]},{"teal":34,"source":101,"pc":[340]},{"teal":37,"source":101,"pc":[341,342,343]},{"teal":38,"source":101,"pc":[344]},{"teal":41,"source":101,"pc":[345,346,347]},{"teal":42,"source":101,"pc":[348]},{"teal":45,"source":101,"pc":[349,350,351]},{"teal":46,"source":101,"pc":[352]},{"teal":49,"source":101,"pc":[353,354,355]},{"teal":50,"source":101,"pc":[356]},{"teal":51,"source":101,"pc":[357]},{"teal":61,"source":101,"pc":[358,359,360]},{"teal":66,"source":102,"pc":[361,362]},{"teal":67,"source":102,"pc":[363]},{"teal":68,"source":102,"pc":[364]},{"teal":69,"source":102,"pc":[365,366,367]},{"teal":74,"source":104,"pc":[368,369]},{"teal":75,"source":104,"pc":[370]},{"teal":76,"source":104,"pc":[371]},{"teal":77,"source":104,"pc":[372]},{"teal":81,"source":105,"pc":[373,374]},{"teal":82,"source":105,"pc":[375]},{"teal":83,"source":105,"pc":[376]},{"teal":84,"source":105,"pc":[377]},{"teal":85,"source":102,"pc":[378,379,380]},{"teal":90,"source":107,"pc":[381,382]},{"teal":91,"source":107,"pc":[383]},{"teal":92,"source":107,"pc":[384]},{"teal":93,"source":107,"pc":[385]},{"teal":97,"source":108,"pc":[386,387]},{"teal":98,"source":108,"pc":[388]},{"teal":99,"source":108,"pc":[389]},{"teal":100,"source":108,"pc":[390]},{"teal":105,"source":110,"pc":[391,392]},{"teal":106,"source":110,"pc":[393,394]},{"teal":107,"source":110,"pc":[395]},{"teal":110,"source":110,"errorMessage":"staking pool must have minimum entry of 1 algo","pc":[396]},{"teal":114,"source":111,"pc":[397]},{"teal":115,"source":111,"pc":[398,399]},{"teal":116,"source":111,"pc":[400]},{"teal":120,"source":112,"pc":[401]},{"teal":121,"source":112,"pc":[402,403]},{"teal":122,"source":112,"pc":[404]},{"teal":126,"source":113,"pc":[405]},{"teal":127,"source":113,"pc":[406,407]},{"teal":128,"source":113,"pc":[408]},{"teal":132,"source":114,"pc":[409,410]},{"teal":133,"source":114,"pc":[411]},{"teal":134,"source":114,"pc":[412]},{"teal":138,"source":115,"pc":[413,414]},{"teal":139,"source":115,"pc":[415]},{"teal":140,"source":115,"pc":[416]},{"teal":144,"source":116,"pc":[417,418]},{"teal":145,"source":116,"pc":[419,420]},{"teal":146,"source":116,"pc":[421]},{"teal":150,"source":117,"pc":[422,423]},{"teal":151,"source":117,"pc":[424,425]},{"teal":152,"source":117,"pc":[426]},{"teal":156,"source":118,"pc":[427,428]},{"teal":157,"source":118,"pc":[429]},{"teal":158,"source":118,"pc":[430]},{"teal":162,"source":120,"pc":[431,432,433]},{"teal":166,"source":121,"pc":[434,435]},{"teal":167,"source":121,"pc":[436,437]},{"teal":168,"source":121,"pc":[438,439]},{"teal":169,"source":121,"pc":[440,441]},{"teal":170,"source":121,"pc":[442]},{"teal":171,"source":121,"pc":[443]},{"teal":172,"source":121,"pc":[444]},{"teal":173,"source":121,"pc":[445]},{"teal":177,"source":122,"pc":[446,447]},{"teal":178,"source":122,"pc":[448,449]},{"teal":179,"source":122,"pc":[450]},{"teal":183,"source":123,"pc":[451,452]},{"teal":184,"source":123,"pc":[453]},{"teal":185,"source":123,"pc":[454]},{"teal":189,"source":124,"pc":[455,456]},{"teal":190,"source":124,"pc":[457,458]},{"teal":191,"source":124,"pc":[459]},{"teal":192,"source":101,"pc":[460]},{"teal":197,"source":130,"pc":[461,462,463]},{"teal":198,"source":130,"pc":[464]},{"teal":199,"source":130,"pc":[465]},{"teal":205,"source":130,"pc":[466,467,468]},{"teal":206,"source":130,"pc":[469]},{"teal":210,"source":132,"pc":[470,471,472]},{"teal":214,"source":136,"pc":[473,474,475]},{"teal":215,"source":136,"pc":[476,477]},{"teal":216,"source":136,"pc":[478,479]},{"teal":217,"source":136,"pc":[480]},{"teal":218,"source":136,"pc":[481]},{"teal":219,"source":132,"pc":[482]},{"teal":224,"source":146,"pc":[483,484]},{"teal":225,"source":146,"pc":[485]},{"teal":226,"source":146,"pc":[486]},{"teal":227,"source":146,"pc":[487]},{"teal":228,"source":146,"pc":[488,489]},{"teal":229,"source":146,"pc":[490]},{"teal":230,"source":146,"pc":[491]},{"teal":233,"source":146,"errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[492]},{"teal":236,"source":146,"pc":[493,494,495]},{"teal":237,"source":146,"pc":[496]},{"teal":238,"source":146,"pc":[497]},{"teal":248,"source":146,"pc":[498,499,500]},{"teal":251,"source":146,"pc":[501,502]},{"teal":252,"source":146,"pc":[503,504]},{"teal":256,"source":147,"pc":[505]},{"teal":257,"source":147,"pc":[506]},{"teal":258,"source":147,"pc":[507]},{"teal":259,"source":147,"pc":[508]},{"teal":260,"source":147,"pc":[509]},{"teal":263,"source":147,"errorMessage":"staking pool already initialized","pc":[510]},{"teal":270,"source":150,"pc":[511]},{"teal":271,"source":150,"pc":[512]},{"teal":272,"source":150,"pc":[513,514]},{"teal":273,"source":150,"pc":[515,516]},{"teal":274,"source":150,"pc":[517,518]},{"teal":278,"source":151,"pc":[519]},{"teal":279,"source":151,"pc":[520]},{"teal":280,"source":151,"pc":[521,522]},{"teal":284,"source":152,"pc":[523]},{"teal":285,"source":152,"pc":[524]},{"teal":286,"source":152,"pc":[525]},{"teal":287,"source":152,"pc":[526,527]},{"teal":290,"source":150,"pc":[528]},{"teal":291,"source":150,"pc":[529,530]},{"teal":294,"source":150,"pc":[531]},{"teal":295,"source":150,"pc":[532,533]},{"teal":296,"source":150,"pc":[534]},{"teal":297,"source":150,"pc":[535]},{"teal":298,"source":150,"pc":[536,537]},{"teal":299,"source":150,"pc":[538,539,540]},{"teal":300,"source":150,"pc":[541,542]},{"teal":304,"source":154,"pc":[543,544]},{"teal":305,"source":154,"pc":[545,546,547]},{"teal":306,"source":154,"pc":[548]},{"teal":307,"source":154,"pc":[549]},{"teal":308,"source":154,"pc":[550]},{"teal":309,"source":154,"pc":[551,552]},{"teal":313,"source":155,"pc":[553,554]},{"teal":314,"source":155,"pc":[555]},{"teal":315,"source":155,"pc":[556,557,558]},{"teal":316,"source":155,"pc":[559]},{"teal":317,"source":155,"pc":[560]},{"teal":318,"source":155,"pc":[561]},{"teal":319,"source":155,"pc":[562]},{"teal":320,"source":155,"pc":[563]},{"teal":323,"source":155,"pc":[564,565,566]},{"teal":324,"source":155,"pc":[567,568]},{"teal":325,"source":155,"pc":[569,570,571]},{"teal":328,"source":155,"pc":[572]},{"teal":331,"source":155,"pc":[573,574]},{"teal":338,"source":157,"pc":[575,576]},{"teal":339,"source":158,"pc":[577,578]},{"teal":340,"source":157,"pc":[579]},{"teal":341,"source":159,"pc":[580,581,582]},{"teal":342,"source":159,"pc":[583,584,585]},{"teal":343,"source":158,"pc":[586]},{"teal":344,"source":156,"pc":[587,588]},{"teal":349,"source":162,"pc":[589,590]},{"teal":350,"source":162,"pc":[591,592]},{"teal":351,"source":162,"pc":[593,594]},{"teal":352,"source":162,"pc":[595]},{"teal":355,"source":162,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[596]},{"teal":358,"source":162,"pc":[597,598]},{"teal":359,"source":162,"pc":[599,600]},{"teal":360,"source":162,"pc":[601,602]},{"teal":361,"source":162,"pc":[603]},{"teal":364,"source":162,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[604]},{"teal":368,"source":163,"pc":[605]},{"teal":369,"source":163,"pc":[606,607,608]},{"teal":370,"source":163,"pc":[609]},{"teal":371,"source":163,"pc":[610]},{"teal":376,"source":165,"pc":[611,612]},{"teal":377,"source":165,"pc":[613]},{"teal":378,"source":165,"pc":[614,615,616]},{"teal":379,"source":165,"pc":[617]},{"teal":380,"source":165,"pc":[618]},{"teal":381,"source":165,"pc":[619]},{"teal":382,"source":165,"pc":[620]},{"teal":383,"source":165,"pc":[621]},{"teal":386,"source":165,"pc":[622,623,624]},{"teal":395,"source":167,"pc":[625]},{"teal":396,"source":167,"pc":[626,627]},{"teal":397,"source":167,"pc":[628,629]},{"teal":401,"source":168,"pc":[630,631]},{"teal":402,"source":168,"pc":[632,633,634]},{"teal":403,"source":168,"pc":[635]},{"teal":404,"source":168,"pc":[636,637]},{"teal":408,"source":169,"pc":[638,639]},{"teal":409,"source":169,"pc":[640,641]},{"teal":413,"source":170,"pc":[642]},{"teal":414,"source":170,"pc":[643,644]},{"teal":417,"source":167,"pc":[645]},{"teal":418,"source":167,"pc":[646,647]},{"teal":421,"source":167,"pc":[648]},{"teal":424,"source":146,"pc":[649]},{"teal":429,"source":185,"pc":[650,651]},{"teal":432,"source":185,"pc":[652,653,654]},{"teal":433,"source":185,"pc":[655]},{"teal":434,"source":185,"pc":[656]},{"teal":435,"source":185,"pc":[657,658]},{"teal":436,"source":185,"pc":[659]},{"teal":439,"source":185,"errorMessage":"argument 0 (staker) for addStake must be a address","pc":[660]},{"teal":442,"source":185,"pc":[661,662]},{"teal":443,"source":185,"pc":[663]},{"teal":444,"source":185,"pc":[664]},{"teal":445,"source":185,"pc":[665]},{"teal":446,"source":185,"pc":[666,667]},{"teal":447,"source":185,"pc":[668]},{"teal":448,"source":185,"pc":[669]},{"teal":451,"source":185,"errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[670]},{"teal":454,"source":185,"pc":[671,672,673]},{"teal":455,"source":185,"pc":[674]},{"teal":456,"source":185,"pc":[675]},{"teal":457,"source":185,"pc":[676]},{"teal":458,"source":185,"pc":[677]},{"teal":459,"source":185,"pc":[678]},{"teal":472,"source":185,"pc":[679,680,681]},{"teal":475,"source":185,"pc":[682,683]},{"teal":476,"source":185,"pc":[684,685]},{"teal":480,"source":186,"pc":[686]},{"teal":481,"source":186,"pc":[687]},{"teal":482,"source":186,"pc":[688]},{"teal":483,"source":186,"pc":[689]},{"teal":486,"source":186,"errorMessage":"staking pool must be initialized first","pc":[690]},{"teal":493,"source":190,"pc":[691,692]},{"teal":494,"source":190,"pc":[693]},{"teal":495,"source":190,"pc":[694]},{"teal":496,"source":190,"pc":[695,696]},{"teal":497,"source":190,"pc":[697]},{"teal":498,"source":190,"pc":[698]},{"teal":501,"source":189,"errorMessage":"stake can only be added via the validator contract","pc":[699]},{"teal":505,"source":193,"pc":[700,701]},{"teal":506,"source":193,"pc":[702,703]},{"teal":507,"source":193,"pc":[704]},{"teal":508,"source":193,"pc":[705]},{"teal":512,"source":196,"pc":[706,707,708]},{"teal":521,"source":200,"pc":[709,710]},{"teal":522,"source":201,"pc":[711,712]},{"teal":523,"source":201,"pc":[713]},{"teal":524,"source":201,"pc":[714]},{"teal":525,"source":201,"pc":[715,716]},{"teal":526,"source":201,"pc":[717]},{"teal":527,"source":201,"pc":[718]},{"teal":530,"source":201,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[719]},{"teal":533,"source":200,"pc":[720,721]},{"teal":534,"source":202,"pc":[722,723]},{"teal":535,"source":202,"pc":[724,725]},{"teal":536,"source":202,"pc":[726]},{"teal":539,"source":202,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[727]},{"teal":542,"source":200,"pc":[728,729]},{"teal":543,"source":203,"pc":[730,731]},{"teal":544,"source":203,"pc":[732,733]},{"teal":545,"source":203,"pc":[734,735]},{"teal":546,"source":203,"pc":[736]},{"teal":549,"source":203,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[737]},{"teal":553,"source":209,"pc":[738,739]},{"teal":554,"source":209,"pc":[740,741,742]},{"teal":555,"source":209,"pc":[743]},{"teal":556,"source":209,"pc":[744,745]},{"teal":560,"source":210,"pc":[746]},{"teal":561,"source":210,"pc":[747,748]},{"teal":565,"source":212,"pc":[749,750]},{"teal":566,"source":212,"pc":[751]},{"teal":567,"source":212,"pc":[752,753]},{"teal":568,"source":212,"pc":[754,755]},{"teal":569,"source":212,"pc":[756]},{"teal":570,"source":212,"pc":[757,758]},{"teal":571,"source":212,"pc":[759]},{"teal":572,"source":212,"pc":[760]},{"teal":576,"source":214,"pc":[761,762]},{"teal":577,"source":214,"pc":[763]},{"teal":578,"source":214,"pc":[764,765]},{"teal":579,"source":214,"pc":[766]},{"teal":580,"source":214,"pc":[767]},{"teal":581,"source":214,"pc":[768,769]},{"teal":582,"source":214,"pc":[770]},{"teal":583,"source":214,"pc":[771,772]},{"teal":588,"source":215,"pc":[773,774]},{"teal":589,"source":215,"pc":[775]},{"teal":590,"source":216,"pc":[776]},{"teal":591,"source":216,"pc":[777,778]},{"teal":592,"source":216,"pc":[779,780]},{"teal":593,"source":216,"pc":[781]},{"teal":594,"source":216,"pc":[782,783]},{"teal":595,"source":216,"pc":[784]},{"teal":596,"source":216,"pc":[785]},{"teal":597,"source":216,"pc":[786]},{"teal":598,"source":216,"pc":[787]},{"teal":599,"source":216,"pc":[788]},{"teal":600,"source":216,"pc":[789,790]},{"teal":601,"source":216,"pc":[791]},{"teal":604,"source":216,"errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[792]},{"teal":605,"source":216,"pc":[793,794]},{"teal":606,"source":216,"pc":[795]},{"teal":607,"source":216,"pc":[796]},{"teal":608,"source":216,"pc":[797]},{"teal":609,"source":216,"pc":[798]},{"teal":610,"source":216,"pc":[799,800]},{"teal":611,"source":216,"pc":[801]},{"teal":612,"source":216,"pc":[802]},{"teal":613,"source":216,"pc":[803]},{"teal":614,"source":215,"pc":[804]},{"teal":618,"source":219,"pc":[805]},{"teal":619,"source":219,"pc":[806,807]},{"teal":624,"source":219,"pc":[808,809]},{"teal":625,"source":219,"pc":[810,811]},{"teal":626,"source":219,"pc":[812]},{"teal":627,"source":219,"pc":[813,814,815]},{"teal":632,"source":220,"pc":[816,817]},{"teal":633,"source":220,"pc":[818,819]},{"teal":634,"source":220,"pc":[820]},{"teal":635,"source":220,"pc":[821,822,823]},{"teal":640,"source":221,"pc":[824]},{"teal":641,"source":221,"pc":[825]},{"teal":642,"source":221,"pc":[826,827]},{"teal":643,"source":221,"pc":[828]},{"teal":644,"source":221,"pc":[829,830]},{"teal":645,"source":221,"pc":[831,832]},{"teal":646,"source":221,"pc":[833]},{"teal":647,"source":221,"pc":[834,835]},{"teal":648,"source":221,"pc":[836,837]},{"teal":649,"source":221,"pc":[838,839]},{"teal":650,"source":221,"pc":[840,841]},{"teal":651,"source":221,"pc":[842]},{"teal":656,"source":223,"pc":[843,844]},{"teal":657,"source":223,"pc":[845]},{"teal":658,"source":223,"pc":[846]},{"teal":659,"source":223,"pc":[847]},{"teal":660,"source":223,"pc":[848]},{"teal":661,"source":223,"pc":[849,850]},{"teal":662,"source":223,"pc":[851]},{"teal":663,"source":223,"pc":[852,853]},{"teal":668,"source":224,"pc":[854,855]},{"teal":669,"source":224,"pc":[856,857,858]},{"teal":670,"source":224,"pc":[859,860]},{"teal":671,"source":224,"pc":[861]},{"teal":672,"source":224,"pc":[862,863,864]},{"teal":677,"source":226,"pc":[865,866]},{"teal":678,"source":226,"pc":[867,868]},{"teal":679,"source":226,"pc":[869,870]},{"teal":680,"source":226,"pc":[871,872,873]},{"teal":681,"source":226,"pc":[874]},{"teal":682,"source":226,"pc":[875,876]},{"teal":683,"source":226,"pc":[877,878]},{"teal":684,"source":226,"pc":[879]},{"teal":685,"source":226,"pc":[880]},{"teal":686,"source":226,"pc":[881]},{"teal":687,"source":226,"pc":[882,883]},{"teal":691,"source":227,"pc":[884,885]},{"teal":692,"source":227,"pc":[886,887]},{"teal":693,"source":227,"pc":[888,889]},{"teal":694,"source":227,"pc":[890]},{"teal":695,"source":227,"pc":[891]},{"teal":696,"source":227,"pc":[892,893]},{"teal":700,"source":230,"pc":[894,895]},{"teal":701,"source":230,"pc":[896]},{"teal":702,"source":230,"pc":[897]},{"teal":703,"source":230,"pc":[898,899]},{"teal":704,"source":230,"pc":[900]},{"teal":705,"source":230,"pc":[901,902]},{"teal":706,"source":230,"pc":[903]},{"teal":710,"source":232,"pc":[904,905]},{"teal":711,"source":232,"pc":[906,907,908]},{"teal":717,"source":234,"pc":[909,910]},{"teal":718,"source":234,"pc":[911]},{"teal":719,"source":234,"pc":[912]},{"teal":720,"source":234,"pc":[913]},{"teal":721,"source":234,"pc":[914,915,916]},{"teal":722,"source":234,"pc":[917,918]},{"teal":723,"source":234,"pc":[919,920,921]},{"teal":724,"source":234,"pc":[922,923]},{"teal":725,"source":234,"pc":[924]},{"teal":726,"source":234,"pc":[925]},{"teal":729,"source":234,"pc":[926,927,928]},{"teal":734,"source":235,"pc":[929,930]},{"teal":735,"source":235,"pc":[931]},{"teal":736,"source":235,"pc":[932]},{"teal":737,"source":235,"pc":[933,934]},{"teal":744,"source":219,"pc":[935,936]},{"teal":745,"source":219,"pc":[937]},{"teal":746,"source":219,"pc":[938]},{"teal":747,"source":219,"pc":[939,940]},{"teal":748,"source":219,"pc":[941,942,943]},{"teal":754,"source":239,"pc":[944,945]},{"teal":755,"source":239,"pc":[946]},{"teal":756,"source":239,"pc":[947]},{"teal":757,"source":239,"pc":[948,949,950]},{"teal":761,"source":241,"errorMessage":"Staking pool full","pc":[951]},{"teal":766,"source":246,"pc":[952,953]},{"teal":767,"source":246,"pc":[954,955]},{"teal":768,"source":246,"pc":[956,957]},{"teal":769,"source":246,"pc":[958]},{"teal":770,"source":246,"pc":[959]},{"teal":773,"source":246,"errorMessage":"must stake at least the minimum for this pool","pc":[960]},{"teal":777,"source":248,"pc":[961,962]},{"teal":778,"source":248,"pc":[963]},{"teal":779,"source":248,"pc":[964]},{"teal":780,"source":248,"pc":[965]},{"teal":781,"source":248,"pc":[966]},{"teal":782,"source":248,"pc":[967]},{"teal":783,"source":248,"pc":[968]},{"teal":784,"source":248,"pc":[969,970]},{"teal":785,"source":248,"pc":[971]},{"teal":786,"source":248,"pc":[972,973]},{"teal":787,"source":248,"pc":[974]},{"teal":788,"source":248,"pc":[975,976]},{"teal":789,"source":248,"pc":[977]},{"teal":790,"source":248,"pc":[978]},{"teal":800,"source":249,"pc":[979,980]},{"teal":801,"source":249,"pc":[981]},{"teal":802,"source":249,"pc":[982]},{"teal":803,"source":249,"pc":[983]},{"teal":804,"source":249,"pc":[984]},{"teal":805,"source":250,"pc":[985,986]},{"teal":806,"source":251,"pc":[987,988]},{"teal":807,"source":251,"pc":[989,990]},{"teal":808,"source":251,"pc":[991]},{"teal":809,"source":251,"pc":[992]},{"teal":810,"source":252,"pc":[993,994]},{"teal":811,"source":252,"pc":[995]},{"teal":812,"source":253,"pc":[996,997]},{"teal":813,"source":253,"pc":[998]},{"teal":814,"source":254,"pc":[999,1000]},{"teal":815,"source":254,"pc":[1001]},{"teal":816,"source":254,"pc":[1002]},{"teal":817,"source":249,"pc":[1003]},{"teal":818,"source":249,"pc":[1004,1005]},{"teal":819,"source":249,"pc":[1006]},{"teal":823,"source":256,"pc":[1007,1008]},{"teal":824,"source":256,"pc":[1009]},{"teal":825,"source":256,"pc":[1010]},{"teal":826,"source":256,"pc":[1011]},{"teal":827,"source":256,"pc":[1012,1013]},{"teal":828,"source":256,"pc":[1014]},{"teal":829,"source":256,"pc":[1015]},{"teal":833,"source":257,"pc":[1016,1017]},{"teal":837,"source":185,"pc":[1018,1019]},{"teal":840,"source":185,"pc":[1020,1021]},{"teal":841,"source":185,"pc":[1022]},{"teal":846,"source":271,"pc":[1023,1024,1025]},{"teal":847,"source":271,"pc":[1026]},{"teal":850,"source":271,"pc":[1027,1028,1029]},{"teal":851,"source":271,"pc":[1030]},{"teal":852,"source":271,"pc":[1031]},{"teal":853,"source":271,"pc":[1032,1033]},{"teal":854,"source":271,"pc":[1034]},{"teal":857,"source":271,"errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[1035]},{"teal":860,"source":271,"pc":[1036,1037,1038]},{"teal":861,"source":271,"pc":[1039]},{"teal":862,"source":271,"pc":[1040]},{"teal":876,"source":271,"pc":[1041,1042,1043]},{"teal":879,"source":271,"pc":[1044,1045]},{"teal":880,"source":271,"pc":[1046,1047]},{"teal":885,"source":274,"pc":[1048,1049]},{"teal":886,"source":274,"pc":[1050,1051]},{"teal":887,"source":274,"pc":[1052]},{"teal":888,"source":274,"pc":[1053,1054,1055]},{"teal":896,"source":276,"pc":[1056,1057,1058]},{"teal":899,"source":275,"errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[1059]},{"teal":904,"source":281,"pc":[1060,1061,1062]},{"teal":908,"source":283,"pc":[1063]},{"teal":909,"source":283,"pc":[1064,1065]},{"teal":914,"source":283,"pc":[1066,1067]},{"teal":915,"source":283,"pc":[1068,1069]},{"teal":916,"source":283,"pc":[1070]},{"teal":917,"source":283,"pc":[1071,1072,1073]},{"teal":922,"source":284,"pc":[1074,1075]},{"teal":923,"source":284,"pc":[1076,1077]},{"teal":924,"source":284,"pc":[1078]},{"teal":925,"source":284,"pc":[1079,1080,1081]},{"teal":930,"source":285,"pc":[1082]},{"teal":931,"source":285,"pc":[1083]},{"teal":932,"source":285,"pc":[1084,1085]},{"teal":933,"source":285,"pc":[1086]},{"teal":934,"source":285,"pc":[1087,1088]},{"teal":935,"source":285,"pc":[1089,1090]},{"teal":936,"source":285,"pc":[1091]},{"teal":937,"source":285,"pc":[1092,1093]},{"teal":938,"source":285,"pc":[1094,1095]},{"teal":939,"source":285,"pc":[1096,1097]},{"teal":940,"source":285,"pc":[1098,1099]},{"teal":941,"source":285,"pc":[1100]},{"teal":946,"source":287,"pc":[1101,1102]},{"teal":947,"source":287,"pc":[1103]},{"teal":948,"source":287,"pc":[1104]},{"teal":949,"source":287,"pc":[1105]},{"teal":950,"source":287,"pc":[1106]},{"teal":951,"source":287,"pc":[1107,1108]},{"teal":952,"source":287,"pc":[1109]},{"teal":953,"source":287,"pc":[1110,1111]},{"teal":958,"source":288,"pc":[1112,1113]},{"teal":959,"source":288,"pc":[1114,1115,1116]},{"teal":960,"source":288,"pc":[1117,1118]},{"teal":961,"source":288,"pc":[1119]},{"teal":962,"source":288,"pc":[1120,1121,1122]},{"teal":968,"source":289,"pc":[1123,1124]},{"teal":969,"source":289,"pc":[1125]},{"teal":970,"source":289,"pc":[1126]},{"teal":971,"source":289,"pc":[1127,1128,1129]},{"teal":976,"source":291,"pc":[1130,1131]},{"teal":977,"source":291,"pc":[1132,1133,1134]},{"teal":978,"source":291,"pc":[1135]},{"teal":979,"source":291,"pc":[1136,1137]},{"teal":985,"source":293,"pc":[1138,1139]},{"teal":986,"source":293,"pc":[1140,1141,1142]},{"teal":987,"source":293,"pc":[1143]},{"teal":988,"source":293,"pc":[1144,1145]},{"teal":989,"source":293,"pc":[1146]},{"teal":990,"source":293,"pc":[1147,1148,1149]},{"teal":994,"source":294,"errorMessage":"Insufficient balance","pc":[1150]},{"teal":999,"source":296,"pc":[1151,1152]},{"teal":1000,"source":296,"pc":[1153,1154]},{"teal":1001,"source":296,"pc":[1155,1156]},{"teal":1002,"source":296,"pc":[1157,1158,1159]},{"teal":1003,"source":296,"pc":[1160]},{"teal":1004,"source":296,"pc":[1161,1162]},{"teal":1005,"source":296,"pc":[1163]},{"teal":1006,"source":296,"pc":[1164]},{"teal":1007,"source":296,"pc":[1165]},{"teal":1008,"source":296,"pc":[1166,1167]},{"teal":1012,"source":297,"pc":[1168,1169]},{"teal":1013,"source":297,"pc":[1170]},{"teal":1014,"source":297,"pc":[1171,1172]},{"teal":1015,"source":297,"pc":[1173]},{"teal":1016,"source":297,"pc":[1174,1175]},{"teal":1017,"source":297,"pc":[1176]},{"teal":1018,"source":297,"pc":[1177]},{"teal":1022,"source":299,"pc":[1178]},{"teal":1023,"source":299,"pc":[1179,1180]},{"teal":1028,"source":300,"pc":[1181,1182]},{"teal":1029,"source":300,"pc":[1183,1184,1185]},{"teal":1030,"source":300,"pc":[1186]},{"teal":1031,"source":300,"pc":[1187]},{"teal":1032,"source":300,"pc":[1188]},{"teal":1033,"source":300,"pc":[1189,1190,1191]},{"teal":1039,"source":302,"pc":[1192]},{"teal":1040,"source":302,"pc":[1193]},{"teal":1041,"source":302,"pc":[1194]},{"teal":1042,"source":302,"pc":[1195]},{"teal":1043,"source":302,"pc":[1196,1197,1198]},{"teal":1051,"source":303,"pc":[1199]},{"teal":1052,"source":303,"pc":[1200]},{"teal":1053,"source":303,"pc":[1201,1202]},{"teal":1054,"source":303,"pc":[1203,1204]},{"teal":1055,"source":303,"pc":[1205,1206]},{"teal":1059,"source":304,"pc":[1207]},{"teal":1060,"source":304,"pc":[1208]},{"teal":1061,"source":304,"pc":[1209,1210]},{"teal":1065,"source":305,"pc":[1211]},{"teal":1066,"source":305,"pc":[1212]},{"teal":1067,"source":305,"pc":[1213]},{"teal":1068,"source":305,"pc":[1214,1215]},{"teal":1071,"source":303,"pc":[1216]},{"teal":1072,"source":303,"pc":[1217,1218]},{"teal":1075,"source":303,"pc":[1219]},{"teal":1076,"source":303,"pc":[1220,1221]},{"teal":1077,"source":303,"pc":[1222]},{"teal":1078,"source":303,"pc":[1223]},{"teal":1079,"source":303,"pc":[1224,1225]},{"teal":1080,"source":303,"pc":[1226,1227,1228]},{"teal":1081,"source":303,"pc":[1229,1230]},{"teal":1089,"source":311,"pc":[1231]},{"teal":1090,"source":311,"pc":[1232,1233]},{"teal":1091,"source":311,"pc":[1234,1235]},{"teal":1095,"source":312,"pc":[1236,1237]},{"teal":1096,"source":312,"pc":[1238,1239,1240]},{"teal":1097,"source":312,"pc":[1241]},{"teal":1098,"source":312,"pc":[1242,1243]},{"teal":1102,"source":313,"pc":[1244,1245]},{"teal":1103,"source":313,"pc":[1246,1247]},{"teal":1107,"source":314,"pc":[1248,1249]},{"teal":1108,"source":314,"pc":[1250,1251,1252]},{"teal":1109,"source":314,"pc":[1253]},{"teal":1110,"source":314,"pc":[1254,1255]},{"teal":1113,"source":311,"pc":[1256]},{"teal":1114,"source":311,"pc":[1257,1258]},{"teal":1117,"source":311,"pc":[1259]},{"teal":1121,"source":316,"pc":[1260,1261]},{"teal":1122,"source":316,"pc":[1262,1263,1264]},{"teal":1123,"source":316,"pc":[1265]},{"teal":1124,"source":316,"pc":[1266,1267]},{"teal":1128,"source":317,"pc":[1268,1269]},{"teal":1129,"source":317,"pc":[1270,1271]},{"teal":1130,"source":317,"pc":[1272,1273]},{"teal":1131,"source":317,"pc":[1274,1275]},{"teal":1132,"source":302,"pc":[1276,1277,1278]},{"teal":1137,"source":322,"pc":[1279,1280]},{"teal":1138,"source":322,"pc":[1281,1282,1283]},{"teal":1139,"source":322,"pc":[1284]},{"teal":1140,"source":322,"pc":[1285,1286]},{"teal":1144,"source":323,"pc":[1287,1288]},{"teal":1145,"source":323,"pc":[1289,1290]},{"teal":1146,"source":323,"pc":[1291,1292]},{"teal":1147,"source":323,"pc":[1293,1294]},{"teal":1157,"source":329,"pc":[1295,1296]},{"teal":1158,"source":329,"pc":[1297,1298,1299]},{"teal":1159,"source":329,"pc":[1300]},{"teal":1160,"source":329,"pc":[1301]},{"teal":1161,"source":329,"pc":[1302]},{"teal":1162,"source":329,"pc":[1303]},{"teal":1163,"source":329,"pc":[1304,1305,1306]},{"teal":1164,"source":329,"pc":[1307,1308]},{"teal":1165,"source":329,"pc":[1309,1310,1311]},{"teal":1166,"source":329,"pc":[1312]},{"teal":1167,"source":329,"pc":[1313,1314]},{"teal":1168,"source":329,"pc":[1315]},{"teal":1169,"source":329,"pc":[1316]},{"teal":1170,"source":329,"pc":[1317]},{"teal":1174,"source":328,"errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1318]},{"teal":1182,"source":336,"pc":[1319]},{"teal":1183,"source":336,"pc":[1320]},{"teal":1184,"source":336,"pc":[1321,1322]},{"teal":1188,"source":337,"pc":[1323,1324]},{"teal":1189,"source":337,"pc":[1325,1326]},{"teal":1193,"source":338,"pc":[1327,1328]},{"teal":1194,"source":338,"pc":[1329,1330]},{"teal":1198,"source":339,"pc":[1331,1332,1333,1334,1335,1336,1337,1338,1339,1340]},{"teal":1199,"source":339,"pc":[1341,1342]},{"teal":1202,"source":336,"pc":[1343]},{"teal":1203,"source":336,"pc":[1344,1345]},{"teal":1206,"source":336,"pc":[1346]},{"teal":1210,"source":341,"pc":[1347]},{"teal":1211,"source":341,"pc":[1348,1349]},{"teal":1216,"source":342,"pc":[1350,1351]},{"teal":1217,"source":342,"pc":[1352,1353,1354]},{"teal":1218,"source":342,"pc":[1355]},{"teal":1219,"source":342,"pc":[1356]},{"teal":1220,"source":342,"pc":[1357]},{"teal":1221,"source":342,"pc":[1358,1359,1360]},{"teal":1226,"source":344,"pc":[1361,1362]},{"teal":1227,"source":344,"pc":[1363]},{"teal":1228,"source":344,"pc":[1364]},{"teal":1229,"source":344,"pc":[1365]},{"teal":1230,"source":344,"pc":[1366,1367]},{"teal":1231,"source":344,"pc":[1368]},{"teal":1232,"source":344,"pc":[1369]},{"teal":1236,"source":345,"pc":[1370,1371]},{"teal":1237,"source":345,"pc":[1372]},{"teal":1238,"source":345,"pc":[1373,1374]},{"teal":1239,"source":345,"pc":[1375]},{"teal":1240,"source":345,"pc":[1376,1377]},{"teal":1244,"source":346,"pc":[1378,1379]},{"teal":1245,"source":346,"pc":[1380,1381]},{"teal":1246,"source":346,"pc":[1382,1383]},{"teal":1247,"source":346,"pc":[1384,1385]},{"teal":1251,"source":347,"pc":[1386,1387]},{"teal":1252,"source":347,"pc":[1388,1389]},{"teal":1253,"source":347,"pc":[1390,1391]},{"teal":1254,"source":347,"pc":[1392,1393]},{"teal":1258,"source":348,"pc":[1394]},{"teal":1259,"source":348,"pc":[1395,1396]},{"teal":1264,"source":351,"pc":[1397,1398]},{"teal":1265,"source":351,"pc":[1399]},{"teal":1266,"source":351,"pc":[1400]},{"teal":1267,"source":351,"pc":[1401,1402]},{"teal":1268,"source":351,"pc":[1403]},{"teal":1269,"source":351,"pc":[1404,1405]},{"teal":1270,"source":351,"pc":[1406]},{"teal":1274,"source":353,"pc":[1407,1408]},{"teal":1275,"source":353,"pc":[1409]},{"teal":1276,"source":353,"pc":[1410,1411]},{"teal":1277,"source":353,"pc":[1412]},{"teal":1278,"source":353,"pc":[1413]},{"teal":1279,"source":353,"pc":[1414,1415]},{"teal":1280,"source":353,"pc":[1416]},{"teal":1281,"source":353,"pc":[1417,1418]},{"teal":1285,"source":354,"pc":[1419,1420]},{"teal":1286,"source":354,"pc":[1421]},{"teal":1287,"source":354,"pc":[1422,1423]},{"teal":1288,"source":354,"pc":[1424]},{"teal":1289,"source":354,"pc":[1425]},{"teal":1290,"source":354,"pc":[1426]},{"teal":1291,"source":354,"pc":[1427]},{"teal":1292,"source":354,"pc":[1428,1429]},{"teal":1293,"source":354,"pc":[1430]},{"teal":1296,"source":354,"errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1431]},{"teal":1297,"source":354,"pc":[1432,1433]},{"teal":1298,"source":354,"pc":[1434]},{"teal":1299,"source":354,"pc":[1435]},{"teal":1300,"source":354,"pc":[1436]},{"teal":1301,"source":354,"pc":[1437]},{"teal":1302,"source":354,"pc":[1438,1439]},{"teal":1303,"source":354,"pc":[1440]},{"teal":1304,"source":354,"pc":[1441]},{"teal":1305,"source":354,"pc":[1442]},{"teal":1306,"source":354,"pc":[1443,1444]},{"teal":1310,"source":355,"pc":[1445,1446]},{"teal":1311,"source":355,"pc":[1447]},{"teal":1312,"source":355,"pc":[1448]},{"teal":1313,"source":355,"pc":[1449,1450]},{"teal":1314,"source":355,"pc":[1451]},{"teal":1315,"source":355,"pc":[1452]},{"teal":1316,"source":355,"pc":[1453]},{"teal":1317,"source":355,"pc":[1454,1455]},{"teal":1318,"source":355,"pc":[1456]},{"teal":1321,"source":355,"errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1457]},{"teal":1322,"source":355,"pc":[1458,1459]},{"teal":1323,"source":355,"pc":[1460]},{"teal":1324,"source":355,"pc":[1461]},{"teal":1325,"source":355,"pc":[1462]},{"teal":1326,"source":355,"pc":[1463]},{"teal":1327,"source":355,"pc":[1464,1465]},{"teal":1328,"source":355,"pc":[1466]},{"teal":1329,"source":355,"pc":[1467]},{"teal":1330,"source":355,"pc":[1468]},{"teal":1331,"source":355,"pc":[1469]},{"teal":1344,"source":360,"pc":[1470]},{"teal":1345,"source":360,"pc":[1471]},{"teal":1346,"source":360,"pc":[1472,1473]},{"teal":1347,"source":360,"pc":[1474,1475]},{"teal":1348,"source":360,"pc":[1476,1477]},{"teal":1352,"source":361,"pc":[1478]},{"teal":1353,"source":361,"pc":[1479]},{"teal":1354,"source":361,"pc":[1480,1481]},{"teal":1364,"source":363,"pc":[1482]},{"teal":1365,"source":363,"pc":[1483]},{"teal":1366,"source":363,"pc":[1484]},{"teal":1367,"source":363,"pc":[1485]},{"teal":1368,"source":363,"pc":[1486]},{"teal":1369,"source":363,"pc":[1487]},{"teal":1370,"source":363,"pc":[1488]},{"teal":1371,"source":363,"pc":[1489,1490,1491]},{"teal":1372,"source":363,"pc":[1492]},{"teal":1373,"source":363,"pc":[1493]},{"teal":1374,"source":363,"pc":[1494,1495]},{"teal":1375,"source":364,"pc":[1496,1497]},{"teal":1376,"source":364,"pc":[1498,1499]},{"teal":1377,"source":365,"pc":[1500,1501]},{"teal":1378,"source":365,"pc":[1502]},{"teal":1379,"source":365,"pc":[1503,1504]},{"teal":1380,"source":366,"pc":[1505,1506]},{"teal":1381,"source":366,"pc":[1507]},{"teal":1382,"source":366,"pc":[1508,1509]},{"teal":1383,"source":367,"pc":[1510,1511]},{"teal":1384,"source":367,"pc":[1512,1513]},{"teal":1385,"source":367,"pc":[1514]},{"teal":1386,"source":367,"pc":[1515,1516]},{"teal":1387,"source":367,"pc":[1517]},{"teal":1388,"source":367,"pc":[1518,1519]},{"teal":1391,"source":360,"pc":[1520]},{"teal":1392,"source":360,"pc":[1521,1522]},{"teal":1395,"source":360,"pc":[1523]},{"teal":1399,"source":370,"pc":[1524]},{"teal":1406,"source":283,"pc":[1525,1526]},{"teal":1407,"source":283,"pc":[1527]},{"teal":1408,"source":283,"pc":[1528]},{"teal":1409,"source":283,"pc":[1529,1530]},{"teal":1410,"source":283,"pc":[1531,1532,1533]},{"teal":1414,"source":373,"errorMessage":"account not found","pc":[1534]},{"teal":1415,"source":271,"pc":[1535]},{"teal":1420,"source":381,"pc":[1536,1537,1538]},{"teal":1421,"source":381,"pc":[1539]},{"teal":1422,"source":381,"pc":[1540]},{"teal":1430,"source":381,"pc":[1541,1542,1543]},{"teal":1433,"source":381,"pc":[1544,1545]},{"teal":1434,"source":381,"pc":[1546,1547]},{"teal":1438,"source":385,"pc":[1548,1549]},{"teal":1439,"source":385,"pc":[1550,1551]},{"teal":1443,"source":387,"pc":[1552]},{"teal":1444,"source":387,"pc":[1553,1554]},{"teal":1449,"source":387,"pc":[1555,1556]},{"teal":1450,"source":387,"pc":[1557,1558]},{"teal":1451,"source":387,"pc":[1559]},{"teal":1452,"source":387,"pc":[1560,1561,1562]},{"teal":1457,"source":388,"pc":[1563,1564]},{"teal":1458,"source":388,"pc":[1565,1566]},{"teal":1459,"source":388,"pc":[1567]},{"teal":1460,"source":388,"pc":[1568,1569,1570]},{"teal":1465,"source":389,"pc":[1571]},{"teal":1466,"source":389,"pc":[1572]},{"teal":1467,"source":389,"pc":[1573,1574]},{"teal":1468,"source":389,"pc":[1575]},{"teal":1469,"source":389,"pc":[1576,1577]},{"teal":1470,"source":389,"pc":[1578,1579]},{"teal":1471,"source":389,"pc":[1580]},{"teal":1472,"source":389,"pc":[1581,1582]},{"teal":1473,"source":389,"pc":[1583,1584]},{"teal":1474,"source":389,"pc":[1585,1586]},{"teal":1475,"source":389,"pc":[1587,1588]},{"teal":1476,"source":389,"pc":[1589]},{"teal":1481,"source":391,"pc":[1590,1591]},{"teal":1482,"source":391,"pc":[1592]},{"teal":1483,"source":391,"pc":[1593]},{"teal":1484,"source":391,"pc":[1594]},{"teal":1485,"source":391,"pc":[1595]},{"teal":1486,"source":391,"pc":[1596,1597]},{"teal":1487,"source":391,"pc":[1598]},{"teal":1488,"source":391,"pc":[1599,1600]},{"teal":1493,"source":392,"pc":[1601,1602]},{"teal":1494,"source":392,"pc":[1603,1604,1605]},{"teal":1495,"source":392,"pc":[1606,1607]},{"teal":1496,"source":392,"pc":[1608]},{"teal":1497,"source":392,"pc":[1609,1610,1611]},{"teal":1503,"source":393,"pc":[1612,1613]},{"teal":1504,"source":393,"pc":[1614,1615,1616]},{"teal":1505,"source":393,"pc":[1617]},{"teal":1506,"source":393,"pc":[1618]},{"teal":1507,"source":393,"pc":[1619]},{"teal":1508,"source":393,"pc":[1620,1621,1622]},{"teal":1513,"source":394,"pc":[1623]},{"teal":1518,"source":396,"pc":[1624]},{"teal":1519,"source":396,"pc":[1625,1626]},{"teal":1524,"source":398,"pc":[1627]},{"teal":1525,"source":398,"pc":[1628]},{"teal":1526,"source":398,"pc":[1629]},{"teal":1527,"source":398,"pc":[1630]},{"teal":1528,"source":398,"pc":[1631,1632,1633]},{"teal":1536,"source":399,"pc":[1634]},{"teal":1537,"source":399,"pc":[1635]},{"teal":1538,"source":399,"pc":[1636,1637]},{"teal":1539,"source":399,"pc":[1638,1639]},{"teal":1540,"source":399,"pc":[1640,1641]},{"teal":1544,"source":400,"pc":[1642]},{"teal":1545,"source":400,"pc":[1643]},{"teal":1546,"source":400,"pc":[1644,1645]},{"teal":1550,"source":401,"pc":[1646]},{"teal":1551,"source":401,"pc":[1647]},{"teal":1552,"source":401,"pc":[1648]},{"teal":1553,"source":401,"pc":[1649,1650]},{"teal":1556,"source":399,"pc":[1651]},{"teal":1557,"source":399,"pc":[1652,1653]},{"teal":1560,"source":399,"pc":[1654]},{"teal":1561,"source":399,"pc":[1655,1656]},{"teal":1562,"source":399,"pc":[1657]},{"teal":1563,"source":399,"pc":[1658]},{"teal":1564,"source":399,"pc":[1659,1660]},{"teal":1565,"source":399,"pc":[1661,1662,1663]},{"teal":1566,"source":399,"pc":[1664,1665]},{"teal":1574,"source":406,"pc":[1666]},{"teal":1575,"source":406,"pc":[1667,1668]},{"teal":1576,"source":406,"pc":[1669,1670]},{"teal":1580,"source":407,"pc":[1671,1672]},{"teal":1581,"source":407,"pc":[1673,1674,1675]},{"teal":1582,"source":407,"pc":[1676]},{"teal":1583,"source":407,"pc":[1677,1678]},{"teal":1587,"source":408,"pc":[1679,1680]},{"teal":1588,"source":408,"pc":[1681,1682]},{"teal":1592,"source":409,"pc":[1683,1684]},{"teal":1593,"source":409,"pc":[1685,1686,1687]},{"teal":1594,"source":409,"pc":[1688]},{"teal":1595,"source":409,"pc":[1689,1690]},{"teal":1598,"source":406,"pc":[1691]},{"teal":1599,"source":406,"pc":[1692,1693]},{"teal":1602,"source":406,"pc":[1694]},{"teal":1606,"source":411,"pc":[1695,1696]},{"teal":1607,"source":411,"pc":[1697,1698,1699]},{"teal":1608,"source":411,"pc":[1700]},{"teal":1609,"source":411,"pc":[1701,1702]},{"teal":1613,"source":412,"pc":[1703,1704]},{"teal":1614,"source":412,"pc":[1705,1706]},{"teal":1615,"source":412,"pc":[1707,1708]},{"teal":1616,"source":412,"pc":[1709,1710]},{"teal":1617,"source":398,"pc":[1711,1712,1713]},{"teal":1622,"source":417,"pc":[1714,1715]},{"teal":1623,"source":417,"pc":[1716,1717,1718]},{"teal":1624,"source":417,"pc":[1719]},{"teal":1625,"source":417,"pc":[1720,1721]},{"teal":1629,"source":418,"pc":[1722,1723]},{"teal":1630,"source":418,"pc":[1724,1725]},{"teal":1631,"source":418,"pc":[1726,1727]},{"teal":1632,"source":418,"pc":[1728,1729]},{"teal":1637,"source":422,"pc":[1730,1731]},{"teal":1638,"source":422,"pc":[1732]},{"teal":1639,"source":422,"pc":[1733]},{"teal":1640,"source":422,"pc":[1734,1735]},{"teal":1641,"source":422,"pc":[1736]},{"teal":1642,"source":422,"pc":[1737,1738]},{"teal":1643,"source":422,"pc":[1739]},{"teal":1656,"source":427,"pc":[1740]},{"teal":1657,"source":427,"pc":[1741]},{"teal":1658,"source":427,"pc":[1742,1743]},{"teal":1659,"source":427,"pc":[1744,1745]},{"teal":1660,"source":427,"pc":[1746,1747]},{"teal":1664,"source":428,"pc":[1748]},{"teal":1665,"source":428,"pc":[1749]},{"teal":1666,"source":428,"pc":[1750,1751]},{"teal":1676,"source":430,"pc":[1752]},{"teal":1677,"source":430,"pc":[1753]},{"teal":1678,"source":430,"pc":[1754]},{"teal":1679,"source":430,"pc":[1755]},{"teal":1680,"source":430,"pc":[1756]},{"teal":1681,"source":430,"pc":[1757]},{"teal":1682,"source":430,"pc":[1758]},{"teal":1683,"source":430,"pc":[1759,1760,1761]},{"teal":1684,"source":430,"pc":[1762]},{"teal":1685,"source":430,"pc":[1763]},{"teal":1686,"source":430,"pc":[1764,1765]},{"teal":1687,"source":431,"pc":[1766,1767]},{"teal":1688,"source":431,"pc":[1768,1769]},{"teal":1689,"source":432,"pc":[1770,1771]},{"teal":1690,"source":432,"pc":[1772,1773]},{"teal":1691,"source":433,"pc":[1774,1775]},{"teal":1692,"source":433,"pc":[1776]},{"teal":1693,"source":433,"pc":[1777,1778]},{"teal":1694,"source":434,"pc":[1779]},{"teal":1695,"source":434,"pc":[1780,1781]},{"teal":1696,"source":434,"pc":[1782]},{"teal":1697,"source":434,"pc":[1783,1784]},{"teal":1698,"source":434,"pc":[1785]},{"teal":1699,"source":434,"pc":[1786,1787]},{"teal":1702,"source":427,"pc":[1788]},{"teal":1703,"source":427,"pc":[1789,1790]},{"teal":1706,"source":427,"pc":[1791]},{"teal":1710,"source":437,"pc":[1792]},{"teal":1717,"source":387,"pc":[1793,1794]},{"teal":1718,"source":387,"pc":[1795]},{"teal":1719,"source":387,"pc":[1796]},{"teal":1720,"source":387,"pc":[1797,1798]},{"teal":1721,"source":387,"pc":[1799,1800,1801]},{"teal":1725,"source":440,"errorMessage":"account not found","pc":[1802]},{"teal":1726,"source":381,"pc":[1803]},{"teal":1731,"source":450,"pc":[1804,1805]},{"teal":1734,"source":451,"pc":[1806,1807,1808]},{"teal":1735,"source":451,"pc":[1809]},{"teal":1736,"source":451,"pc":[1810]},{"teal":1737,"source":451,"pc":[1811,1812]},{"teal":1738,"source":451,"pc":[1813]},{"teal":1741,"source":451,"errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1814]},{"teal":1744,"source":450,"pc":[1815,1816,1817]},{"teal":1745,"source":450,"pc":[1818]},{"teal":1746,"source":450,"pc":[1819]},{"teal":1747,"source":450,"pc":[1820]},{"teal":1748,"source":450,"pc":[1821]},{"teal":1758,"source":450,"pc":[1822,1823,1824]},{"teal":1761,"source":450,"pc":[1825,1826]},{"teal":1765,"source":452,"pc":[1827]},{"teal":1766,"source":452,"pc":[1828,1829]},{"teal":1771,"source":452,"pc":[1830,1831]},{"teal":1772,"source":452,"pc":[1832,1833]},{"teal":1773,"source":452,"pc":[1834]},{"teal":1774,"source":452,"pc":[1835,1836,1837]},{"teal":1779,"source":453,"pc":[1838,1839]},{"teal":1780,"source":453,"pc":[1840,1841]},{"teal":1781,"source":453,"pc":[1842]},{"teal":1782,"source":453,"pc":[1843,1844,1845]},{"teal":1787,"source":454,"pc":[1846]},{"teal":1788,"source":454,"pc":[1847]},{"teal":1789,"source":454,"pc":[1848,1849]},{"teal":1790,"source":454,"pc":[1850]},{"teal":1791,"source":454,"pc":[1851,1852]},{"teal":1792,"source":454,"pc":[1853,1854]},{"teal":1793,"source":454,"pc":[1855]},{"teal":1794,"source":454,"pc":[1856,1857]},{"teal":1795,"source":454,"pc":[1858,1859]},{"teal":1796,"source":454,"pc":[1860,1861]},{"teal":1797,"source":454,"pc":[1862,1863]},{"teal":1798,"source":454,"pc":[1864]},{"teal":1804,"source":456,"pc":[1865,1866]},{"teal":1805,"source":456,"pc":[1867]},{"teal":1806,"source":456,"pc":[1868]},{"teal":1807,"source":456,"pc":[1869]},{"teal":1808,"source":456,"pc":[1870]},{"teal":1809,"source":456,"pc":[1871,1872]},{"teal":1810,"source":456,"pc":[1873]},{"teal":1811,"source":456,"pc":[1874,1875]},{"teal":1812,"source":456,"pc":[1876]},{"teal":1813,"source":456,"pc":[1877,1878]},{"teal":1814,"source":456,"pc":[1879]},{"teal":1815,"source":456,"pc":[1880,1881,1882]},{"teal":1820,"source":457,"pc":[1883,1884]},{"teal":1821,"source":457,"pc":[1885]},{"teal":1822,"source":457,"pc":[1886]},{"teal":1823,"source":457,"pc":[1887]},{"teal":1824,"source":457,"pc":[1888]},{"teal":1825,"source":457,"pc":[1889,1890]},{"teal":1826,"source":457,"pc":[1891]},{"teal":1827,"source":457,"pc":[1892,1893,1894]},{"teal":1834,"source":452,"pc":[1895,1896]},{"teal":1835,"source":452,"pc":[1897]},{"teal":1836,"source":452,"pc":[1898]},{"teal":1837,"source":452,"pc":[1899,1900]},{"teal":1838,"source":452,"pc":[1901,1902,1903]},{"teal":1842,"source":460,"errorMessage":"account not found","pc":[1904]},{"teal":1846,"source":450,"pc":[1905,1906]},{"teal":1847,"source":450,"pc":[1907]},{"teal":1852,"source":473,"pc":[1908,1909,1910]},{"teal":1853,"source":473,"pc":[1911]},{"teal":1856,"source":473,"pc":[1912,1913,1914]},{"teal":1857,"source":473,"pc":[1915]},{"teal":1860,"source":473,"pc":[1916,1917,1918]},{"teal":1861,"source":473,"pc":[1919]},{"teal":1862,"source":473,"pc":[1920]},{"teal":1863,"source":473,"pc":[1921,1922]},{"teal":1864,"source":473,"pc":[1923]},{"teal":1867,"source":473,"errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1924]},{"teal":1870,"source":473,"pc":[1925,1926,1927]},{"teal":1871,"source":473,"pc":[1928]},{"teal":1872,"source":473,"pc":[1929]},{"teal":1885,"source":473,"pc":[1930,1931,1932]},{"teal":1892,"source":476,"pc":[1933,1934]},{"teal":1893,"source":476,"pc":[1935]},{"teal":1894,"source":476,"pc":[1936]},{"teal":1895,"source":476,"pc":[1937,1938]},{"teal":1896,"source":476,"pc":[1939]},{"teal":1897,"source":476,"pc":[1940]},{"teal":1900,"source":475,"errorMessage":"this can only be called via the validator contract","pc":[1941]},{"teal":1904,"source":479,"pc":[1942]},{"teal":1905,"source":479,"pc":[1943]},{"teal":1906,"source":479,"pc":[1944]},{"teal":1907,"source":479,"pc":[1945]},{"teal":1910,"source":479,"errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1946]},{"teal":1914,"source":480,"pc":[1947,1948]},{"teal":1915,"source":480,"pc":[1949]},{"teal":1916,"source":480,"pc":[1950]},{"teal":1919,"source":480,"errorMessage":"can only claim token rewards from validator that has them","pc":[1951]},{"teal":1927,"source":483,"pc":[1952]},{"teal":1928,"source":483,"pc":[1953,1954]},{"teal":1929,"source":483,"pc":[1955,1956]},{"teal":1933,"source":484,"pc":[1957,1958]},{"teal":1934,"source":484,"pc":[1959,1960]},{"teal":1938,"source":485,"pc":[1961,1962]},{"teal":1939,"source":485,"pc":[1963,1964]},{"teal":1943,"source":486,"pc":[1965,1966]},{"teal":1944,"source":486,"pc":[1967,1968]},{"teal":1947,"source":483,"pc":[1969]},{"teal":1948,"source":483,"pc":[1970,1971]},{"teal":1951,"source":483,"pc":[1972]},{"teal":1952,"source":473,"pc":[1973]},{"teal":1957,"source":499,"pc":[1974,1975,1976]},{"teal":1958,"source":499,"pc":[1977,1978,1979]},{"teal":1961,"source":499,"pc":[1980,1981,1982]},{"teal":1962,"source":499,"pc":[1983]},{"teal":1963,"source":499,"pc":[1984]},{"teal":1975,"source":499,"pc":[1985,1986,1987]},{"teal":1979,"source":500,"pc":[1988,1989,1990]},{"teal":1982,"source":500,"errorMessage":"can only be called by owner or manager of validator","pc":[1991]},{"teal":1986,"source":501,"pc":[1992,1993,1994,1995,1996,1997,1998,1999,2000,2001]},{"teal":1987,"source":501,"pc":[2002,2003]},{"teal":1988,"source":501,"pc":[2004]},{"teal":1989,"source":499,"pc":[2005]},{"teal":1994,"source":512,"pc":[2006,2007,2008]},{"teal":1995,"source":512,"pc":[2009]},{"teal":1996,"source":512,"pc":[2010]},{"teal":2007,"source":512,"pc":[2011,2012,2013]},{"teal":2010,"source":512,"pc":[2014,2015]},{"teal":2011,"source":512,"pc":[2016,2017]},{"teal":2018,"source":514,"pc":[2018]},{"teal":2019,"source":514,"pc":[2019]},{"teal":2020,"source":514,"pc":[2020,2021]},{"teal":2021,"source":514,"pc":[2022,2023]},{"teal":2022,"source":514,"pc":[2024,2025]},{"teal":2026,"source":515,"pc":[2026]},{"teal":2027,"source":515,"pc":[2027]},{"teal":2028,"source":515,"pc":[2028,2029]},{"teal":2032,"source":516,"pc":[2030]},{"teal":2033,"source":516,"pc":[2031]},{"teal":2034,"source":516,"pc":[2032]},{"teal":2035,"source":516,"pc":[2033,2034]},{"teal":2038,"source":514,"pc":[2035]},{"teal":2039,"source":514,"pc":[2036,2037]},{"teal":2042,"source":514,"pc":[2038]},{"teal":2043,"source":514,"pc":[2039,2040]},{"teal":2044,"source":514,"pc":[2041]},{"teal":2045,"source":514,"pc":[2042]},{"teal":2046,"source":514,"pc":[2043,2044]},{"teal":2047,"source":514,"pc":[2045,2046,2047]},{"teal":2048,"source":514,"pc":[2048,2049]},{"teal":2052,"source":523,"pc":[2050,2051]},{"teal":2053,"source":523,"pc":[2052,2053,2054]},{"teal":2054,"source":523,"pc":[2055]},{"teal":2055,"source":523,"pc":[2056,2057]},{"teal":2059,"source":524,"pc":[2058,2059]},{"teal":2060,"source":524,"pc":[2060,2061]},{"teal":2064,"source":525,"pc":[2062,2063]},{"teal":2065,"source":525,"pc":[2064,2065]},{"teal":2066,"source":525,"pc":[2066,2067]},{"teal":2067,"source":525,"pc":[2068]},{"teal":2068,"source":525,"pc":[2069]},{"teal":2069,"source":525,"pc":[2070,2071]},{"teal":2073,"source":528,"pc":[2072,2073]},{"teal":2074,"source":528,"pc":[2074]},{"teal":2075,"source":528,"pc":[2075,2076]},{"teal":2076,"source":528,"pc":[2077]},{"teal":2077,"source":528,"pc":[2078,2079]},{"teal":2078,"source":528,"pc":[2080]},{"teal":2079,"source":528,"pc":[2081]},{"teal":2080,"source":528,"pc":[2082,2083]},{"teal":2084,"source":530,"pc":[2084,2085]},{"teal":2085,"source":530,"pc":[2086,2087]},{"teal":2086,"source":530,"pc":[2088]},{"teal":2089,"source":530,"errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[2089]},{"teal":2093,"source":532,"pc":[2090,2091,2092]},{"teal":2097,"source":535,"pc":[2093,2094]},{"teal":2098,"source":535,"pc":[2095,2096]},{"teal":2099,"source":535,"pc":[2097]},{"teal":2103,"source":536,"pc":[2098,2099]},{"teal":2104,"source":536,"pc":[2100]},{"teal":2105,"source":536,"pc":[2101]},{"teal":2106,"source":536,"pc":[2102]},{"teal":2107,"source":536,"pc":[2103,2104]},{"teal":2108,"source":536,"pc":[2105]},{"teal":2109,"source":536,"pc":[2106]},{"teal":2113,"source":541,"pc":[2107,2108]},{"teal":2114,"source":541,"pc":[2109,2110,2111]},{"teal":2115,"source":541,"pc":[2112]},{"teal":2116,"source":541,"pc":[2113]},{"teal":2117,"source":541,"pc":[2114]},{"teal":2118,"source":541,"pc":[2115,2116]},{"teal":2122,"source":542,"pc":[2117,2118,2119]},{"teal":2123,"source":542,"pc":[2120,2121]},{"teal":2127,"source":543,"pc":[2122,2123]},{"teal":2128,"source":543,"pc":[2124,2125]},{"teal":2133,"source":548,"pc":[2126,2127]},{"teal":2134,"source":548,"pc":[2128,2129,2130]},{"teal":2140,"source":549,"pc":[2131]},{"teal":2141,"source":549,"pc":[2132]},{"teal":2142,"source":549,"pc":[2133]},{"teal":2143,"source":549,"pc":[2134]},{"teal":2144,"source":549,"pc":[2135,2136,2137]},{"teal":2152,"source":551,"pc":[2138]},{"teal":2153,"source":551,"pc":[2139]},{"teal":2154,"source":551,"pc":[2140,2141]},{"teal":2155,"source":551,"pc":[2142,2143]},{"teal":2156,"source":551,"pc":[2144,2145]},{"teal":2160,"source":552,"pc":[2146]},{"teal":2161,"source":552,"pc":[2147]},{"teal":2162,"source":552,"pc":[2148,2149]},{"teal":2166,"source":553,"pc":[2150]},{"teal":2167,"source":553,"pc":[2151]},{"teal":2168,"source":553,"pc":[2152]},{"teal":2169,"source":553,"pc":[2153,2154]},{"teal":2170,"source":553,"pc":[2155,2156,2157,2158,2159,2160,2161,2162,2163,2164]},{"teal":2171,"source":553,"pc":[2165,2166]},{"teal":2174,"source":551,"pc":[2167]},{"teal":2175,"source":551,"pc":[2168,2169]},{"teal":2178,"source":551,"pc":[2170]},{"teal":2179,"source":551,"pc":[2171,2172]},{"teal":2180,"source":551,"pc":[2173]},{"teal":2181,"source":551,"pc":[2174]},{"teal":2182,"source":551,"pc":[2175,2176]},{"teal":2183,"source":551,"pc":[2177,2178,2179]},{"teal":2184,"source":551,"pc":[2180]},{"teal":2185,"source":551,"pc":[2181,2182]},{"teal":2189,"source":555,"pc":[2183,2184]},{"teal":2190,"source":555,"pc":[2185,2186]},{"teal":2191,"source":555,"pc":[2187]},{"teal":2192,"source":555,"pc":[2188,2189]},{"teal":2198,"source":560,"pc":[2190]},{"teal":2199,"source":560,"pc":[2191]},{"teal":2200,"source":560,"pc":[2192]},{"teal":2201,"source":560,"pc":[2193]},{"teal":2202,"source":560,"pc":[2194,2195,2196]},{"teal":2210,"source":561,"pc":[2197]},{"teal":2211,"source":561,"pc":[2198]},{"teal":2212,"source":561,"pc":[2199,2200]},{"teal":2213,"source":561,"pc":[2201,2202]},{"teal":2214,"source":561,"pc":[2203,2204]},{"teal":2218,"source":562,"pc":[2205]},{"teal":2219,"source":562,"pc":[2206]},{"teal":2220,"source":562,"pc":[2207,2208]},{"teal":2224,"source":563,"pc":[2209]},{"teal":2225,"source":563,"pc":[2210]},{"teal":2226,"source":563,"pc":[2211]},{"teal":2227,"source":563,"pc":[2212,2213]},{"teal":2230,"source":561,"pc":[2214]},{"teal":2231,"source":561,"pc":[2215,2216]},{"teal":2234,"source":561,"pc":[2217]},{"teal":2235,"source":561,"pc":[2218,2219]},{"teal":2236,"source":561,"pc":[2220]},{"teal":2237,"source":561,"pc":[2221]},{"teal":2238,"source":561,"pc":[2222,2223]},{"teal":2239,"source":561,"pc":[2224,2225,2226]},{"teal":2240,"source":561,"pc":[2227,2228]},{"teal":2241,"source":560,"pc":[2229,2230,2231]},{"teal":2249,"source":567,"pc":[2232]},{"teal":2250,"source":567,"pc":[2233]},{"teal":2251,"source":567,"pc":[2234,2235]},{"teal":2252,"source":567,"pc":[2236,2237]},{"teal":2253,"source":567,"pc":[2238,2239]},{"teal":2257,"source":568,"pc":[2240,2241]},{"teal":2258,"source":568,"pc":[2242,2243]},{"teal":2262,"source":569,"pc":[2244]},{"teal":2263,"source":569,"pc":[2245]},{"teal":2264,"source":569,"pc":[2246]},{"teal":2265,"source":569,"pc":[2247]},{"teal":2266,"source":569,"pc":[2248]},{"teal":2267,"source":569,"pc":[2249]},{"teal":2268,"source":569,"pc":[2250]},{"teal":2269,"source":569,"pc":[2251,2252,2253]},{"teal":2270,"source":569,"pc":[2254]},{"teal":2271,"source":569,"pc":[2255]},{"teal":2272,"source":569,"pc":[2256,2257]},{"teal":2275,"source":567,"pc":[2258]},{"teal":2276,"source":567,"pc":[2259,2260]},{"teal":2279,"source":567,"pc":[2261]},{"teal":2280,"source":567,"pc":[2262,2263]},{"teal":2281,"source":567,"pc":[2264]},{"teal":2282,"source":567,"pc":[2265]},{"teal":2283,"source":567,"pc":[2266,2267]},{"teal":2284,"source":567,"pc":[2268,2269,2270]},{"teal":2285,"source":567,"pc":[2271,2272]},{"teal":2295,"source":576,"pc":[2273]},{"teal":2296,"source":576,"pc":[2274]},{"teal":2297,"source":576,"pc":[2275,2276]},{"teal":2298,"source":576,"pc":[2277,2278,2279,2280,2281,2282]},{"teal":2299,"source":576,"pc":[2283,2284]},{"teal":2303,"source":577,"pc":[2285]},{"teal":2304,"source":577,"pc":[2286]},{"teal":2305,"source":577,"pc":[2287,2288]},{"teal":2309,"source":578,"pc":[2289]},{"teal":2310,"source":578,"pc":[2290]},{"teal":2311,"source":578,"pc":[2291]},{"teal":2312,"source":578,"pc":[2292,2293]},{"teal":2315,"source":576,"pc":[2294]},{"teal":2316,"source":576,"pc":[2295,2296]},{"teal":2319,"source":576,"pc":[2297]},{"teal":2320,"source":576,"pc":[2298,2299]},{"teal":2321,"source":576,"pc":[2300]},{"teal":2322,"source":576,"pc":[2301]},{"teal":2323,"source":576,"pc":[2302,2303]},{"teal":2324,"source":576,"pc":[2304,2305,2306]},{"teal":2325,"source":576,"pc":[2307,2308]},{"teal":2329,"source":580,"pc":[2309,2310]},{"teal":2330,"source":580,"pc":[2311,2312,2313]},{"teal":2331,"source":580,"pc":[2314]},{"teal":2332,"source":580,"pc":[2315,2316]},{"teal":2336,"source":586,"pc":[2317,2318]},{"teal":2337,"source":586,"pc":[2319,2320]},{"teal":2338,"source":586,"pc":[2321]},{"teal":2339,"source":586,"pc":[2322,2323]},{"teal":2340,"source":586,"pc":[2324]},{"teal":2341,"source":586,"pc":[2325]},{"teal":2342,"source":586,"pc":[2326,2327]},{"teal":2343,"source":586,"pc":[2328,2329]},{"teal":2344,"source":586,"pc":[2330]},{"teal":2345,"source":586,"pc":[2331]},{"teal":2346,"source":586,"pc":[2332,2333]},{"teal":2350,"source":587,"pc":[2334]},{"teal":2351,"source":587,"pc":[2335,2336]},{"teal":2355,"source":588,"pc":[2337,2338,2339]},{"teal":2356,"source":588,"pc":[2340,2341]},{"teal":2361,"source":596,"pc":[2342,2343]},{"teal":2362,"source":596,"pc":[2344,2345,2346]},{"teal":2363,"source":596,"pc":[2347]},{"teal":2364,"source":596,"pc":[2348,2349]},{"teal":2365,"source":596,"pc":[2350]},{"teal":2366,"source":596,"pc":[2351,2352,2353]},{"teal":2371,"source":597,"pc":[2354]},{"teal":2372,"source":597,"pc":[2355,2356]},{"teal":2377,"source":603,"pc":[2357]},{"teal":2378,"source":603,"pc":[2358,2359]},{"teal":2382,"source":604,"pc":[2360]},{"teal":2383,"source":604,"pc":[2361,2362]},{"teal":2387,"source":605,"pc":[2363]},{"teal":2388,"source":605,"pc":[2364,2365]},{"teal":2392,"source":606,"pc":[2366]},{"teal":2393,"source":606,"pc":[2367,2368]},{"teal":2398,"source":607,"pc":[2369,2370]},{"teal":2399,"source":607,"pc":[2371,2372,2373]},{"teal":2405,"source":609,"pc":[2374,2375]},{"teal":2406,"source":609,"pc":[2376,2377]},{"teal":2407,"source":609,"pc":[2378,2379,2380]},{"teal":2408,"source":609,"pc":[2381]},{"teal":2409,"source":609,"pc":[2382,2383]},{"teal":2410,"source":609,"pc":[2384]},{"teal":2411,"source":609,"pc":[2385,2386]},{"teal":2412,"source":609,"pc":[2387]},{"teal":2413,"source":608,"pc":[2388,2389]},{"teal":2418,"source":613,"pc":[2390,2391]},{"teal":2419,"source":613,"pc":[2392,2393]},{"teal":2420,"source":613,"pc":[2394,2395,2396]},{"teal":2421,"source":613,"pc":[2397]},{"teal":2422,"source":613,"pc":[2398]},{"teal":2423,"source":613,"pc":[2399,2400,2401]},{"teal":2428,"source":619,"pc":[2402,2403]},{"teal":2429,"source":619,"pc":[2404]},{"teal":2430,"source":619,"pc":[2405]},{"teal":2431,"source":619,"pc":[2406]},{"teal":2432,"source":619,"pc":[2407]},{"teal":2433,"source":619,"pc":[2408]},{"teal":2434,"source":619,"pc":[2409,2410]},{"teal":2435,"source":619,"pc":[2411]},{"teal":2436,"source":619,"pc":[2412]},{"teal":2437,"source":619,"pc":[2413,2414]},{"teal":2438,"source":619,"pc":[2415]},{"teal":2439,"source":619,"pc":[2416]},{"teal":2440,"source":619,"pc":[2417,2418]},{"teal":2444,"source":622,"pc":[2419,2420]},{"teal":2445,"source":622,"pc":[2421,2422,2423]},{"teal":2446,"source":622,"pc":[2424]},{"teal":2447,"source":622,"pc":[2425,2426]},{"teal":2448,"source":622,"pc":[2427]},{"teal":2449,"source":622,"pc":[2428]},{"teal":2450,"source":622,"pc":[2429,2430]},{"teal":2451,"source":622,"pc":[2431]},{"teal":2452,"source":622,"pc":[2432]},{"teal":2453,"source":622,"pc":[2433]},{"teal":2454,"source":622,"pc":[2434]},{"teal":2455,"source":622,"pc":[2435]},{"teal":2458,"source":622,"errorMessage":"wideRatio failed","pc":[2436]},{"teal":2459,"source":622,"pc":[2437,2438]},{"teal":2467,"source":625,"pc":[2439,2440]},{"teal":2468,"source":625,"pc":[2441]},{"teal":2469,"source":625,"pc":[2442]},{"teal":2470,"source":625,"pc":[2443,2444,2445]},{"teal":2476,"source":630,"pc":[2446,2447]},{"teal":2477,"source":630,"pc":[2448,2449]},{"teal":2478,"source":630,"pc":[2450]},{"teal":2479,"source":630,"pc":[2451,2452,2453]},{"teal":2484,"source":631,"pc":[2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477]},{"teal":2485,"source":631,"pc":[2478]},{"teal":2489,"source":632,"pc":[2479]},{"teal":2497,"source":636,"pc":[2480,2481]},{"teal":2498,"source":636,"pc":[2482,2483,2484]},{"teal":2506,"source":643,"pc":[2485,2486]},{"teal":2507,"source":643,"pc":[2487,2488]},{"teal":2508,"source":643,"pc":[2489,2490,2491]},{"teal":2509,"source":643,"pc":[2492]},{"teal":2510,"source":642,"pc":[2493]},{"teal":2511,"source":642,"pc":[2494]},{"teal":2512,"source":644,"pc":[2495,2496]},{"teal":2513,"source":642,"pc":[2497]},{"teal":2514,"source":642,"pc":[2498]},{"teal":2515,"source":642,"pc":[2499]},{"teal":2516,"source":642,"pc":[2500]},{"teal":2517,"source":642,"pc":[2501]},{"teal":2520,"source":642,"errorMessage":"wideRatio failed","pc":[2502]},{"teal":2521,"source":642,"pc":[2503,2504]},{"teal":2525,"source":647,"pc":[2505,2506]},{"teal":2526,"source":647,"pc":[2507,2508]},{"teal":2527,"source":647,"pc":[2509]},{"teal":2528,"source":647,"pc":[2510]},{"teal":2529,"source":647,"pc":[2511,2512]},{"teal":2530,"source":647,"pc":[2513,2514,2515]},{"teal":2531,"source":647,"pc":[2516]},{"teal":2532,"source":647,"pc":[2517]},{"teal":2533,"source":647,"pc":[2518]},{"teal":2534,"source":647,"pc":[2519]},{"teal":2535,"source":647,"pc":[2520]},{"teal":2536,"source":647,"pc":[2521]},{"teal":2539,"source":647,"errorMessage":"wideRatio failed","pc":[2522]},{"teal":2540,"source":647,"pc":[2523,2524]},{"teal":2545,"source":649,"pc":[2525,2526]},{"teal":2546,"source":649,"pc":[2527,2528]},{"teal":2547,"source":649,"pc":[2529,2530]},{"teal":2548,"source":649,"pc":[2531]},{"teal":2549,"source":649,"pc":[2532]},{"teal":2550,"source":649,"pc":[2533,2534,2535]},{"teal":2555,"source":650,"pc":[2536,2537]},{"teal":2556,"source":650,"pc":[2538,2539]},{"teal":2557,"source":650,"pc":[2540]},{"teal":2558,"source":650,"pc":[2541,2542]},{"teal":2563,"source":653,"pc":[2543,2544]},{"teal":2564,"source":653,"pc":[2545,2546]},{"teal":2565,"source":653,"pc":[2547]},{"teal":2566,"source":653,"pc":[2548,2549]},{"teal":2574,"source":654,"pc":[2550]},{"teal":2575,"source":654,"pc":[2551]},{"teal":2576,"source":654,"pc":[2552,2553]},{"teal":2580,"source":655,"pc":[2554,2555]},{"teal":2581,"source":655,"pc":[2556,2557]},{"teal":2585,"source":656,"pc":[2558,2559]},{"teal":2586,"source":656,"pc":[2560]},{"teal":2587,"source":656,"pc":[2561]},{"teal":2588,"source":656,"pc":[2562,2563]},{"teal":2589,"source":656,"pc":[2564,2565]},{"teal":2593,"source":657,"pc":[2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601]},{"teal":2594,"source":657,"pc":[2602,2603]},{"teal":2597,"source":654,"pc":[2604]},{"teal":2598,"source":654,"pc":[2605,2606]},{"teal":2601,"source":654,"pc":[2607]},{"teal":2605,"source":660,"pc":[2608,2609]},{"teal":2606,"source":660,"pc":[2610,2611]},{"teal":2607,"source":636,"pc":[2612,2613,2614]},{"teal":2612,"source":661,"pc":[2615,2616]},{"teal":2613,"source":661,"pc":[2617,2618,2619]},{"teal":2614,"source":661,"pc":[2620]},{"teal":2615,"source":661,"pc":[2621]},{"teal":2616,"source":661,"pc":[2622]},{"teal":2617,"source":661,"pc":[2623,2624,2625]},{"teal":2625,"source":665,"pc":[2626,2627]},{"teal":2626,"source":665,"pc":[2628,2629]},{"teal":2627,"source":665,"pc":[2630,2631,2632]},{"teal":2628,"source":665,"pc":[2633]},{"teal":2629,"source":664,"pc":[2634]},{"teal":2630,"source":664,"pc":[2635]},{"teal":2631,"source":666,"pc":[2636,2637]},{"teal":2632,"source":664,"pc":[2638]},{"teal":2633,"source":664,"pc":[2639]},{"teal":2634,"source":664,"pc":[2640]},{"teal":2635,"source":664,"pc":[2641]},{"teal":2636,"source":664,"pc":[2642]},{"teal":2639,"source":664,"errorMessage":"wideRatio failed","pc":[2643]},{"teal":2640,"source":664,"pc":[2644,2645]},{"teal":2644,"source":670,"pc":[2646,2647]},{"teal":2645,"source":670,"pc":[2648,2649]},{"teal":2646,"source":670,"pc":[2650]},{"teal":2647,"source":670,"pc":[2651,2652]},{"teal":2652,"source":677,"pc":[2653,2654]},{"teal":2653,"source":677,"pc":[2655]},{"teal":2654,"source":677,"pc":[2656]},{"teal":2655,"source":677,"pc":[2657,2658,2659]},{"teal":2660,"source":680,"pc":[2660]},{"teal":2661,"source":680,"pc":[2661,2662]},{"teal":2667,"source":682,"pc":[2663,2664]},{"teal":2668,"source":682,"pc":[2665,2666,2667]},{"teal":2669,"source":682,"pc":[2668,2669]},{"teal":2670,"source":682,"pc":[2670,2671,2672]},{"teal":2671,"source":682,"pc":[2673]},{"teal":2672,"source":682,"pc":[2674]},{"teal":2673,"source":682,"pc":[2675,2676,2677]},{"teal":2674,"source":683,"pc":[2678,2679]},{"teal":2675,"source":683,"pc":[2680,2681,2682]},{"teal":2676,"source":683,"pc":[2683,2684]},{"teal":2677,"source":683,"pc":[2685]},{"teal":2678,"source":683,"pc":[2686,2687]},{"teal":2679,"source":683,"pc":[2688,2689,2690]},{"teal":2680,"source":683,"pc":[2691,2692]},{"teal":2681,"source":683,"pc":[2693]},{"teal":2682,"source":683,"pc":[2694]},{"teal":2683,"source":683,"pc":[2695,2696]},{"teal":2684,"source":683,"pc":[2697]},{"teal":2685,"source":682,"pc":[2698]},{"teal":2688,"source":681,"pc":[2699,2700,2701]},{"teal":2693,"source":685,"pc":[2702,2703]},{"teal":2694,"source":685,"pc":[2704,2705]},{"teal":2695,"source":685,"pc":[2706]},{"teal":2696,"source":685,"pc":[2707,2708,2709]},{"teal":2697,"source":685,"pc":[2710,2711]},{"teal":2698,"source":685,"pc":[2712,2713,2714]},{"teal":2701,"source":685,"pc":[2715,2716]},{"teal":2704,"source":685,"pc":[2717,2718]},{"teal":2712,"source":686,"pc":[2719]},{"teal":2713,"source":686,"pc":[2720]},{"teal":2714,"source":686,"pc":[2721,2722]},{"teal":2718,"source":687,"pc":[2723,2724]},{"teal":2719,"source":687,"pc":[2725,2726]},{"teal":2723,"source":688,"pc":[2727,2728]},{"teal":2724,"source":688,"pc":[2729,2730,2731]},{"teal":2725,"source":688,"pc":[2732,2733]},{"teal":2729,"source":689,"pc":[2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,2787,2788]},{"teal":2730,"source":689,"pc":[2789,2790]},{"teal":2733,"source":686,"pc":[2791]},{"teal":2734,"source":686,"pc":[2792,2793]},{"teal":2737,"source":686,"pc":[2794]},{"teal":2743,"source":692,"pc":[2795,2796]},{"teal":2744,"source":692,"pc":[2797,2798]},{"teal":2745,"source":692,"pc":[2799]},{"teal":2746,"source":692,"pc":[2800]},{"teal":2747,"source":692,"pc":[2801]},{"teal":2748,"source":692,"pc":[2802,2803,2804]},{"teal":2757,"source":693,"pc":[2805]},{"teal":2758,"source":693,"pc":[2806]},{"teal":2759,"source":693,"pc":[2807,2808]},{"teal":2763,"source":694,"pc":[2809,2810]},{"teal":2764,"source":694,"pc":[2811,2812]},{"teal":2765,"source":694,"pc":[2813]},{"teal":2766,"source":694,"pc":[2814,2815]},{"teal":2770,"source":695,"pc":[2816,2817]},{"teal":2771,"source":695,"pc":[2818,2819,2820]},{"teal":2772,"source":695,"pc":[2821,2822]},{"teal":2776,"source":696,"pc":[2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840]},{"teal":2777,"source":696,"pc":[2841,2842]},{"teal":2780,"source":693,"pc":[2843]},{"teal":2781,"source":693,"pc":[2844,2845]},{"teal":2784,"source":693,"pc":[2846]},{"teal":2793,"source":708,"pc":[2847]},{"teal":2794,"source":708,"pc":[2848,2849]},{"teal":2799,"source":732,"pc":[2850,2851]},{"teal":2800,"source":732,"pc":[2852]},{"teal":2801,"source":732,"pc":[2853]},{"teal":2802,"source":732,"pc":[2854]},{"teal":2803,"source":732,"pc":[2855,2856,2857]},{"teal":2804,"source":732,"pc":[2858,2859]},{"teal":2805,"source":732,"pc":[2860]},{"teal":2806,"source":732,"pc":[2861]},{"teal":2807,"source":732,"pc":[2862]},{"teal":2810,"source":732,"pc":[2863,2864,2865]},{"teal":2815,"source":733,"pc":[2866]},{"teal":2816,"source":733,"pc":[2867,2868]},{"teal":2820,"source":734,"pc":[2869,2870]},{"teal":2821,"source":734,"pc":[2871,2872]},{"teal":2825,"source":736,"pc":[2873,2874]},{"teal":2826,"source":736,"pc":[2875,2876]},{"teal":2830,"source":737,"pc":[2877]},{"teal":2831,"source":737,"pc":[2878,2879]},{"teal":2836,"source":737,"pc":[2880,2881]},{"teal":2837,"source":737,"pc":[2882,2883]},{"teal":2838,"source":737,"pc":[2884]},{"teal":2839,"source":737,"pc":[2885,2886,2887]},{"teal":2844,"source":738,"pc":[2888,2889]},{"teal":2845,"source":738,"pc":[2890,2891]},{"teal":2846,"source":738,"pc":[2892]},{"teal":2847,"source":738,"pc":[2893,2894,2895]},{"teal":2852,"source":739,"pc":[2896]},{"teal":2853,"source":739,"pc":[2897]},{"teal":2854,"source":739,"pc":[2898,2899]},{"teal":2855,"source":739,"pc":[2900]},{"teal":2856,"source":739,"pc":[2901,2902]},{"teal":2857,"source":739,"pc":[2903,2904]},{"teal":2858,"source":739,"pc":[2905]},{"teal":2859,"source":739,"pc":[2906,2907]},{"teal":2860,"source":739,"pc":[2908,2909]},{"teal":2861,"source":739,"pc":[2910,2911]},{"teal":2862,"source":739,"pc":[2912,2913]},{"teal":2863,"source":739,"pc":[2914]},{"teal":2868,"source":741,"pc":[2915,2916]},{"teal":2869,"source":741,"pc":[2917]},{"teal":2870,"source":741,"pc":[2918]},{"teal":2871,"source":741,"pc":[2919]},{"teal":2872,"source":741,"pc":[2920]},{"teal":2873,"source":741,"pc":[2921,2922]},{"teal":2874,"source":741,"pc":[2923]},{"teal":2875,"source":741,"pc":[2924,2925]},{"teal":2880,"source":742,"pc":[2926,2927]},{"teal":2881,"source":742,"pc":[2928,2929,2930]},{"teal":2882,"source":742,"pc":[2931,2932]},{"teal":2883,"source":742,"pc":[2933]},{"teal":2884,"source":742,"pc":[2934,2935,2936]},{"teal":2890,"source":743,"pc":[2937,2938]},{"teal":2891,"source":743,"pc":[2939,2940,2941]},{"teal":2892,"source":743,"pc":[2942]},{"teal":2893,"source":743,"pc":[2943,2944]},{"teal":2894,"source":743,"pc":[2945]},{"teal":2895,"source":743,"pc":[2946,2947,2948]},{"teal":2900,"source":746,"pc":[2949,2950]},{"teal":2901,"source":746,"pc":[2951,2952]},{"teal":2902,"source":746,"pc":[2953,2954,2955]},{"teal":2903,"source":746,"pc":[2956]},{"teal":2904,"source":746,"pc":[2957]},{"teal":2905,"source":746,"pc":[2958,2959]},{"teal":2906,"source":743,"pc":[2960,2961,2962]},{"teal":2911,"source":750,"pc":[2963,2964]},{"teal":2912,"source":750,"pc":[2965,2966]},{"teal":2913,"source":750,"pc":[2967,2968,2969]},{"teal":2914,"source":750,"pc":[2970]},{"teal":2915,"source":750,"pc":[2971]},{"teal":2916,"source":750,"pc":[2972,2973]},{"teal":2921,"source":754,"pc":[2974,2975]},{"teal":2922,"source":754,"pc":[2976,2977]},{"teal":2923,"source":754,"pc":[2978]},{"teal":2924,"source":754,"pc":[2979,2980,2981]},{"teal":2929,"source":755,"pc":[2982,2983]},{"teal":2930,"source":755,"pc":[2984,2985]},{"teal":2931,"source":755,"pc":[2986,2987,2988]},{"teal":2932,"source":755,"pc":[2989]},{"teal":2933,"source":755,"pc":[2990]},{"teal":2934,"source":755,"pc":[2991,2992]},{"teal":2938,"source":756,"pc":[2993,2994]},{"teal":2939,"source":756,"pc":[2995,2996]},{"teal":2940,"source":756,"pc":[2997]},{"teal":2941,"source":756,"pc":[2998,2999]},{"teal":2942,"source":756,"pc":[3000]},{"teal":2943,"source":756,"pc":[3001,3002]},{"teal":2948,"source":758,"pc":[3003,3004]},{"teal":2949,"source":758,"pc":[3005]},{"teal":2950,"source":758,"pc":[3006]},{"teal":2951,"source":758,"pc":[3007,3008,3009]},{"teal":2959,"source":761,"pc":[3010,3011]},{"teal":2960,"source":761,"pc":[3012,3013,3014]},{"teal":2961,"source":761,"pc":[3015]},{"teal":2962,"source":761,"pc":[3016,3017]},{"teal":2963,"source":760,"pc":[3018]},{"teal":2964,"source":761,"pc":[3019,3020]},{"teal":2965,"source":760,"pc":[3021,3022]},{"teal":2966,"source":760,"pc":[3023,3024]},{"teal":2967,"source":760,"pc":[3025]},{"teal":2968,"source":760,"pc":[3026,3027]},{"teal":2969,"source":760,"pc":[3028]},{"teal":2970,"source":760,"pc":[3029,3030]},{"teal":2971,"source":760,"pc":[3031]},{"teal":2972,"source":760,"pc":[3032]},{"teal":2973,"source":762,"pc":[3033,3034]},{"teal":2974,"source":762,"pc":[3035]},{"teal":2975,"source":762,"pc":[3036,3037]},{"teal":2976,"source":760,"pc":[3038]},{"teal":2977,"source":760,"pc":[3039]},{"teal":2978,"source":760,"pc":[3040]},{"teal":2979,"source":760,"pc":[3041]},{"teal":2980,"source":760,"pc":[3042]},{"teal":2981,"source":760,"pc":[3043]},{"teal":2984,"source":760,"errorMessage":"wideRatio failed","pc":[3044]},{"teal":2985,"source":760,"pc":[3045,3046]},{"teal":2989,"source":767,"pc":[3047,3048]},{"teal":2990,"source":767,"pc":[3049,3050]},{"teal":2991,"source":767,"pc":[3051]},{"teal":2992,"source":767,"pc":[3052,3053]},{"teal":2996,"source":768,"pc":[3054,3055]},{"teal":2997,"source":768,"pc":[3056,3057]},{"teal":2998,"source":768,"pc":[3058,3059]},{"teal":2999,"source":768,"pc":[3060,3061,3062]},{"teal":3000,"source":768,"pc":[3063]},{"teal":3001,"source":768,"pc":[3064,3065]},{"teal":3002,"source":768,"pc":[3066]},{"teal":3003,"source":768,"pc":[3067]},{"teal":3004,"source":768,"pc":[3068]},{"teal":3005,"source":768,"pc":[3069,3070]},{"teal":3009,"source":769,"pc":[3071,3072]},{"teal":3010,"source":769,"pc":[3073,3074]},{"teal":3011,"source":769,"pc":[3075]},{"teal":3012,"source":769,"pc":[3076,3077]},{"teal":3020,"source":773,"pc":[3078,3079]},{"teal":3021,"source":773,"pc":[3080,3081,3082]},{"teal":3022,"source":773,"pc":[3083]},{"teal":3023,"source":773,"pc":[3084,3085]},{"teal":3024,"source":772,"pc":[3086]},{"teal":3025,"source":773,"pc":[3087,3088]},{"teal":3026,"source":772,"pc":[3089,3090]},{"teal":3027,"source":772,"pc":[3091,3092]},{"teal":3028,"source":772,"pc":[3093]},{"teal":3029,"source":772,"pc":[3094,3095]},{"teal":3030,"source":772,"pc":[3096]},{"teal":3031,"source":772,"pc":[3097,3098]},{"teal":3032,"source":772,"pc":[3099]},{"teal":3033,"source":772,"pc":[3100]},{"teal":3034,"source":774,"pc":[3101,3102]},{"teal":3035,"source":774,"pc":[3103]},{"teal":3036,"source":774,"pc":[3104,3105]},{"teal":3037,"source":772,"pc":[3106]},{"teal":3038,"source":772,"pc":[3107]},{"teal":3039,"source":772,"pc":[3108]},{"teal":3040,"source":772,"pc":[3109]},{"teal":3041,"source":772,"pc":[3110]},{"teal":3042,"source":772,"pc":[3111]},{"teal":3045,"source":772,"errorMessage":"wideRatio failed","pc":[3112]},{"teal":3046,"source":772,"pc":[3113,3114]},{"teal":3050,"source":778,"pc":[3115,3116]},{"teal":3051,"source":778,"pc":[3117,3118]},{"teal":3052,"source":778,"pc":[3119]},{"teal":3053,"source":778,"pc":[3120,3121]},{"teal":3057,"source":781,"pc":[3122,3123]},{"teal":3058,"source":781,"pc":[3124,3125]},{"teal":3059,"source":781,"pc":[3126,3127]},{"teal":3060,"source":781,"pc":[3128,3129,3130]},{"teal":3061,"source":781,"pc":[3131]},{"teal":3062,"source":781,"pc":[3132,3133]},{"teal":3063,"source":781,"pc":[3134]},{"teal":3064,"source":781,"pc":[3135]},{"teal":3065,"source":781,"pc":[3136]},{"teal":3066,"source":781,"pc":[3137,3138]},{"teal":3070,"source":782,"pc":[3139,3140]},{"teal":3071,"source":782,"pc":[3141,3142]},{"teal":3072,"source":782,"pc":[3143,3144]},{"teal":3073,"source":782,"pc":[3145,3146,3147]},{"teal":3074,"source":782,"pc":[3148]},{"teal":3075,"source":782,"pc":[3149,3150]},{"teal":3076,"source":782,"pc":[3151]},{"teal":3077,"source":782,"pc":[3152]},{"teal":3078,"source":782,"pc":[3153]},{"teal":3079,"source":782,"pc":[3154,3155]},{"teal":3083,"source":783,"pc":[3156,3157]},{"teal":3084,"source":783,"pc":[3158,3159]},{"teal":3085,"source":783,"pc":[3160]},{"teal":3086,"source":783,"pc":[3161,3162]},{"teal":3090,"source":785,"pc":[3163,3164]},{"teal":3091,"source":785,"pc":[3165]},{"teal":3092,"source":785,"pc":[3166]},{"teal":3093,"source":785,"pc":[3167,3168]},{"teal":3094,"source":785,"pc":[3169]},{"teal":3095,"source":785,"pc":[3170,3171]},{"teal":3096,"source":785,"pc":[3172]},{"teal":3107,"source":737,"pc":[3173,3174]},{"teal":3108,"source":737,"pc":[3175]},{"teal":3109,"source":737,"pc":[3176]},{"teal":3110,"source":737,"pc":[3177,3178]},{"teal":3111,"source":737,"pc":[3179,3180,3181]},{"teal":3116,"source":793,"pc":[3182,3183]},{"teal":3117,"source":793,"pc":[3184]},{"teal":3118,"source":793,"pc":[3185,3186]},{"teal":3119,"source":793,"pc":[3187]},{"teal":3120,"source":793,"pc":[3188,3189]},{"teal":3125,"source":797,"pc":[3190,3191]},{"teal":3126,"source":797,"pc":[3192]},{"teal":3127,"source":797,"pc":[3193]},{"teal":3128,"source":797,"pc":[3194,3195,3196]},{"teal":3133,"source":799,"pc":[3197]},{"teal":3134,"source":799,"pc":[3198,3199]},{"teal":3139,"source":799,"pc":[3200,3201]},{"teal":3140,"source":799,"pc":[3202,3203]},{"teal":3141,"source":799,"pc":[3204]},{"teal":3142,"source":799,"pc":[3205,3206,3207]},{"teal":3147,"source":800,"pc":[3208,3209]},{"teal":3148,"source":800,"pc":[3210,3211]},{"teal":3149,"source":800,"pc":[3212]},{"teal":3150,"source":800,"pc":[3213,3214,3215]},{"teal":3155,"source":801,"pc":[3216]},{"teal":3156,"source":801,"pc":[3217]},{"teal":3157,"source":801,"pc":[3218,3219]},{"teal":3158,"source":801,"pc":[3220]},{"teal":3159,"source":801,"pc":[3221,3222]},{"teal":3160,"source":801,"pc":[3223,3224]},{"teal":3161,"source":801,"pc":[3225]},{"teal":3162,"source":801,"pc":[3226,3227]},{"teal":3163,"source":801,"pc":[3228,3229]},{"teal":3164,"source":801,"pc":[3230,3231]},{"teal":3165,"source":801,"pc":[3232,3233]},{"teal":3166,"source":801,"pc":[3234]},{"teal":3171,"source":803,"pc":[3235,3236]},{"teal":3172,"source":803,"pc":[3237]},{"teal":3173,"source":803,"pc":[3238]},{"teal":3174,"source":803,"pc":[3239]},{"teal":3175,"source":803,"pc":[3240]},{"teal":3176,"source":803,"pc":[3241,3242]},{"teal":3177,"source":803,"pc":[3243]},{"teal":3178,"source":803,"pc":[3244,3245]},{"teal":3183,"source":804,"pc":[3246,3247]},{"teal":3184,"source":804,"pc":[3248,3249,3250]},{"teal":3185,"source":804,"pc":[3251,3252]},{"teal":3186,"source":804,"pc":[3253]},{"teal":3187,"source":804,"pc":[3254]},{"teal":3188,"source":804,"pc":[3255,3256,3257]},{"teal":3189,"source":804,"pc":[3258,3259]},{"teal":3190,"source":804,"pc":[3260,3261,3262]},{"teal":3191,"source":804,"pc":[3263]},{"teal":3192,"source":804,"pc":[3264,3265]},{"teal":3193,"source":804,"pc":[3266]},{"teal":3194,"source":804,"pc":[3267]},{"teal":3197,"source":804,"pc":[3268,3269,3270]},{"teal":3202,"source":805,"pc":[3271,3272]},{"teal":3203,"source":805,"pc":[3273,3274]},{"teal":3204,"source":805,"pc":[3275,3276,3277]},{"teal":3205,"source":805,"pc":[3278]},{"teal":3206,"source":805,"pc":[3279]},{"teal":3207,"source":805,"pc":[3280,3281]},{"teal":3212,"source":807,"pc":[3282,3283]},{"teal":3213,"source":807,"pc":[3284,3285]},{"teal":3214,"source":807,"pc":[3286]},{"teal":3215,"source":807,"pc":[3287,3288,3289]},{"teal":3221,"source":812,"pc":[3290,3291]},{"teal":3222,"source":812,"pc":[3292]},{"teal":3223,"source":812,"pc":[3293]},{"teal":3224,"source":812,"pc":[3294,3295,3296]},{"teal":3232,"source":814,"pc":[3297,3298]},{"teal":3233,"source":814,"pc":[3299,3300,3301]},{"teal":3234,"source":814,"pc":[3302]},{"teal":3235,"source":814,"pc":[3303,3304]},{"teal":3236,"source":813,"pc":[3305]},{"teal":3237,"source":813,"pc":[3306]},{"teal":3238,"source":815,"pc":[3307,3308]},{"teal":3239,"source":813,"pc":[3309]},{"teal":3240,"source":813,"pc":[3310]},{"teal":3241,"source":813,"pc":[3311]},{"teal":3242,"source":813,"pc":[3312]},{"teal":3243,"source":813,"pc":[3313]},{"teal":3246,"source":813,"errorMessage":"wideRatio failed","pc":[3314]},{"teal":3247,"source":813,"pc":[3315,3316]},{"teal":3251,"source":818,"pc":[3317,3318]},{"teal":3252,"source":818,"pc":[3319,3320]},{"teal":3253,"source":818,"pc":[3321,3322]},{"teal":3254,"source":818,"pc":[3323,3324,3325]},{"teal":3255,"source":818,"pc":[3326]},{"teal":3256,"source":818,"pc":[3327,3328]},{"teal":3257,"source":818,"pc":[3329]},{"teal":3258,"source":818,"pc":[3330]},{"teal":3259,"source":818,"pc":[3331]},{"teal":3260,"source":818,"pc":[3332,3333]},{"teal":3264,"source":819,"pc":[3334,3335]},{"teal":3265,"source":819,"pc":[3336,3337]},{"teal":3266,"source":819,"pc":[3338]},{"teal":3267,"source":819,"pc":[3339,3340]},{"teal":3273,"source":821,"pc":[3341,3342]},{"teal":3274,"source":821,"pc":[3343]},{"teal":3275,"source":821,"pc":[3344]},{"teal":3276,"source":821,"pc":[3345,3346,3347]},{"teal":3284,"source":823,"pc":[3348,3349]},{"teal":3285,"source":823,"pc":[3350,3351,3352]},{"teal":3286,"source":823,"pc":[3353]},{"teal":3287,"source":823,"pc":[3354,3355]},{"teal":3288,"source":822,"pc":[3356]},{"teal":3289,"source":822,"pc":[3357]},{"teal":3290,"source":824,"pc":[3358,3359]},{"teal":3291,"source":822,"pc":[3360]},{"teal":3292,"source":822,"pc":[3361]},{"teal":3293,"source":822,"pc":[3362]},{"teal":3294,"source":822,"pc":[3363]},{"teal":3295,"source":822,"pc":[3364]},{"teal":3298,"source":822,"errorMessage":"wideRatio failed","pc":[3365]},{"teal":3299,"source":822,"pc":[3366,3367]},{"teal":3303,"source":828,"pc":[3368,3369]},{"teal":3304,"source":828,"pc":[3370,3371]},{"teal":3305,"source":828,"pc":[3372,3373]},{"teal":3306,"source":828,"pc":[3374,3375,3376]},{"teal":3307,"source":828,"pc":[3377]},{"teal":3308,"source":828,"pc":[3378,3379]},{"teal":3309,"source":828,"pc":[3380]},{"teal":3310,"source":828,"pc":[3381]},{"teal":3311,"source":828,"pc":[3382]},{"teal":3312,"source":828,"pc":[3383,3384]},{"teal":3316,"source":829,"pc":[3385,3386]},{"teal":3317,"source":829,"pc":[3387,3388]},{"teal":3318,"source":829,"pc":[3389,3390]},{"teal":3319,"source":829,"pc":[3391,3392,3393]},{"teal":3320,"source":829,"pc":[3394]},{"teal":3321,"source":829,"pc":[3395,3396]},{"teal":3322,"source":829,"pc":[3397]},{"teal":3323,"source":829,"pc":[3398]},{"teal":3324,"source":829,"pc":[3399]},{"teal":3325,"source":829,"pc":[3400,3401]},{"teal":3329,"source":830,"pc":[3402,3403]},{"teal":3330,"source":830,"pc":[3404,3405]},{"teal":3331,"source":830,"pc":[3406]},{"teal":3332,"source":830,"pc":[3407,3408]},{"teal":3337,"source":834,"pc":[3409,3410]},{"teal":3338,"source":834,"pc":[3411]},{"teal":3339,"source":834,"pc":[3412]},{"teal":3340,"source":834,"pc":[3413,3414]},{"teal":3341,"source":834,"pc":[3415]},{"teal":3342,"source":834,"pc":[3416,3417]},{"teal":3343,"source":834,"pc":[3418]},{"teal":3352,"source":799,"pc":[3419,3420]},{"teal":3353,"source":799,"pc":[3421]},{"teal":3354,"source":799,"pc":[3422]},{"teal":3355,"source":799,"pc":[3423,3424]},{"teal":3356,"source":799,"pc":[3425,3426,3427]},{"teal":3365,"source":844,"pc":[3428,3429]},{"teal":3366,"source":844,"pc":[3430]},{"teal":3367,"source":844,"pc":[3431,3432]},{"teal":3368,"source":844,"pc":[3433]},{"teal":3369,"source":844,"pc":[3434]},{"teal":3370,"source":844,"pc":[3435,3436]},{"teal":3371,"source":844,"pc":[3437]},{"teal":3372,"source":844,"pc":[3438,3439]},{"teal":3376,"source":845,"pc":[3440,3441]},{"teal":3377,"source":845,"pc":[3442]},{"teal":3378,"source":845,"pc":[3443,3444]},{"teal":3379,"source":845,"pc":[3445]},{"teal":3380,"source":845,"pc":[3446,3447]},{"teal":3381,"source":845,"pc":[3448]},{"teal":3382,"source":845,"pc":[3449]},{"teal":3387,"source":846,"pc":[3450,3451]},{"teal":3388,"source":846,"pc":[3452]},{"teal":3389,"source":847,"pc":[3453]},{"teal":3390,"source":847,"pc":[3454,3455]},{"teal":3391,"source":847,"pc":[3456]},{"teal":3392,"source":847,"pc":[3457,3458]},{"teal":3393,"source":847,"pc":[3459]},{"teal":3394,"source":847,"pc":[3460]},{"teal":3395,"source":847,"pc":[3461]},{"teal":3396,"source":847,"pc":[3462]},{"teal":3397,"source":847,"pc":[3463]},{"teal":3398,"source":847,"pc":[3464,3465]},{"teal":3399,"source":847,"pc":[3466]},{"teal":3402,"source":847,"errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3467]},{"teal":3403,"source":847,"pc":[3468,3469]},{"teal":3404,"source":847,"pc":[3470]},{"teal":3405,"source":847,"pc":[3471]},{"teal":3406,"source":847,"pc":[3472]},{"teal":3407,"source":847,"pc":[3473]},{"teal":3408,"source":847,"pc":[3474,3475]},{"teal":3409,"source":847,"pc":[3476]},{"teal":3410,"source":847,"pc":[3477]},{"teal":3411,"source":847,"pc":[3478]},{"teal":3412,"source":846,"pc":[3479]},{"teal":3416,"source":848,"pc":[3480,3481]},{"teal":3417,"source":848,"pc":[3482]},{"teal":3418,"source":848,"pc":[3483]},{"teal":3419,"source":848,"pc":[3484,3485]},{"teal":3420,"source":848,"pc":[3486]},{"teal":3421,"source":848,"pc":[3487]},{"teal":3434,"source":854,"pc":[3488]},{"teal":3435,"source":854,"pc":[3489]},{"teal":3436,"source":854,"pc":[3490,3491]},{"teal":3437,"source":854,"pc":[3492,3493,3494,3495,3496,3497]},{"teal":3438,"source":854,"pc":[3498,3499]},{"teal":3442,"source":855,"pc":[3500]},{"teal":3443,"source":855,"pc":[3501]},{"teal":3444,"source":855,"pc":[3502,3503]},{"teal":3454,"source":857,"pc":[3504]},{"teal":3455,"source":857,"pc":[3505]},{"teal":3456,"source":857,"pc":[3506]},{"teal":3457,"source":857,"pc":[3507]},{"teal":3458,"source":857,"pc":[3508]},{"teal":3459,"source":857,"pc":[3509]},{"teal":3460,"source":857,"pc":[3510]},{"teal":3461,"source":857,"pc":[3511,3512,3513]},{"teal":3462,"source":857,"pc":[3514]},{"teal":3463,"source":857,"pc":[3515]},{"teal":3464,"source":857,"pc":[3516,3517]},{"teal":3465,"source":858,"pc":[3518,3519]},{"teal":3466,"source":858,"pc":[3520]},{"teal":3467,"source":858,"pc":[3521,3522]},{"teal":3468,"source":859,"pc":[3523,3524]},{"teal":3469,"source":859,"pc":[3525]},{"teal":3470,"source":859,"pc":[3526,3527]},{"teal":3471,"source":860,"pc":[3528,3529]},{"teal":3472,"source":860,"pc":[3530]},{"teal":3473,"source":860,"pc":[3531,3532]},{"teal":3474,"source":861,"pc":[3533,3534]},{"teal":3475,"source":861,"pc":[3535]},{"teal":3476,"source":861,"pc":[3536,3537]},{"teal":3479,"source":854,"pc":[3538]},{"teal":3480,"source":854,"pc":[3539,3540]},{"teal":3483,"source":854,"pc":[3541]},{"teal":3484,"source":512,"pc":[3542]},{"teal":3489,"source":886,"pc":[3543,3544,3545]},{"teal":3490,"source":886,"pc":[3546]},{"teal":3493,"source":885,"pc":[3547,3548,3549]},{"teal":3494,"source":885,"pc":[3550]},{"teal":3497,"source":884,"pc":[3551,3552,3553]},{"teal":3498,"source":884,"pc":[3554]},{"teal":3501,"source":883,"pc":[3555,3556,3557]},{"teal":3502,"source":883,"pc":[3558,3559,3560]},{"teal":3505,"source":882,"pc":[3561,3562,3563]},{"teal":3506,"source":882,"pc":[3564,3565,3566]},{"teal":3509,"source":881,"pc":[3567,3568,3569]},{"teal":3510,"source":881,"pc":[3570,3571,3572]},{"teal":3513,"source":880,"pc":[3573,3574]},{"teal":3514,"source":880,"pc":[3575]},{"teal":3515,"source":880,"pc":[3576]},{"teal":3516,"source":880,"pc":[3577]},{"teal":3517,"source":880,"pc":[3578,3579]},{"teal":3518,"source":880,"pc":[3580]},{"teal":3519,"source":880,"pc":[3581]},{"teal":3522,"source":880,"errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3582]},{"teal":3525,"source":879,"pc":[3583,3584,3585]},{"teal":3526,"source":879,"pc":[3586]},{"teal":3527,"source":879,"pc":[3587]},{"teal":3543,"source":879,"pc":[3588,3589,3590]},{"teal":3546,"source":879,"pc":[3591,3592]},{"teal":3550,"source":888,"pc":[3593,3594,3595]},{"teal":3553,"source":888,"errorMessage":"can only be called by owner or manager of validator","pc":[3596]},{"teal":3557,"source":889,"pc":[3597,3598,3599]},{"teal":3558,"source":889,"pc":[3600,3601]},{"teal":3563,"source":890,"pc":[3602,3603]},{"teal":3564,"source":890,"pc":[3604,3605]},{"teal":3565,"source":890,"pc":[3606,3607]},{"teal":3566,"source":890,"pc":[3608]},{"teal":3569,"source":890,"errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3609]},{"teal":3572,"source":890,"pc":[3610,3611]},{"teal":3573,"source":890,"pc":[3612,3613]},{"teal":3574,"source":890,"pc":[3614,3615]},{"teal":3575,"source":890,"pc":[3616]},{"teal":3578,"source":890,"errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3617]},{"teal":3590,"source":891,"pc":[3618]},{"teal":3591,"source":891,"pc":[3619,3620]},{"teal":3592,"source":891,"pc":[3621,3622]},{"teal":3596,"source":892,"pc":[3623,3624]},{"teal":3597,"source":892,"pc":[3625,3626]},{"teal":3601,"source":893,"pc":[3627,3628]},{"teal":3602,"source":893,"pc":[3629,3630]},{"teal":3606,"source":894,"pc":[3631,3632]},{"teal":3607,"source":894,"pc":[3633,3634]},{"teal":3611,"source":895,"pc":[3635,3636]},{"teal":3612,"source":895,"pc":[3637,3638]},{"teal":3616,"source":896,"pc":[3639,3640]},{"teal":3617,"source":896,"pc":[3641,3642]},{"teal":3621,"source":897,"pc":[3643,3644]},{"teal":3622,"source":897,"pc":[3645,3646]},{"teal":3626,"source":898,"pc":[3647,3648]},{"teal":3627,"source":898,"pc":[3649,3650]},{"teal":3630,"source":891,"pc":[3651]},{"teal":3631,"source":879,"pc":[3652]},{"teal":3636,"source":907,"pc":[3653,3654,3655]},{"teal":3637,"source":907,"pc":[3656]},{"teal":3638,"source":907,"pc":[3657]},{"teal":3645,"source":907,"pc":[3658,3659,3660]},{"teal":3650,"source":910,"pc":[3661,3662]},{"teal":3651,"source":910,"pc":[3663]},{"teal":3652,"source":910,"pc":[3664]},{"teal":3653,"source":910,"pc":[3665,3666]},{"teal":3654,"source":910,"pc":[3667]},{"teal":3655,"source":910,"pc":[3668]},{"teal":3656,"source":910,"pc":[3669,3670,3671]},{"teal":3661,"source":911,"pc":[3672,3673,3674]},{"teal":3664,"source":911,"errorMessage":"can only be called by owner or manager of validator","pc":[3675]},{"teal":3669,"source":914,"pc":[3676]},{"teal":3670,"source":914,"pc":[3677,3678]},{"teal":3671,"source":914,"pc":[3679,3680]},{"teal":3674,"source":914,"pc":[3681]},{"teal":3675,"source":914,"pc":[3682,3683]},{"teal":3678,"source":914,"pc":[3684]},{"teal":3679,"source":907,"pc":[3685]},{"teal":3684,"source":920,"pc":[3686,3687,3688]},{"teal":3685,"source":920,"pc":[3689,3690,3691]},{"teal":3688,"source":920,"pc":[3692,3693,3694]},{"teal":3689,"source":920,"pc":[3695]},{"teal":3692,"source":920,"pc":[3696,3697,3698]},{"teal":3693,"source":920,"pc":[3699]},{"teal":3694,"source":920,"pc":[3700]},{"teal":3698,"source":920,"pc":[3701,3702,3703]},{"teal":3702,"source":921,"pc":[3704,3705,3706]},{"teal":3705,"source":921,"errorMessage":"can only be called by owner or manager of validator","pc":[3707]},{"teal":3713,"source":923,"pc":[3708]},{"teal":3714,"source":923,"pc":[3709]},{"teal":3715,"source":923,"pc":[3710,3711]},{"teal":3719,"source":924,"pc":[3712,3713]},{"teal":3720,"source":924,"pc":[3714,3715]},{"teal":3724,"source":925,"pc":[3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732]},{"teal":3725,"source":925,"pc":[3733,3734]},{"teal":3726,"source":925,"pc":[3735,3736]},{"teal":3727,"source":925,"pc":[3737,3738]},{"teal":3728,"source":925,"pc":[3739,3740]},{"teal":3729,"source":925,"pc":[3741]},{"teal":3730,"source":925,"pc":[3742,3743]},{"teal":3731,"source":925,"pc":[3744,3745]},{"teal":3732,"source":925,"pc":[3746,3747]},{"teal":3736,"source":926,"pc":[3748,3749]},{"teal":3737,"source":926,"pc":[3750,3751]},{"teal":3740,"source":923,"pc":[3752]},{"teal":3741,"source":923,"pc":[3753,3754]},{"teal":3744,"source":923,"pc":[3755]},{"teal":3745,"source":920,"pc":[3756]},{"teal":3750,"source":936,"pc":[3757,3758]},{"teal":3753,"source":936,"pc":[3759,3760,3761]},{"teal":3754,"source":936,"pc":[3762]},{"teal":3755,"source":936,"pc":[3763]},{"teal":3756,"source":936,"pc":[3764,3765]},{"teal":3757,"source":936,"pc":[3766]},{"teal":3760,"source":936,"errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3767]},{"teal":3763,"source":936,"pc":[3768,3769,3770]},{"teal":3764,"source":936,"pc":[3771]},{"teal":3765,"source":936,"pc":[3772]},{"teal":3766,"source":936,"pc":[3773]},{"teal":3767,"source":936,"pc":[3774]},{"teal":3776,"source":936,"pc":[3775,3776,3777]},{"teal":3779,"source":936,"pc":[3778,3779]},{"teal":3783,"source":937,"pc":[3780]},{"teal":3784,"source":937,"pc":[3781]},{"teal":3785,"source":937,"pc":[3782,3783]},{"teal":3786,"source":937,"pc":[3784,3785,3786]},{"teal":3787,"source":937,"pc":[3787]},{"teal":3788,"source":937,"pc":[3788]},{"teal":3791,"source":937,"errorMessage":"caller must be part of same validator set!","pc":[3789]},{"teal":3795,"source":938,"pc":[3790]},{"teal":3796,"source":938,"pc":[3791]},{"teal":3797,"source":938,"pc":[3792]},{"teal":3798,"source":938,"pc":[3793]},{"teal":3801,"source":938,"errorMessage":"callee must be pool 1","pc":[3794]},{"teal":3805,"source":939,"pc":[3795,3796]},{"teal":3806,"source":939,"pc":[3797,3798,3799]},{"teal":3807,"source":939,"pc":[3800]},{"teal":3808,"source":939,"pc":[3801]},{"teal":3809,"source":939,"pc":[3802]},{"teal":3812,"source":939,"errorMessage":"caller must NOT be pool 1","pc":[3803]},{"teal":3819,"source":941,"pc":[3804]},{"teal":3820,"source":941,"pc":[3805]},{"teal":3821,"source":941,"pc":[3806,3807]},{"teal":3822,"source":941,"pc":[3808,3809]},{"teal":3823,"source":941,"pc":[3810,3811]},{"teal":3827,"source":942,"pc":[3812]},{"teal":3828,"source":942,"pc":[3813]},{"teal":3829,"source":942,"pc":[3814,3815]},{"teal":3833,"source":943,"pc":[3816,3817]},{"teal":3834,"source":943,"pc":[3818,3819,3820]},{"teal":3835,"source":943,"pc":[3821]},{"teal":3836,"source":943,"pc":[3822]},{"teal":3837,"source":943,"pc":[3823,3824]},{"teal":3838,"source":943,"pc":[3825,3826]},{"teal":3839,"source":943,"pc":[3827,3828,3829]},{"teal":3840,"source":943,"pc":[3830]},{"teal":3841,"source":943,"pc":[3831]},{"teal":3842,"source":943,"pc":[3832,3833]},{"teal":3845,"source":941,"pc":[3834]},{"teal":3846,"source":941,"pc":[3835,3836]},{"teal":3849,"source":941,"pc":[3837]},{"teal":3850,"source":941,"pc":[3838,3839]},{"teal":3851,"source":941,"pc":[3840]},{"teal":3852,"source":941,"pc":[3841]},{"teal":3853,"source":941,"pc":[3842,3843]},{"teal":3854,"source":941,"pc":[3844,3845,3846]},{"teal":3855,"source":941,"pc":[3847]},{"teal":3856,"source":941,"pc":[3848,3849]},{"teal":3860,"source":945,"pc":[3850,3851]},{"teal":3861,"source":945,"pc":[3852,3853]},{"teal":3862,"source":945,"pc":[3854,3855,3856]},{"teal":3863,"source":945,"pc":[3857]},{"teal":3864,"source":945,"pc":[3858]},{"teal":3865,"source":945,"pc":[3859]},{"teal":3869,"source":946,"pc":[3860,3861]},{"teal":3870,"source":946,"pc":[3862,3863]},{"teal":3871,"source":946,"pc":[3864,3865,3866]},{"teal":3872,"source":946,"pc":[3867]},{"teal":3873,"source":946,"pc":[3868,3869]},{"teal":3874,"source":946,"pc":[3870]},{"teal":3875,"source":946,"pc":[3871]},{"teal":3876,"source":946,"pc":[3872]},{"teal":3883,"source":948,"pc":[3873]},{"teal":3884,"source":948,"pc":[3874]},{"teal":3885,"source":948,"pc":[3875,3876]},{"teal":3886,"source":948,"pc":[3877,3878]},{"teal":3887,"source":948,"pc":[3879,3880]},{"teal":3891,"source":949,"pc":[3881]},{"teal":3892,"source":949,"pc":[3882]},{"teal":3893,"source":949,"pc":[3883,3884]},{"teal":3897,"source":950,"pc":[3885]},{"teal":3898,"source":950,"pc":[3886]},{"teal":3899,"source":950,"pc":[3887]},{"teal":3900,"source":950,"pc":[3888,3889]},{"teal":3903,"source":948,"pc":[3890]},{"teal":3904,"source":948,"pc":[3891,3892]},{"teal":3907,"source":948,"pc":[3893]},{"teal":3908,"source":948,"pc":[3894,3895]},{"teal":3909,"source":948,"pc":[3896]},{"teal":3910,"source":948,"pc":[3897]},{"teal":3911,"source":948,"pc":[3898,3899]},{"teal":3912,"source":948,"pc":[3900,3901,3902]},{"teal":3915,"source":936,"pc":[3903,3904]},{"teal":3916,"source":936,"pc":[3905]},{"teal":3920,"source":954,"pc":[3906,3907,3908]},{"teal":3923,"source":954,"pc":[3909,3910]},{"teal":3930,"source":955,"pc":[3911]},{"teal":3931,"source":955,"pc":[3912]},{"teal":3932,"source":955,"pc":[3913,3914]},{"teal":3933,"source":955,"pc":[3915,3916,3917,3918,3919,3920]},{"teal":3934,"source":955,"pc":[3921,3922]},{"teal":3938,"source":956,"pc":[3923]},{"teal":3939,"source":956,"pc":[3924]},{"teal":3940,"source":956,"pc":[3925,3926]},{"teal":3944,"source":957,"pc":[3927]},{"teal":3945,"source":957,"pc":[3928]},{"teal":3946,"source":957,"pc":[3929]},{"teal":3947,"source":957,"pc":[3930,3931]},{"teal":3950,"source":955,"pc":[3932]},{"teal":3951,"source":955,"pc":[3933,3934]},{"teal":3954,"source":955,"pc":[3935]},{"teal":3955,"source":955,"pc":[3936,3937]},{"teal":3956,"source":955,"pc":[3938]},{"teal":3957,"source":955,"pc":[3939]},{"teal":3958,"source":955,"pc":[3940,3941]},{"teal":3959,"source":955,"pc":[3942,3943,3944]},{"teal":3960,"source":955,"pc":[3945,3946]},{"teal":3964,"source":959,"pc":[3947,3948]},{"teal":3965,"source":959,"pc":[3949,3950]},{"teal":3966,"source":959,"pc":[3951,3952,3953]},{"teal":3967,"source":959,"pc":[3954]},{"teal":3968,"source":959,"pc":[3955]},{"teal":3969,"source":959,"pc":[3956,3957,3958]},{"teal":3970,"source":959,"pc":[3959,3960]},{"teal":3971,"source":959,"pc":[3961,3962]},{"teal":3972,"source":959,"pc":[3963,3964,3965]},{"teal":3973,"source":959,"pc":[3966]},{"teal":3974,"source":959,"pc":[3967]},{"teal":3978,"source":954,"pc":[3968,3969]},{"teal":3979,"source":954,"pc":[3970]},{"teal":3986,"source":966,"pc":[3971,3972,3973]},{"teal":3989,"source":966,"pc":[3974,3975]},{"teal":3993,"source":967,"pc":[3976,3977,3978]},{"teal":3994,"source":967,"pc":[3979,3980]},{"teal":3998,"source":969,"pc":[3981,3982]},{"teal":3999,"source":969,"pc":[3983,3984]},{"teal":4000,"source":969,"pc":[3985]},{"teal":4001,"source":969,"pc":[3986]},{"teal":4002,"source":969,"pc":[3987,3988]},{"teal":4003,"source":969,"pc":[3989]},{"teal":4004,"source":969,"pc":[3990]},{"teal":4005,"source":969,"pc":[3991]},{"teal":4006,"source":969,"pc":[3992]},{"teal":4007,"source":969,"pc":[3993]},{"teal":4010,"source":969,"errorMessage":"wideRatio failed","pc":[3994]},{"teal":4013,"source":966,"pc":[3995,3996]},{"teal":4014,"source":966,"pc":[3997]},{"teal":4018,"source":972,"pc":[3998,3999,4000]},{"teal":4023,"source":974,"pc":[4001,4002]},{"teal":4024,"source":974,"pc":[4003,4004]},{"teal":4025,"source":974,"pc":[4005]},{"teal":4026,"source":974,"pc":[4006]},{"teal":4027,"source":974,"pc":[4007,4008,4009]},{"teal":4032,"source":975,"pc":[4010,4011]},{"teal":4033,"source":975,"pc":[4012]},{"teal":4038,"source":977,"pc":[4013]},{"teal":4039,"source":972,"pc":[4014]},{"teal":4043,"source":980,"pc":[4015,4016,4017]},{"teal":4047,"source":981,"pc":[4018]},{"teal":4048,"source":980,"pc":[4019]},{"teal":4054,"source":987,"pc":[4020,4021,4022]},{"teal":4057,"source":987,"pc":[4023,4024]},{"teal":4058,"source":987,"pc":[4025,4026]},{"teal":4062,"source":988,"pc":[4027,4028]},{"teal":4063,"source":988,"pc":[4029]},{"teal":4064,"source":988,"pc":[4030]},{"teal":4065,"source":988,"pc":[4031,4032]},{"teal":4070,"source":989,"pc":[4033,4034]},{"teal":4071,"source":989,"pc":[4035,4036]},{"teal":4072,"source":989,"pc":[4037]},{"teal":4073,"source":989,"pc":[4038,4039]},{"teal":4074,"source":989,"pc":[4040]},{"teal":4075,"source":989,"pc":[4041]},{"teal":4076,"source":989,"pc":[4042]},{"teal":4077,"source":989,"pc":[4043]},{"teal":4080,"source":989,"errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[4044]},{"teal":4081,"source":989,"pc":[4045,4046,4047,4048,4049,4050,4051,4052,4053,4054]},{"teal":4082,"source":989,"pc":[4055]},{"teal":4083,"source":989,"pc":[4056]},{"teal":4084,"source":989,"pc":[4057]},{"teal":4085,"source":989,"pc":[4058]},{"teal":4086,"source":989,"pc":[4059,4060]},{"teal":4087,"source":989,"pc":[4061]},{"teal":4088,"source":989,"pc":[4062]},{"teal":4089,"source":989,"pc":[4063]},{"teal":4090,"source":989,"pc":[4064]},{"teal":4091,"source":989,"pc":[4065]},{"teal":4092,"source":989,"pc":[4066]},{"teal":4093,"source":989,"pc":[4067,4068,4069]},{"teal":4099,"source":990,"pc":[4070,4071]},{"teal":4100,"source":990,"pc":[4072,4073]},{"teal":4101,"source":990,"pc":[4074]},{"teal":4102,"source":990,"pc":[4075,4076,4077]},{"teal":4107,"source":991,"pc":[4078]},{"teal":4108,"source":991,"pc":[4079]},{"teal":4109,"source":991,"pc":[4080,4081]},{"teal":4110,"source":991,"pc":[4082]},{"teal":4111,"source":991,"pc":[4083,4084]},{"teal":4112,"source":991,"pc":[4085,4086]},{"teal":4113,"source":991,"pc":[4087]},{"teal":4114,"source":991,"pc":[4088,4089]},{"teal":4115,"source":991,"pc":[4090,4091]},{"teal":4116,"source":991,"pc":[4092,4093]},{"teal":4117,"source":991,"pc":[4094,4095]},{"teal":4118,"source":991,"pc":[4096]},{"teal":4123,"source":993,"pc":[4097,4098]},{"teal":4124,"source":993,"pc":[4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116]},{"teal":4125,"source":993,"pc":[4117]},{"teal":4126,"source":993,"pc":[4118]},{"teal":4127,"source":993,"pc":[4119]},{"teal":4128,"source":993,"pc":[4120,4121]},{"teal":4129,"source":993,"pc":[4122]},{"teal":4132,"source":993,"errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[4123]},{"teal":4133,"source":993,"pc":[4124,4125]},{"teal":4134,"source":993,"pc":[4126]},{"teal":4135,"source":993,"pc":[4127]},{"teal":4136,"source":993,"pc":[4128]},{"teal":4137,"source":993,"pc":[4129]},{"teal":4138,"source":993,"pc":[4130,4131]},{"teal":4139,"source":993,"pc":[4132]},{"teal":4140,"source":993,"pc":[4133]},{"teal":4141,"source":993,"pc":[4134]},{"teal":4142,"source":993,"pc":[4135,4136]},{"teal":4146,"source":994,"pc":[4137,4138]},{"teal":4147,"source":994,"pc":[4139]},{"teal":4148,"source":994,"pc":[4140,4141]},{"teal":4149,"source":994,"pc":[4142]},{"teal":4150,"source":994,"pc":[4143]},{"teal":4151,"source":994,"pc":[4144]},{"teal":4152,"source":994,"pc":[4145,4146]},{"teal":4153,"source":994,"pc":[4147]},{"teal":4156,"source":994,"errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[4148]},{"teal":4157,"source":994,"pc":[4149,4150]},{"teal":4158,"source":994,"pc":[4151]},{"teal":4159,"source":994,"pc":[4152]},{"teal":4160,"source":994,"pc":[4153]},{"teal":4161,"source":994,"pc":[4154]},{"teal":4162,"source":994,"pc":[4155,4156]},{"teal":4163,"source":994,"pc":[4157]},{"teal":4164,"source":994,"pc":[4158]},{"teal":4165,"source":994,"pc":[4159]},{"teal":4166,"source":994,"pc":[4160,4161]},{"teal":4171,"source":995,"pc":[4162,4163]},{"teal":4172,"source":995,"pc":[4164,4165]},{"teal":4173,"source":995,"pc":[4166]},{"teal":4174,"source":995,"pc":[4167,4168,4169]},{"teal":4181,"source":1000,"pc":[4170,4171]},{"teal":4182,"source":1000,"pc":[4172]},{"teal":4183,"source":1000,"pc":[4173]},{"teal":4184,"source":1000,"pc":[4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191]},{"teal":4185,"source":1000,"pc":[4192]},{"teal":4186,"source":1000,"pc":[4193,4194]},{"teal":4187,"source":1000,"pc":[4195]},{"teal":4188,"source":1001,"pc":[4196,4197]},{"teal":4189,"source":1001,"pc":[4198,4199]},{"teal":4190,"source":1001,"pc":[4200]},{"teal":4191,"source":1000,"pc":[4201]},{"teal":4192,"source":1000,"pc":[4202]},{"teal":4193,"source":1000,"pc":[4203]},{"teal":4194,"source":1000,"pc":[4204,4205]},{"teal":4195,"source":1000,"pc":[4206]},{"teal":4198,"source":1000,"errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[4207]},{"teal":4199,"source":1000,"pc":[4208,4209]},{"teal":4200,"source":1000,"pc":[4210]},{"teal":4201,"source":1000,"pc":[4211]},{"teal":4202,"source":1000,"pc":[4212]},{"teal":4203,"source":1000,"pc":[4213]},{"teal":4204,"source":1000,"pc":[4214,4215]},{"teal":4205,"source":1000,"pc":[4216]},{"teal":4206,"source":1000,"pc":[4217]},{"teal":4207,"source":1000,"pc":[4218]},{"teal":4208,"source":999,"pc":[4219,4220]},{"teal":4212,"source":1003,"pc":[4221,4222,4223,4224,4225,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238]},{"teal":4213,"source":1003,"pc":[4239,4240]},{"teal":4218,"source":1005,"pc":[4241,4242]},{"teal":4219,"source":1005,"pc":[4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260]},{"teal":4220,"source":1005,"pc":[4261]},{"teal":4221,"source":1005,"pc":[4262,4263,4264]},{"teal":4226,"source":1006,"pc":[4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282]},{"teal":4227,"source":1006,"pc":[4283,4284]},{"teal":4234,"source":1008,"pc":[4285,4286]},{"teal":4235,"source":1008,"pc":[4287]},{"teal":4236,"source":1009,"pc":[4288]},{"teal":4237,"source":1009,"pc":[4289,4290]},{"teal":4238,"source":1009,"pc":[4291,4292]},{"teal":4239,"source":1009,"pc":[4293]},{"teal":4240,"source":1009,"pc":[4294]},{"teal":4241,"source":1009,"pc":[4295,4296]},{"teal":4242,"source":1009,"pc":[4297]},{"teal":4243,"source":1010,"pc":[4298,4299]},{"teal":4244,"source":1010,"pc":[4300,4301]},{"teal":4245,"source":1010,"pc":[4302]},{"teal":4246,"source":1010,"pc":[4303,4304]},{"teal":4247,"source":1010,"pc":[4305]},{"teal":4248,"source":1009,"pc":[4306]},{"teal":4249,"source":1009,"pc":[4307]},{"teal":4250,"source":1009,"pc":[4308]},{"teal":4251,"source":1009,"pc":[4309,4310]},{"teal":4252,"source":1009,"pc":[4311]},{"teal":4255,"source":1009,"errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4312]},{"teal":4256,"source":1009,"pc":[4313,4314]},{"teal":4257,"source":1009,"pc":[4315]},{"teal":4258,"source":1009,"pc":[4316]},{"teal":4259,"source":1009,"pc":[4317]},{"teal":4260,"source":1009,"pc":[4318]},{"teal":4261,"source":1009,"pc":[4319,4320]},{"teal":4262,"source":1009,"pc":[4321]},{"teal":4263,"source":1009,"pc":[4322]},{"teal":4264,"source":1009,"pc":[4323]},{"teal":4265,"source":1008,"pc":[4324]},{"teal":4270,"source":1014,"pc":[4325,4326,4327]},{"teal":4274,"source":1015,"pc":[4328,4329]},{"teal":4275,"source":1015,"pc":[4330,4331]},{"teal":4276,"source":1015,"pc":[4332]},{"teal":4277,"source":1015,"pc":[4333]},{"teal":4278,"source":1015,"pc":[4334,4335]},{"teal":4279,"source":1015,"pc":[4336]},{"teal":4280,"source":1015,"pc":[4337]},{"teal":4281,"source":1015,"pc":[4338]},{"teal":4282,"source":1015,"pc":[4339]},{"teal":4283,"source":1015,"pc":[4340]},{"teal":4284,"source":1015,"pc":[4341,4342]},{"teal":4285,"source":1015,"pc":[4343]},{"teal":4288,"source":1015,"errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4344]},{"teal":4289,"source":1015,"pc":[4345,4346]},{"teal":4290,"source":1015,"pc":[4347]},{"teal":4291,"source":1015,"pc":[4348]},{"teal":4292,"source":1015,"pc":[4349]},{"teal":4293,"source":1015,"pc":[4350]},{"teal":4294,"source":1015,"pc":[4351,4352]},{"teal":4295,"source":1015,"pc":[4353]},{"teal":4296,"source":1015,"pc":[4354]},{"teal":4297,"source":1015,"pc":[4355]},{"teal":4298,"source":1015,"pc":[4356]},{"teal":4302,"source":1016,"pc":[4357,4358]},{"teal":4303,"source":1016,"pc":[4359]},{"teal":4304,"source":1016,"pc":[4360]},{"teal":4308,"source":1017,"pc":[4361,4362]},{"teal":4309,"source":1017,"pc":[4363,4364]},{"teal":4310,"source":1017,"pc":[4365,4366]},{"teal":4311,"source":1017,"pc":[4367,4368]},{"teal":4312,"source":1017,"pc":[4369]},{"teal":4313,"source":1017,"pc":[4370]},{"teal":4314,"source":1017,"pc":[4371]},{"teal":4315,"source":1017,"pc":[4372]},{"teal":4318,"source":987,"pc":[4373]},{"teal":4322,"source":1021,"pc":[4374,4375,4376]},{"teal":4325,"source":1021,"pc":[4377,4378]},{"teal":4330,"source":1026,"pc":[4379,4380]},{"teal":4331,"source":1026,"pc":[4381,4382]},{"teal":4332,"source":1026,"pc":[4383]},{"teal":4333,"source":1026,"pc":[4384,4385,4386]},{"teal":4338,"source":1028,"pc":[4387,4388]},{"teal":4339,"source":1028,"pc":[4389,4390]},{"teal":4340,"source":1028,"pc":[4391]},{"teal":4344,"source":1029,"pc":[4392]},{"teal":4350,"source":1033,"pc":[4393,4394]},{"teal":4351,"source":1033,"pc":[4395]},{"teal":4352,"source":1033,"pc":[4396]},{"teal":4353,"source":1033,"pc":[4397,4398]},{"teal":4354,"source":1033,"pc":[4399,4400]},{"teal":4355,"source":1033,"pc":[4401,4402]},{"teal":4356,"source":1033,"pc":[4403]},{"teal":4357,"source":1033,"pc":[4404,4405]},{"teal":4358,"source":1033,"pc":[4406]},{"teal":4359,"source":1032,"pc":[4407,4408]},{"teal":4364,"source":1034,"pc":[4409,4410]},{"teal":4365,"source":1034,"pc":[4411]},{"teal":4366,"source":1034,"pc":[4412]},{"teal":4367,"source":1034,"pc":[4413,4414,4415]},{"teal":4372,"source":1036,"pc":[4416,4417]},{"teal":4373,"source":1036,"pc":[4418,4419]},{"teal":4374,"source":1036,"pc":[4420]},{"teal":4378,"source":1037,"pc":[4421]},{"teal":4383,"source":1042,"pc":[4422,4423]},{"teal":4384,"source":1042,"pc":[4424,4425,4426,4427]},{"teal":4385,"source":1042,"pc":[4428,4429]},{"teal":4386,"source":1042,"pc":[4430]},{"teal":4387,"source":1042,"pc":[4431]},{"teal":4388,"source":1021,"pc":[4432]},{"teal":4391,"source":37,"pc":[4433,4434,4435,4436,4437,4438]},{"teal":4392,"source":37,"pc":[4439,4440,4441]},{"teal":4393,"source":37,"pc":[4442,4443,4444,4445]},{"teal":4396,"source":37,"errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4446]},{"teal":4399,"source":37,"pc":[4447,4448,4449,4450,4451,4452]},{"teal":4400,"source":37,"pc":[4453,4454,4455,4456,4457,4458]},{"teal":4401,"source":37,"pc":[4459,4460,4461,4462,4463,4464]},{"teal":4402,"source":37,"pc":[4465,4466,4467,4468,4469,4470]},{"teal":4403,"source":37,"pc":[4471,4472,4473,4474,4475,4476]},{"teal":4404,"source":37,"pc":[4477,4478,4479,4480,4481,4482]},{"teal":4405,"source":37,"pc":[4483,4484,4485,4486,4487,4488]},{"teal":4406,"source":37,"pc":[4489,4490,4491,4492,4493,4494]},{"teal":4407,"source":37,"pc":[4495,4496,4497,4498,4499,4500]},{"teal":4408,"source":37,"pc":[4501,4502,4503,4504,4505,4506]},{"teal":4409,"source":37,"pc":[4507,4508,4509,4510,4511,4512]},{"teal":4410,"source":37,"pc":[4513,4514,4515,4516,4517,4518]},{"teal":4411,"source":37,"pc":[4519,4520]},{"teal":4412,"source":37,"pc":[4521,4522,4523]},{"teal":4413,"source":37,"pc":[4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551]},{"teal":4416,"source":37,"errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4552]}],"clear":[]},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gbWluRW50cnlTdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gY3JlYXRpbmdDb250cmFjdElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbihjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElELCB2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCwgbWluRW50cnlTdGFrZTogdWludDY0KTogdm9pZAovLwovLyBJbml0aWFsaXplIHRoZSBzdGFraW5nIHBvb2wgdy8gb3duZXIgYW5kIG1hbmFnZXIsIGJ1dCBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QuCi8vIEBwYXJhbSB7dWludDY0fSBjcmVhdGluZ0NvbnRyYWN0SWQgLSBpZCBvZiBjb250cmFjdCB0aGF0IGNvbnN0cnVjdGVkIHVzIC0gdGhlIHZhbGlkYXRvciBhcHBsaWNhdGlvbiAoc2luZ2xlIGdsb2JhbCBpbnN0YW5jZSkKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIC0gaWQgb2YgdmFsaWRhdG9yIHdlJ3JlIGEgc3Rha2luZyBwb29sIG9mCi8vIEBwYXJhbSB7dWludDY0fSBwb29sSWQgLSB3aGljaCBwb29sIGlkIGFyZSB3ZQovLyBAcGFyYW0ge3VpbnQ2NH0gbWluRW50cnlTdGFrZSAtIG1pbmltdW0gYW1vdW50IHRvIGJlIGluIHBvb2wsIGJ1dCBhbHNvIG1pbmltdW0gYW1vdW50IGJhbGFuY2UgY2FuJ3QgZ28gYmVsb3cgKHdpdGhvdXQgcmVtb3ZpbmcgYWxsISkKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byA0IDAKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyCgkvLyBjcmVhdGluZ0NvbnRyYWN0SWQgPT09IEFwcElELmZyb21VaW50NjQoMCkKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglpbnQgMAoJPT0KCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgPT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50IDAKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDUKCS8vIGFzc2VydChwb29sSWQgPT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgk9PQoJYXNzZXJ0CgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDcKCS8vIGFzc2VydCh2YWxpZGF0b3JJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwOAoJLy8gYXNzZXJ0KHBvb2xJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50IDAKCSE9Cglhc3NlcnQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEwCgkvLyBhc3NlcnQobWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC00IC8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJaW50IDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTExCgkvLyB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSA9IGNyZWF0aW5nQ29udHJhY3RJZAoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJZnJhbWVfZGlnIC0xIC8vIGNyZWF0aW5nQ29udHJhY3RJZDogQXBwSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEyCgkvLyB0aGlzLnZhbGlkYXRvcklkLnZhbHVlID0gdmFsaWRhdG9ySWQKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMwoJLy8gdGhpcy5wb29sSWQudmFsdWUgPSBwb29sSWQKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTQKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWludCAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIwCgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMQoJLy8gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlID0gZ2xvYmFscy5yb3VuZCAtIChnbG9iYWxzLnJvdW5kICUgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUpCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglnbG9iYWwgUm91bmQKCWdsb2JhbCBSb3VuZAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIyCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAwIGFzIHVpbnQxMjgKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjMKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEzNgoJLy8gcmV0dXJuIFNDQk9YX1BFUkJPWCArIHRvdGFsTnVtQnl0ZXMgKiBTQ0JPWF9QRVJCWVRFCglpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJaW50IDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMCAobWJyUGF5bWVudCkgZm9yIGluaXRTdG9yYWdlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgaW5pdFN0b3JhZ2UocGF5KXZvaWQKCWNhbGxzdWIgaW5pdFN0b3JhZ2UKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdG9yYWdlKG1iclBheW1lbnQ6IFBheVR4bik6IHZvaWQKLy8KLy8gQ2FsbGVkIGFmdGVyIHdlJ3JlIGNyZWF0ZWQgYW5kIHRoZW4gZnVuZGVkLCBzbyB3ZSBjYW4gY3JlYXRlIG91ciBsYXJnZSBzdGFrZXJzIGxlZGdlciBzdG9yYWdlCi8vIENhbGxlciBoYXMgdG8gZ2V0IE1CUiBhbW91bnRzIGZyb20gVmFsaWRhdG9yUmVnaXN0cnkgdG8ga25vdyBob3cgbXVjaCB0byBmdW5kIHVzIHRvIGNvdmVyIHRoZSBib3ggc3RvcmFnZSBjb3N0Ci8vIElmIHRoaXMgaXMgcG9vbCAxIEFORCB0aGUgdmFsaWRhdG9yIGhhcyBzcGVjaWZpZWQgYSByZXdhcmQgdG9rZW4sIG9wdC1pbiB0byB0aGF0IHRva2VuCi8vIHNvIHRoYXQgdGhlIHZhbGlkYXRvciBjYW4gc2VlZCB0aGUgcG9vbCB3aXRoIGZ1dHVyZSByZXdhcmRzIG9mIHRoYXQgdG9rZW4uCi8vIEBwYXJhbSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgc3Rha2luZyBwb29scycgc3RvcmFnZQppbml0U3RvcmFnZToKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDMKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNDcKCS8vIGFzc2VydCghdGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkJykKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTUyCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU0CgkvLyBpc1Rva2VuRWxpZ2libGUgPSB2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCAhPT0gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWludCAwCgkhPQoJZnJhbWVfYnVyeSAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NQoJLy8gZXh0cmFNQlIgPSBpc1Rva2VuRWxpZ2libGUgJiYgdGhpcy5wb29sSWQudmFsdWUgPT09IDEgPyBBU1NFVF9IT0xESU5HX0ZFRSA6IDAKCWZyYW1lX2RpZyAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJZHVwCglieiAqc2tpcF9hbmQwCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgkmJgoKKnNraXBfYW5kMDoKCWJ6ICp0ZXJuYXJ5MF9mYWxzZQoJaW50IDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnQgMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnQgMTAwMDAwCglmcmFtZV9kaWcgMiAvLyBleHRyYU1CUjogdWludDY0CgkrCglpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWZyYW1lX2J1cnkgMyAvLyBQb29sSW5pdE1icjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYyCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBQb29sSW5pdE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6IlBvb2xJbml0TWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2MwoJLy8gdGhpcy5zdGFrZXJzLmNyZWF0ZSgpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCglpbnQgMTI4MDAKCWJveF9jcmVhdGUKCXBvcAoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjUKCS8vIGlzVG9rZW5FbGlnaWJsZSAmJiB0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMQoJZnJhbWVfZGlnIDEgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCglkdXAKCWJ6ICpza2lwX2FuZDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjkKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNzAKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjFfZW5kOgoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9hZGRTdGFrZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnQgMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50IHBheQoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZWRBbW91bnRQYXltZW50KSBmb3IgYWRkU3Rha2UgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgYWRkU3Rha2UKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHN0YWtlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBBZGRzIHN0YWtlIHRvIHRoZSBnaXZlbiBhY2NvdW50LgovLyBDYW4gT05MWSBiZSBjYWxsZWQgYnkgdGhlIHZhbGlkYXRvciBjb250cmFjdCB0aGF0IGNyZWF0ZWQgdXMKLy8gTXVzdCByZWNlaXZlIHBheW1lbnQgZnJvbSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciBhbW91bnQgYmVpbmcgc3Rha2VkLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCBwcmlvciBwYXltZW50IGNvbWluZyBmcm9tIHZhbGlkYXRvciBjb250cmFjdCB0byB1cyBvbiBiZWhhbGYgb2Ygc3Rha2VyLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhY2NvdW50IGFkZGluZyBuZXcgc3Rha2UKLy8gQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdGFraW5nIHBvb2wgaXMgZnVsbC4KLy8gQHJldHVybnMge3VpbnQ2NH0gbmV3ICdlbnRyeSByb3VuZCcgcm91bmQgbnVtYmVyIG9mIHN0YWtlIGFkZAphZGRTdGFrZToKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxODYKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMuZXhpc3RzLCAnc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QnKQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyBzdGFrZSBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTkzCgkvLyBhc3NlcnQoc3Rha2VyICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTk2CgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjAwCgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50LAoJLy8gICAgICAgICB9KQoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSByZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgUmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoicmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50In0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIwOQoJLy8gZW50cnlSb3VuZCA9IGdsb2JhbHMucm91bmQgKyBBTEdPUkFORF9TVEFLSU5HX0JMT0NLX0RFTEFZCglnbG9iYWwgUm91bmQKCWludCAzMjAKCSsKCWZyYW1lX2J1cnkgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTAKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJKwoJZ2xvYmFsIFJvdW5kCgktCglmcmFtZV9idXJ5IDIgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9CgkvLyAgICAgICAgICAgICB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWl0b2IKCWZyYW1lX2RpZyAyIC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJYisKCWR1cAoJYml0bGVuCglpbnQgMTI4Cgk8PQoKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gaTogdWludDY0CgoqZm9yXzA6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMF9lbmQKCgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjNfZW5kCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjYKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNwoJLy8gY21wU3Rha2VyLmVudHJ5Um91bmQgPSBlbnRyeVJvdW5kCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzIKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWIgKmFkZFN0YWtlKnJldHVybgoKKmlmM19lbmQ6CgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIGNtcFN0YWtlci5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAwCgk9PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDI6CglieiAqaWY0X2VuZAoKCS8vICppZjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjRfZW5kOgoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMyAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzOQoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBTdGFraW5nIHBvb2wgZnVsbAoJZXJyCgoqaWY1X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI0NgoJLy8gYXNzZXJ0KHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50ID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcpCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ4CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXS5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMQoJLQoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgMzIKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglnbG9iYWwgWmVyb0FkZHJlc3MKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDkKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSB7CgkvLyAgICAgICAgICAgICBhY2NvdW50OiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBiYWxhbmNlOiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCwKCS8vICAgICAgICAgICAgIHRvdGFsUmV3YXJkZWQ6IDAsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkJhbGFuY2U6IDAsCgkvLyAgICAgICAgICAgICBlbnRyeVJvdW5kOiBlbnRyeVJvdW5kLAoJLy8gICAgICAgICB9CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAxCgktCglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NgoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlICs9IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNTcKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCiphZGRTdGFrZSpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZToKCS8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIHJlbW92ZVN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKCWNhbGxzdWIgcmVtb3ZlU3Rha2UKCWludCAxCglyZXR1cm4KCi8vIHJlbW92ZVN0YWtlKHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9VbnN0YWtlOiB1aW50NjQpOiB2b2lkCi8vCi8vIFJlbW92ZXMgc3Rha2Ugb24gYmVoYWxmIG9mIGNhbGxlciAocmVtb3Zpbmcgb3duIHN0YWtlKS4gIElmIGFueSB0b2tlbiByZXdhcmRzIGV4aXN0LCB0aG9zZSBhcmUgYWx3YXlzIHNlbnQgaW4KLy8gZnVsbC4gQWxzbyBub3RpZmllcyB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciB0aGlzIHBvb2xzIHZhbGlkYXRvciBvZiB0aGUgc3Rha2VyIC8gYmFsYW5jZSBjaGFuZ2VzLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIGFjY291bnQgdG8gcmVtb3ZlLiAgbm9ybWFsbHkgc2FtZSBhcyBzZW5kZXIsIGJ1dCB0aGUgdmFsaWRhdG9yIG93bmVyIG9yIG1hbmFnZXIgY2FuIGFsc28gY2FsbAovLyB0aGlzIHRvIHJlbW92ZSB0aGUgc3BlY2lmaWVkIHN0YWtlciBleHBsaWNpdGx5LiBUaGUgcmVtb3ZlZCBzdGFrZSBNVVNUIG9ubHkgZ28gdG8gdGhlIHN0YWtlciBvZiBjb3Vyc2UuICBUaGlzIGlzCi8vIHNvIGEgdmFsaWRhdG9yIGNhbiBzaHV0IGRvd24gYSBwb29vbCBhbmQgcmVmdW5kIHRoZSBzdGFrZXJzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBraWNrIG91dCBzdGFrZXJzIHdobyBubyBsb25nZXIKLy8gbWVldCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyAoZGV0ZXJtaW5lZCBieSB0aGUgbm9kZSBkYWVtb24pLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9VbnN0YWtlIC0gVGhlIGFtb3VudCBvZiBzdGFrZSB0byBiZSByZW1vdmVkLiAgU3BlY2lmeSAwIHRvIHJlbW92ZSBhbGwgc3Rha2UuCi8vIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWNjb3VudCBoYXMgaW5zdWZmaWNpZW50IGJhbGFuY2Ugb3IgaWYgdGhlIGFjY291bnQgaXMgbm90IGZvdW5kLgpyZW1vdmVTdGFrZToKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDYKCgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjc0CgkvLyBzdGFrZXIgIT09IHRoaXMudHhuLnNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJIT0KCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwKCS8vICAgICAgICAgICAgICAgICAnSWYgc3Rha2VyIGlzIG5vdCBzZW5kZXIgaW4gcmVtb3ZlU3Rha2UgY2FsbCwgdGhlbiBzZW5kZXIgTVVTVCBiZSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICAgICApCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCippZjZfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgxCgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgzCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMV9lbmQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg0CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg4CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjhfZW5kCgoJLy8gKmlmOF9jb25zZXF1ZW50CgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg5CgkvLyBhbW91bnRUb1Vuc3Rha2UgPT09IDAKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWY5X2VuZAoKCS8vICppZjlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjkxCgkvLyBhbW91bnRUb1Vuc3Rha2UgPSBjbXBTdGFrZXIuYmFsYW5jZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2J1cnkgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCippZjlfZW5kOgoJLy8gKmlmMTBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTMKCS8vIGNtcFN0YWtlci5iYWxhbmNlIDwgYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgk8CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZQoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTYKCS8vIGNtcFN0YWtlci5iYWxhbmNlIC09IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMzIgLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTkKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA+IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglpbnQgMAoJPgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDIKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzA0CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwNQoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMyAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxMl9lbmQKCippZjEyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjIKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjMKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTJfZW5kOgoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzI4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgICAgIGNtcFN0YWtlci5iYWxhbmNlID09PSAwIHx8IGNtcFN0YWtlci5iYWxhbmNlID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkJywKCS8vICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJaW50IDAKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglieXRlIDB4NmQ2OTZlNDU2ZTc0NzI3OTUzNzQ2MTZiNjUgLy8gIm1pbkVudHJ5U3Rha2UiCglhcHBfZ2xvYmFsX2dldAoJPj0KCXx8Cgoqc2tpcF9vcjA6CgkvLyBjYW5ub3QgcmVkdWNlIGJhbGFuY2UgYmVsb3cgbWluaW11bSBhbGxvd2VkIHN0YWtlIHVubGVzcyBhbGwgaXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM2CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICBub3RlOiAndW5zdGFrZWQnLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJYnl0ZSAweDc1NmU3Mzc0NjE2YjY1NjQgLy8gInVuc3Rha2VkIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MQoJLy8gc3Rha2VyUmVtb3ZlZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCgkvLyAqaWYxM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNDUKCS8vIGNtcFN0YWtlci5hY2NvdW50ID0gZ2xvYmFscy56ZXJvQWRkcmVzcwoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMAoJZ2xvYmFsIFplcm9BZGRyZXNzCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ4CgkvLyBzdGFrZXJSZW1vdmVkID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgNCAvLyBzdGFrZXJSZW1vdmVkOiBib29sCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTEKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzU0CgkvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOCA9IChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKGFtb3VudFRvVW5zdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgNiAvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYxCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM2MgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludCAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTEKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50IDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjE3X2Vsc2UKCgkvLyAqaWYxN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTkKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDAxCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA0IC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA2CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQwNwoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgNCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDgKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDkKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTEKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTIKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxN19lbmQKCippZjE3X2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTcKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MjcKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc3Rha2VSZW1vdmVkPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvLyBubyBhbGdvIHJlbW92ZWQKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBzdGFrZXIgaXNuJ3QgYmVpbmcgcmVtb3ZlZC4KCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDI4CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJY29uY2F0Cgl0eG5hIEFwcGxpY2F0aW9ucyAwCglpdG9iCgljb25jYXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlckluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VySW5mbyhhZGRyZXNzKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0U3Rha2VySW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFN0YWtlckluZm8oc3Rha2VyOiBBZGRyZXNzKTogU3Rha2VkSW5mbwovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHJldHVybnMge1N0YWtlZEluZm99IC0gVGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHN0YWtlci4KLy8gQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHN0YWtlcidzIGFjY291bnQgaXMgbm90IGZvdW5kLgpnZXRTdGFrZXJJbmZvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmMThfZW5kCgoJLy8gKmlmMThfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDU0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxOF9lbmQ6CgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NgoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCAzMgoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKmdldFN0YWtlckluZm8qcmV0dXJuCgoqaWYxOV9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCgoqZ2V0U3Rha2VySW5mbypyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9wYXlUb2tlblJld2FyZDoKCS8vIGFtb3VudFRvU2VuZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChzdGFrZXIpIGZvciBwYXlUb2tlblJld2FyZCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBwYXlUb2tlblJld2FyZAoJaW50IDEKCXJldHVybgoKLy8gcGF5VG9rZW5SZXdhcmQoc3Rha2VyOiBBZGRyZXNzLCByZXdhcmRUb2tlbjogdWludDY0LCBhbW91bnRUb1NlbmQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gW0ludGVybmFsIHByb3RvY29sIG1ldGhvZF0gUmVtb3ZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiAnY29tbXVuaXR5IHRva2VuJyByZXdhcmRzIGZvciBhIHN0YWtlci4KLy8gVGhpcyBjYW4gT05MWSBiZSBjYWxsZWQgYnkgb3VyIHZhbGlkYXRvciBhbmQgb25seSBpZiB3ZSdyZSBwb29sIDEgLSB3aXRoIHRoZSB0b2tlbi4KLy8gTm90ZTogdGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIGFzIHBhcnQgb2YgT1dORVIgd2FudGluZyB0byBzZW5kIHRoZSByZXdhcmQgdG9rZW5zCi8vIHNvbWV3aGVyZSBlbHNlIChpZSBpZiB0aGV5J3JlIHN1bnNldHRpbmcgdGhlaXIgdmFsaWRhdG9yIGFuZCBuZWVkIHRoZSByZXdhcmQgdG9rZW5zIGJhY2spLgovLyBJdCdzIHVwIHRvIHRoZSB2YWxpZGF0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGJhbGFuY2UgaW4gcmV3YXJkVG9rZW5IZWxkQmFjayBpcyBob25vcmVkLgovLyBAcGFyYW0gc3Rha2VyIC0gdGhlIHN0YWtlciBhY2NvdW50IHRvIHNlbmQgcmV3YXJkcyB0bwovLyBAcGFyYW0gcmV3YXJkVG9rZW4gLSBpZCBvZiByZXdhcmQgdG9rZW4gKHRvIGF2b2lkIHJlLWVudHJhbmN5IGluIGNhbGxpbmcgdmFsaWRhdG9yIGJhY2sgdG8gZ2V0IGlkKQovLyBAcGFyYW0gYW1vdW50VG9TZW5kIC0gYW1vdW50IHRvIHNlbmQgdGhlIHN0YWtlciAodGhlcmUgaXMgc2lnbmlmaWNhbnQgdHJ1c3QgaGVyZSghKSAtIGFsc28gd2h5IG9ubHkgdmFsaWRhdG9yIGNhbiBjYWxsIHVzCnBheVRva2VuUmV3YXJkOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICAndGhpcyBjYW4gb25seSBiZSBjYWxsZWQgdmlhIHRoZSB2YWxpZGF0b3IgY29udHJhY3QnLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzkKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ211c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMnKQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgk9PQoKCS8vIG11c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuICE9PSAwLCAnY2FuIG9ubHkgY2xhaW0gdG9rZW4gcmV3YXJkcyBmcm9tIHZhbGlkYXRvciB0aGF0IGhhcyB0aGVtJykKCWZyYW1lX2RpZyAtMiAvLyByZXdhcmRUb2tlbjogdWludDY0CglpbnQgMAoJIT0KCgkvLyBjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pLAoJLy8gICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZCwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pCglmcmFtZV9kaWcgLTIgLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODUKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg2CgkvLyBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCiphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXI6CgkvLyBhbGdvZFZlcjogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGV4ZWN1dGUgdXBkYXRlQWxnb2RWZXIoc3RyaW5nKXZvaWQKCWNhbGxzdWIgdXBkYXRlQWxnb2RWZXIKCWludCAxCglyZXR1cm4KCi8vIHVwZGF0ZUFsZ29kVmVyKGFsZ29kVmVyOiBzdHJpbmcpOiB2b2lkCi8vCi8vIFVwZGF0ZSB0aGUgKGhvbm9yIHN5c3RlbSkgYWxnb2QgdmVyc2lvbiBmb3IgdGhlIG5vZGUgYXNzb2NpYXRlZCB0byB0aGlzIHBvb2wuICBUaGUgbm9kZSBtYW5hZ2VtZW50IGRhZW1vbgovLyBzaG91bGQgY29tcGFyZSBpdHMgY3VycmVudCBub2RlcyB2ZXJzaW9uIHRvIHRoZSB2ZXJzaW9uIHN0b3JlZCBpbiBnbG9iYWwgc3RhdGUsIHVwZGF0aW5nIHdoZW4gZGlmZmVyZW50LgovLyBUaGUgcmV0aSBub2RlIGRhZW1vbiBjb21wb3NlcyBpdHMgb3duIHZlcnNpb24gc3RyaW5nIHVzaW5nIGZvcm1hdDoKLy8ge21ham9yfS57bWlub3J9LntidWlsZH0ge2JyYW5jaH0gW3tjb21taXQgaGFzaH1dLAovLyBpZTogMy4yMi4wIHJlbC9zdGFibGUgWzZiNTA4OTc1XQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0FMTCBdCi8vIEBwYXJhbSB7c3RyaW5nfSBhbGdvZFZlciAtIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFsZ29yYW5kIG5vZGUgZGFlbW9uIHZlcnNpb24gKHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biBtZXRhIHZlcnNpb24pCnVwZGF0ZUFsZ29kVmVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAwCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MDEKCS8vIHRoaXMuYWxnb2RWZXIudmFsdWUgPSBhbGdvZFZlcgoJYnl0ZSAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50IDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MTYKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjMKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB2YWxpZGF0b3JDb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2OSA0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI0CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAyIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjUKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyOAoJLy8gbGFzdFBheW91dEVwb2NoID0gdGhpcy5sYXN0UGF5b3V0LnZhbHVlIC0gKHRoaXMubGFzdFBheW91dC52YWx1ZSAlIGVwb2NoUm91bmRMZW5ndGgpCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIGxhc3RQYXlvdXRFcG9jaDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTMwCgkvLyBhc3NlcnQobGFzdFBheW91dEVwb2NoICE9PSB0aGlzRXBvY2hCZWdpbiwgImNhbid0IGNhbGwgZXBvY2hCYWxhbmNlVXBkYXRlIGluIHNhbWUgZXBvY2ggYXMgcHJpb3IgY2FsbCIpCglmcmFtZV9kaWcgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMgoJLy8gdGhpcy5jaGVja0lmQmluQ2xvc2VkKCkKCWNhbGxzdWIgY2hlY2tJZkJpbkNsb3NlZAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNQoJLy8gdGhpcy5sYXN0UGF5b3V0LnZhbHVlID0gY3VyUm91bmQKCWJ5dGUgMHg2YzYxNzM3NDUwNjE3OTZmNzU3NCAvLyAibGFzdFBheW91dCIKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTM2CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlICs9IDEKCWJ5dGUgMHg2NTcwNmY2MzY4NGU3NTZkNjI2NTcyIC8vICJlcG9jaE51bWJlciIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50IDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkhPQoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTUxCgkvLyBwb29sT25lQXBwSUQgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFBvb2xBcHBJZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTMKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBwb29sT25lQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1NQoJLy8gcG9vbE9uZUFkZHJlc3MgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkuYWRkcmVzcwoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfYnVyeSA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjIyX2Vsc2UKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjEKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnNldFRva2VuUGF5b3V0UmF0aW8+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTYyCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTY4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjkKCS8vIG1ldGhvZEFyZ3M6IFt7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH1dCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU3NwoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJLQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg4CgkvLyBhbGdvU2F0dXJhdGlvbkFtdCA9IHRoaXMuYWxnb1NhdHVyYXRpb25MZXZlbCgpCgljYWxsc3ViIGFsZ29TYXR1cmF0aW9uTGV2ZWwKCWZyYW1lX2J1cnkgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoKCS8vICppZjIzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk2CgkvLyB2YWxpZGF0b3JTdGF0ZS50b3RhbEFsZ29TdGFrZWQgPiBhbGdvU2F0dXJhdGlvbkFtdAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0Cgk+CglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1OTcKCS8vIGlzUG9vbFNhdHVyYXRlZCA9IHRydWUKCWludCAxCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjAzCgkvLyB0b2tlblJld2FyZEF2YWlsID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA0CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNQoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA2CgkvLyBleGNlc3NUb0ZlZVNpbmsgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA3CgkvLyBpc1Rva2VuRWxpZ2libGUKCWZyYW1lX2RpZyA1IC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA4CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICAgICAgcG9vbE9uZUFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEwIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTMKCS8vIHRva2VuUmV3YXJkQmFsID49IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQKCWZyYW1lX2RpZyAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJPj0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYxOQoJLy8gb3VyUG9vbFBjdE9mV2hvbGUgPSB0b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW3RoaXMucG9vbElkLnZhbHVlIC0gMV0KCWZyYW1lX2RpZyA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCglpbnQgMAoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgktCglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2J1cnkgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYyMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IHdpZGVSYXRpbyhbdmFsaWRhdG9yQ29uZmlnLnJld2FyZFBlclBheW91dCwgb3VyUG9vbFBjdE9mV2hvbGVdLCBbMV8wMDBfMDAwXSkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2MSA4CglidG9pCglmcmFtZV9kaWcgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKKmlmMjVfZW5kOgoKKmlmMjRfZW5kOgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjUKCS8vIHRva2VuUmV3YXJkQXZhaWwgPT09IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzAKCS8vIGFsZ29SZXdhcmRBdmFpbCA8IDFfMDAwXzAwMAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMV8wMDBfMDAwCgk8CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzEKCS8vIGxvZygnIXRva2VuJiYhbm9hbGdvIHRvIHBheScpCglieXRlIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnQgMAoJaW50IDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTUKCS8vIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU2CgkvLyByZWNlaXZlcjogYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS5mZWVTaW5rCgl0eG4gRmlyc3RWYWxpZAoJaW50IDEKCS0KCWJsb2NrIEJsa0ZlZVNpbmsKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTcKCS8vIG5vdGU6ICdwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rJwoJYnl0ZSAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnQgMl8xMDBfMDAwCgk8CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NQoJLy8gbWFuYWdlclRvcE9mZiA9IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDwgMl8xMDBfMDAwID8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgOiAyXzEwMF8wMDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMl8xMDBfMDAwCgk8CglieiAqdGVybmFyeTFfZmFsc2UKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgliICp0ZXJuYXJ5MV9lbmQKCip0ZXJuYXJ5MV9mYWxzZToKCWludCAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODcKCS8vIGFtb3VudDogbWFuYWdlclRvcE9mZgoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODgKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcubWFuYWdlcgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODkKCS8vIG5vdGU6ICd2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcycKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50IDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NAoJLy8gYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgktCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NQoJLy8gcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTc3IDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njk2CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCcKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCA0MDAKCTwKCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDY0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnQgMTAwMAoJKgoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgkvCglmcmFtZV9idXJ5IDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCgkvLyAqaWYzOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1OAoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjAKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnVG9rZW5SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSwgMTAwMF0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI2IC8vIG9yaWdUb2tlblJld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmMzhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzcyCgkvLyBzdGFrZXJSZXdhcmQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ0FsZ29SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlLCAxMDAwXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNSAvLyBvcmlnQWxnb1Jld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc3OAoJLy8gYWxnb1Jld2FyZEF2YWlsIC09IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODEKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDMyIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODIKCS8vIGNtcFN0YWtlci50b3RhbFJld2FyZGVkICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDQwIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODMKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzg1CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk3CgkvLyBuZXdQb29sVG90YWxTdGFrZSA+IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzlfZW5kCgoJLy8gKmlmMzlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoKKmZvcl81OgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl81X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmNDBfZW5kCgoJLy8gKmlmNDBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MDMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgNjQKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgNDggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE5CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDM3IC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCippZjQzX2VuZDoKCS8vICppZjQ0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODIxCgkvLyBhbGdvUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgYWxnb1Jld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI4CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0MCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODMwCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKKmlmNDRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODM0CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl81X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgoqaWYzOV9lbmQ6CgoqaWYzM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDQKCS8vIHJvdW5kc0xlZnRJbkJpbiA9IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIC0gZ2xvYmFscy5yb3VuZAoJYnl0ZSAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IC8vICJiaW5Sb3VuZFN0YXJ0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMzkgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGluY3JlYXNlZFN0YWtlCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ2CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPQoJLy8gICAgICAgICAgICAgdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlICsgKGluY3JlYXNlZFN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZSAweDcyNjU3NzYxNzI2NDQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInJld2FyZEFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU0CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlVXBkYXRlZFZpYVJld2FyZHM+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBnb09ubGluZShwYXksYnl0ZVtdLGJ5dGVbXSxieXRlW10sdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2dvT25saW5lOgoJLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyB2b3RlTGFzdDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdm90ZUZpcnN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBzdGF0ZVByb29mUEs6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBzZWxlY3Rpb25QSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIHZvdGVQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGZlZVBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnQgMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQga2V5cmVnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkyCgkvLyB2b3RlUEs6IHZvdGVQSwoJZnJhbWVfZGlnIC0yIC8vIHZvdGVQSzogYnl0ZXMKCWl0eG5fZmllbGQgVm90ZVBLCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkzCgkvLyBzZWxlY3Rpb25QSzogc2VsZWN0aW9uUEsKCWZyYW1lX2RpZyAtMyAvLyBzZWxlY3Rpb25QSzogYnl0ZXMKCWl0eG5fZmllbGQgU2VsZWN0aW9uUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTQKCS8vIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLCglmcmFtZV9kaWcgLTQgLy8gc3RhdGVQcm9vZlBLOiBieXRlcwoJaXR4bl9maWVsZCBTdGF0ZVByb29mUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTUKCS8vIHZvdGVGaXJzdDogdm90ZUZpcnN0CglmcmFtZV9kaWcgLTUgLy8gdm90ZUZpcnN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUZpcnN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk2CgkvLyB2b3RlTGFzdDogdm90ZUxhc3QKCWZyYW1lX2RpZyAtNiAvLyB2b3RlTGFzdDogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVMYXN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk3CgkvLyB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbgoJZnJhbWVfZGlnIC03IC8vIHZvdGVLZXlEaWx1dGlvbjogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVLZXlEaWx1dGlvbgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5OAoJLy8gZmVlOiBleHRyYUZlZQoJZnJhbWVfZGlnIDAgLy8gZXh0cmFGZWU6IHVpbnQ2NAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT2ZmbGluZSgpdm9pZAoqYWJpX3JvdXRlX2dvT2ZmbGluZToKCS8vIGV4ZWN1dGUgZ29PZmZsaW5lKCl2b2lkCgljYWxsc3ViIGdvT2ZmbGluZQoJaW50IDEKCXJldHVybgoKLy8gZ29PZmZsaW5lKCk6IHZvaWQKLy8KLy8gTWFya3MgYSBzdGFraW5nIHBvb2wga2V5IE9GRkxJTkUuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KZ29PZmZsaW5lOgoJcHJvdG8gMCAwCgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTAKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcwoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMQoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoqaWY0NV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTQKCS8vIHNlbmRPZmZsaW5lS2V5UmVnaXN0cmF0aW9uKHt9KQoJaXR4bl9iZWdpbgoJaW50IGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50IDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjQKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglieXRlIDB4NzY2NTcyNjk2Njc5NWY2ZTY2NjQ1ZjYxNjQ2NDcyIC8vICJ2ZXJpZnlfbmZkX2FkZHIiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI2CgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElkKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgcG9vbHMgIT0gMSAtIGNhbGxpbmcgVVMsIHBvb2wgIzEKLy8gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSBhcmUgaW4gZmFjdCBiZWluZyBjYWxsZWQgYnkgYW5vdGhlciBvZiBPVVIgcG9vbHMgKG5vdCB1cykKLy8gYW5kIHRoZW4gd2UnbGwgY2FsbCB0aGUgdmFsaWRhdG9yIG9uIHRoZWlyIGJlaGFsZiB0byB1cGRhdGUgdGhlIHRva2VuIHBheW91dHMKLy8gQHBhcmFtIHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR1cGxlCnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzcKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvcklkLnZhbHVlID09PSBwb29sS2V5LmlkLCAnY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhJykKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzgKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ2NhbGxlZSBtdXN0IGJlIHBvb2wgMScpCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgoJLy8gY2FsbGVlIG11c3QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzkKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCAhPT0gMSwgJ2NhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJIT0KCgkvLyBjYWxsZXIgbXVzdCBOT1QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDEKCS8vIGNhbGxlclBvb2xBcHBJRCA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0UG9vbEFwcElkPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDkKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTUwCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCk6IGJvb2xlYW4KaXNPd25lck9yTWFuYWdlckNhbGxlcjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU1CgkvLyBPd25lckFuZE1hbmFnZXIgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcj4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU3CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTkKCS8vIHJldHVybiB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclswXSB8fCB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclsxXQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAwIDMyCgk9PQoJZHVwCglibnogKnNraXBfb3IyCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCglleHRyYWN0IDMyIDMyCgk9PQoJfHwKCipza2lwX29yMjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnQgMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoKCS8vICppZjQ3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTg5CgkvLyBnbG9iYWxzLnJvdW5kID49IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIChjdXJyZW50QmluU2l6ZSBhcyB1aW50NjQpCglnbG9iYWwgUm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gY3VycmVudEJpblNpemUgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludCA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCgkrCgk+PQoJYnogKmlmNDdfZW5kCgoJLy8gKmlmNDdfY29uc2VxdWVudAoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTAKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgMzAwCgk8CglieiAqaWY0OF9lbmQKCgkvLyAqaWY0OF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTEKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGUgYjY0IENvRUIgLy8gI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50IERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjQ4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MwoJLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOCA9IGN1cnJlbnRCaW5TaXplICogKDM2NSBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNmQKCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyBjdXJyZW50QmluU2l6ZSAqICgzNjUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk0CgkvLyBhdmdTdGFrZTogdWludDEyOCA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAvIGN1cnJlbnRCaW5TaXplCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYiE9CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTkKCS8vIGFwcjogdWludDEyOCA9CgkvLyAgICAgICAgICAgICAgICAgICAgICgoKHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgYXMgdWludDEyOCkgKiAoMTAwMDAgYXMgdWludDEyOCkpIC8gYXZnU3Rha2UpICoKCS8vICAgICAgICAgICAgICAgICAgICAgKGFwcHJveFJvdW5kc1BlclllYXIgLyBjdXJyZW50QmluU2l6ZSkKCWJ5dGUgMHg3MjY1Nzc2MTcyNjQ0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJyZXdhcmRBY2N1bXVsYXRvciIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAKCWIqCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYi8KCWZyYW1lX2RpZyAxIC8vIGFwcHJveFJvdW5kc1BlclllYXI6IHVpbnQxMjgKCWZyYW1lX2RpZyAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoJYi8KCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqXG4gICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDMgLy8gYXByOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwMwoJLy8gYWxwaGE6IHVpbnQxMjggPSAxMCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NWQ5NjRiODAwCgliPgoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwNgoJLy8gYWxwaGEgPSA5MCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNWEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCippZjUwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDgKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0KCS8vICAgICAgICAgICAgICAgICAgICAgKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpCglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYi0KCWIqCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJYi8KCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAodGhpcy53ZWlnaHRlZE1vdmluZ0F2ZXJhZ2UudmFsdWUgKiAoKDEwMCBhcyB1aW50MTI4KSAtIGFscGhhKSkgLyAoMTAwIGFzIHVpbnQxMjgpICtcbiAgICAgICAgICAgICAgICAgICAgKGFwciAqIGFscGhhKSAvICgxMDAgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoqaWY0OV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE0CgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9ICh0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSBhcyB1aW50MTI4KSAqICh0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIGFzIHVpbnQxMjgpICogKHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTYKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCippZjQ3X2VuZDoKCXJldHN1YgoKLy8gc2V0Um91bmRzUGVyRGF5KCk6IHZvaWQKc2V0Um91bmRzUGVyRGF5OgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjYKCS8vIHRoaXMudHhuLmZpcnN0VmFsaWQgPCAxMgoJdHhuIEZpcnN0VmFsaWQKCWludCAxMgoJPAoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOAoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglpbnQgMzA4NTcKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOQoJLy8gcmV0dXJuCglyZXRzdWIKCippZjUxX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzIKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9CgkvLyAgICAgICAgICAgICBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLnRpbWVzdGFtcCAtIGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMTFdLnRpbWVzdGFtcAoJdHhuIEZpcnN0VmFsaWQKCWludCAxCgktCglibG9jayBCbGtUaW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnQgMTEKCS0KCWJsb2NrIEJsa1RpbWVzdGFtcAoJLQoJZnJhbWVfYnVyeSAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM0CgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPT09IDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjUyX2VuZAoKCS8vICppZjUyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzYKCS8vIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlID0gQVBQUk9YX0FWR19ST1VORFNfUEVSX0RBWQoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJaW50IDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1Ml9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDQyCgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9ICgyNCAqIDYwICogNjAgKiAxMCkgLyBhdmdCbG9ja1RpbWVUZW50aHMKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJnYXMoKXZvaWQiCgltZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCgltZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCgltZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCgltZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCgltZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfaW5pdFN0b3JhZ2UgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3JlbW92ZVN0YWtlICphYmlfcm91dGVfY2xhaW1Ub2tlbnMgKmFiaV9yb3V0ZV9nZXRTdGFrZXJJbmZvICphYmlfcm91dGVfcGF5VG9rZW5SZXdhcmQgKmFiaV9yb3V0ZV91cGRhdGVBbGdvZFZlciAqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZSAqYWJpX3JvdXRlX2dvT25saW5lICphYmlfcm91dGVfZ29PZmZsaW5lICphYmlfcm91dGVfbGlua1RvTkZEICphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/stakingPool.algo.ts:37","pc":[1,2]},{"teal":16,"source":"contracts/stakingPool.algo.ts:37","pc":[3]},{"teal":17,"source":"contracts/stakingPool.algo.ts:37","pc":[4]},{"teal":18,"source":"contracts/stakingPool.algo.ts:37","pc":[5]},{"teal":19,"source":"contracts/stakingPool.algo.ts:37","pc":[6,7]},{"teal":20,"source":"contracts/stakingPool.algo.ts:37","pc":[8]},{"teal":21,"source":"contracts/stakingPool.algo.ts:37","pc":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]},{"teal":25,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[35]},{"teal":30,"source":"contracts/stakingPool.algo.ts:101","pc":[36,37,38]},{"teal":31,"source":"contracts/stakingPool.algo.ts:101","pc":[39]},{"teal":34,"source":"contracts/stakingPool.algo.ts:101","pc":[40,41,42]},{"teal":35,"source":"contracts/stakingPool.algo.ts:101","pc":[43]},{"teal":38,"source":"contracts/stakingPool.algo.ts:101","pc":[44,45,46]},{"teal":39,"source":"contracts/stakingPool.algo.ts:101","pc":[47]},{"teal":42,"source":"contracts/stakingPool.algo.ts:101","pc":[48,49,50]},{"teal":43,"source":"contracts/stakingPool.algo.ts:101","pc":[51]},{"teal":46,"source":"contracts/stakingPool.algo.ts:101","pc":[52,53,54]},{"teal":47,"source":"contracts/stakingPool.algo.ts:101","pc":[55]},{"teal":48,"source":"contracts/stakingPool.algo.ts:101","pc":[56]},{"teal":58,"source":"contracts/stakingPool.algo.ts:101","pc":[57,58,59]},{"teal":63,"source":"contracts/stakingPool.algo.ts:102","pc":[60,61]},{"teal":64,"source":"contracts/stakingPool.algo.ts:102","pc":[62]},{"teal":65,"source":"contracts/stakingPool.algo.ts:102","pc":[63]},{"teal":66,"source":"contracts/stakingPool.algo.ts:102","pc":[64,65,66]},{"teal":71,"source":"contracts/stakingPool.algo.ts:104","pc":[67,68]},{"teal":72,"source":"contracts/stakingPool.algo.ts:104","pc":[69]},{"teal":73,"source":"contracts/stakingPool.algo.ts:104","pc":[70]},{"teal":74,"source":"contracts/stakingPool.algo.ts:104","pc":[71]},{"teal":78,"source":"contracts/stakingPool.algo.ts:105","pc":[72,73]},{"teal":79,"source":"contracts/stakingPool.algo.ts:105","pc":[74]},{"teal":80,"source":"contracts/stakingPool.algo.ts:105","pc":[75]},{"teal":81,"source":"contracts/stakingPool.algo.ts:105","pc":[76]},{"teal":82,"source":"contracts/stakingPool.algo.ts:102","pc":[77,78,79]},{"teal":87,"source":"contracts/stakingPool.algo.ts:107","pc":[80,81]},{"teal":88,"source":"contracts/stakingPool.algo.ts:107","pc":[82]},{"teal":89,"source":"contracts/stakingPool.algo.ts:107","pc":[83]},{"teal":90,"source":"contracts/stakingPool.algo.ts:107","pc":[84]},{"teal":94,"source":"contracts/stakingPool.algo.ts:108","pc":[85,86]},{"teal":95,"source":"contracts/stakingPool.algo.ts:108","pc":[87]},{"teal":96,"source":"contracts/stakingPool.algo.ts:108","pc":[88]},{"teal":97,"source":"contracts/stakingPool.algo.ts:108","pc":[89]},{"teal":102,"source":"contracts/stakingPool.algo.ts:110","pc":[90,91]},{"teal":103,"source":"contracts/stakingPool.algo.ts:110","pc":[92,93,94,95]},{"teal":104,"source":"contracts/stakingPool.algo.ts:110","pc":[96]},{"teal":107,"source":"contracts/stakingPool.algo.ts:110","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[97]},{"teal":111,"source":"contracts/stakingPool.algo.ts:111","pc":[98]},{"teal":112,"source":"contracts/stakingPool.algo.ts:111","pc":[99,100]},{"teal":113,"source":"contracts/stakingPool.algo.ts:111","pc":[101]},{"teal":117,"source":"contracts/stakingPool.algo.ts:112","pc":[102]},{"teal":118,"source":"contracts/stakingPool.algo.ts:112","pc":[103,104]},{"teal":119,"source":"contracts/stakingPool.algo.ts:112","pc":[105]},{"teal":123,"source":"contracts/stakingPool.algo.ts:113","pc":[106,107]},{"teal":124,"source":"contracts/stakingPool.algo.ts:113","pc":[108,109]},{"teal":125,"source":"contracts/stakingPool.algo.ts:113","pc":[110]},{"teal":129,"source":"contracts/stakingPool.algo.ts:114","pc":[111,112]},{"teal":130,"source":"contracts/stakingPool.algo.ts:114","pc":[113]},{"teal":131,"source":"contracts/stakingPool.algo.ts:114","pc":[114]},{"teal":135,"source":"contracts/stakingPool.algo.ts:115","pc":[115,116]},{"teal":136,"source":"contracts/stakingPool.algo.ts:115","pc":[117]},{"teal":137,"source":"contracts/stakingPool.algo.ts:115","pc":[118]},{"teal":141,"source":"contracts/stakingPool.algo.ts:116","pc":[119,120]},{"teal":142,"source":"contracts/stakingPool.algo.ts:116","pc":[121,122]},{"teal":143,"source":"contracts/stakingPool.algo.ts:116","pc":[123]},{"teal":147,"source":"contracts/stakingPool.algo.ts:117","pc":[124,125]},{"teal":148,"source":"contracts/stakingPool.algo.ts:117","pc":[126,127]},{"teal":149,"source":"contracts/stakingPool.algo.ts:117","pc":[128]},{"teal":153,"source":"contracts/stakingPool.algo.ts:118","pc":[129,130]},{"teal":154,"source":"contracts/stakingPool.algo.ts:118","pc":[131]},{"teal":155,"source":"contracts/stakingPool.algo.ts:118","pc":[132]},{"teal":159,"source":"contracts/stakingPool.algo.ts:120","pc":[133,134,135]},{"teal":163,"source":"contracts/stakingPool.algo.ts:121","pc":[136,137]},{"teal":164,"source":"contracts/stakingPool.algo.ts:121","pc":[138,139]},{"teal":165,"source":"contracts/stakingPool.algo.ts:121","pc":[140,141]},{"teal":166,"source":"contracts/stakingPool.algo.ts:121","pc":[142,143]},{"teal":167,"source":"contracts/stakingPool.algo.ts:121","pc":[144]},{"teal":168,"source":"contracts/stakingPool.algo.ts:121","pc":[145]},{"teal":169,"source":"contracts/stakingPool.algo.ts:121","pc":[146]},{"teal":170,"source":"contracts/stakingPool.algo.ts:121","pc":[147]},{"teal":174,"source":"contracts/stakingPool.algo.ts:122","pc":[148,149]},{"teal":175,"source":"contracts/stakingPool.algo.ts:122","pc":[150,151]},{"teal":176,"source":"contracts/stakingPool.algo.ts:122","pc":[152]},{"teal":180,"source":"contracts/stakingPool.algo.ts:123","pc":[153,154]},{"teal":181,"source":"contracts/stakingPool.algo.ts:123","pc":[155]},{"teal":182,"source":"contracts/stakingPool.algo.ts:123","pc":[156]},{"teal":186,"source":"contracts/stakingPool.algo.ts:124","pc":[157,158]},{"teal":187,"source":"contracts/stakingPool.algo.ts:124","pc":[159,160]},{"teal":188,"source":"contracts/stakingPool.algo.ts:124","pc":[161]},{"teal":189,"source":"contracts/stakingPool.algo.ts:101","pc":[162]},{"teal":194,"source":"contracts/stakingPool.algo.ts:130","pc":[163,164,165]},{"teal":195,"source":"contracts/stakingPool.algo.ts:130","pc":[166]},{"teal":196,"source":"contracts/stakingPool.algo.ts:130","pc":[167]},{"teal":202,"source":"contracts/stakingPool.algo.ts:130","pc":[168,169,170]},{"teal":203,"source":"contracts/stakingPool.algo.ts:130","pc":[171]},{"teal":207,"source":"contracts/stakingPool.algo.ts:132","pc":[172,173,174]},{"teal":211,"source":"contracts/stakingPool.algo.ts:136","pc":[175,176,177]},{"teal":212,"source":"contracts/stakingPool.algo.ts:136","pc":[178,179]},{"teal":213,"source":"contracts/stakingPool.algo.ts:136","pc":[180,181]},{"teal":214,"source":"contracts/stakingPool.algo.ts:136","pc":[182]},{"teal":215,"source":"contracts/stakingPool.algo.ts:136","pc":[183]},{"teal":216,"source":"contracts/stakingPool.algo.ts:132","pc":[184]},{"teal":221,"source":"contracts/stakingPool.algo.ts:146","pc":[185,186]},{"teal":222,"source":"contracts/stakingPool.algo.ts:146","pc":[187]},{"teal":223,"source":"contracts/stakingPool.algo.ts:146","pc":[188]},{"teal":224,"source":"contracts/stakingPool.algo.ts:146","pc":[189]},{"teal":225,"source":"contracts/stakingPool.algo.ts:146","pc":[190,191]},{"teal":226,"source":"contracts/stakingPool.algo.ts:146","pc":[192]},{"teal":227,"source":"contracts/stakingPool.algo.ts:146","pc":[193]},{"teal":230,"source":"contracts/stakingPool.algo.ts:146","errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[194]},{"teal":233,"source":"contracts/stakingPool.algo.ts:146","pc":[195,196,197]},{"teal":234,"source":"contracts/stakingPool.algo.ts:146","pc":[198]},{"teal":235,"source":"contracts/stakingPool.algo.ts:146","pc":[199]},{"teal":245,"source":"contracts/stakingPool.algo.ts:146","pc":[200,201,202]},{"teal":248,"source":"contracts/stakingPool.algo.ts:146","pc":[203]},{"teal":249,"source":"contracts/stakingPool.algo.ts:146","pc":[204,205]},{"teal":253,"source":"contracts/stakingPool.algo.ts:147","pc":[206]},{"teal":254,"source":"contracts/stakingPool.algo.ts:147","pc":[207]},{"teal":255,"source":"contracts/stakingPool.algo.ts:147","pc":[208]},{"teal":256,"source":"contracts/stakingPool.algo.ts:147","pc":[209]},{"teal":257,"source":"contracts/stakingPool.algo.ts:147","pc":[210]},{"teal":260,"source":"contracts/stakingPool.algo.ts:147","errorMessage":"staking pool already initialized","pc":[211]},{"teal":267,"source":"contracts/stakingPool.algo.ts:150","pc":[212]},{"teal":268,"source":"contracts/stakingPool.algo.ts:150","pc":[213]},{"teal":269,"source":"contracts/stakingPool.algo.ts:150","pc":[214,215]},{"teal":270,"source":"contracts/stakingPool.algo.ts:150","pc":[216,217]},{"teal":271,"source":"contracts/stakingPool.algo.ts:150","pc":[218,219]},{"teal":275,"source":"contracts/stakingPool.algo.ts:151","pc":[220]},{"teal":276,"source":"contracts/stakingPool.algo.ts:151","pc":[221]},{"teal":277,"source":"contracts/stakingPool.algo.ts:151","pc":[222,223]},{"teal":281,"source":"contracts/stakingPool.algo.ts:152","pc":[224]},{"teal":282,"source":"contracts/stakingPool.algo.ts:152","pc":[225]},{"teal":283,"source":"contracts/stakingPool.algo.ts:152","pc":[226]},{"teal":284,"source":"contracts/stakingPool.algo.ts:152","pc":[227,228]},{"teal":287,"source":"contracts/stakingPool.algo.ts:150","pc":[229]},{"teal":288,"source":"contracts/stakingPool.algo.ts:150","pc":[230,231]},{"teal":291,"source":"contracts/stakingPool.algo.ts:150","pc":[232]},{"teal":292,"source":"contracts/stakingPool.algo.ts:150","pc":[233,234]},{"teal":293,"source":"contracts/stakingPool.algo.ts:150","pc":[235]},{"teal":294,"source":"contracts/stakingPool.algo.ts:150","pc":[236]},{"teal":295,"source":"contracts/stakingPool.algo.ts:150","pc":[237,238]},{"teal":296,"source":"contracts/stakingPool.algo.ts:150","pc":[239,240,241]},{"teal":297,"source":"contracts/stakingPool.algo.ts:150","pc":[242,243]},{"teal":301,"source":"contracts/stakingPool.algo.ts:154","pc":[244,245]},{"teal":302,"source":"contracts/stakingPool.algo.ts:154","pc":[246,247,248]},{"teal":303,"source":"contracts/stakingPool.algo.ts:154","pc":[249]},{"teal":304,"source":"contracts/stakingPool.algo.ts:154","pc":[250]},{"teal":305,"source":"contracts/stakingPool.algo.ts:154","pc":[251]},{"teal":306,"source":"contracts/stakingPool.algo.ts:154","pc":[252,253]},{"teal":310,"source":"contracts/stakingPool.algo.ts:155","pc":[254,255]},{"teal":311,"source":"contracts/stakingPool.algo.ts:155","pc":[256]},{"teal":312,"source":"contracts/stakingPool.algo.ts:155","pc":[257,258,259]},{"teal":313,"source":"contracts/stakingPool.algo.ts:155","pc":[260,261]},{"teal":314,"source":"contracts/stakingPool.algo.ts:155","pc":[262]},{"teal":315,"source":"contracts/stakingPool.algo.ts:155","pc":[263]},{"teal":316,"source":"contracts/stakingPool.algo.ts:155","pc":[264]},{"teal":317,"source":"contracts/stakingPool.algo.ts:155","pc":[265]},{"teal":320,"source":"contracts/stakingPool.algo.ts:155","pc":[266,267,268]},{"teal":321,"source":"contracts/stakingPool.algo.ts:155","pc":[269,270]},{"teal":322,"source":"contracts/stakingPool.algo.ts:155","pc":[271,272,273]},{"teal":325,"source":"contracts/stakingPool.algo.ts:155","pc":[274]},{"teal":328,"source":"contracts/stakingPool.algo.ts:155","pc":[275,276]},{"teal":335,"source":"contracts/stakingPool.algo.ts:157","pc":[277,278]},{"teal":336,"source":"contracts/stakingPool.algo.ts:158","pc":[279,280]},{"teal":337,"source":"contracts/stakingPool.algo.ts:157","pc":[281]},{"teal":338,"source":"contracts/stakingPool.algo.ts:159","pc":[282,283,284]},{"teal":339,"source":"contracts/stakingPool.algo.ts:159","pc":[285,286,287]},{"teal":340,"source":"contracts/stakingPool.algo.ts:158","pc":[288]},{"teal":341,"source":"contracts/stakingPool.algo.ts:156","pc":[289,290]},{"teal":346,"source":"contracts/stakingPool.algo.ts:162","pc":[291,292]},{"teal":347,"source":"contracts/stakingPool.algo.ts:162","pc":[293,294]},{"teal":348,"source":"contracts/stakingPool.algo.ts:162","pc":[295,296]},{"teal":349,"source":"contracts/stakingPool.algo.ts:162","pc":[297]},{"teal":352,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[298]},{"teal":355,"source":"contracts/stakingPool.algo.ts:162","pc":[299,300]},{"teal":356,"source":"contracts/stakingPool.algo.ts:162","pc":[301,302]},{"teal":357,"source":"contracts/stakingPool.algo.ts:162","pc":[303,304]},{"teal":358,"source":"contracts/stakingPool.algo.ts:162","pc":[305]},{"teal":361,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[306]},{"teal":365,"source":"contracts/stakingPool.algo.ts:163","pc":[307]},{"teal":366,"source":"contracts/stakingPool.algo.ts:163","pc":[308,309,310]},{"teal":367,"source":"contracts/stakingPool.algo.ts:163","pc":[311]},{"teal":368,"source":"contracts/stakingPool.algo.ts:163","pc":[312]},{"teal":373,"source":"contracts/stakingPool.algo.ts:165","pc":[313,314]},{"teal":374,"source":"contracts/stakingPool.algo.ts:165","pc":[315]},{"teal":375,"source":"contracts/stakingPool.algo.ts:165","pc":[316,317,318]},{"teal":376,"source":"contracts/stakingPool.algo.ts:165","pc":[319,320]},{"teal":377,"source":"contracts/stakingPool.algo.ts:165","pc":[321]},{"teal":378,"source":"contracts/stakingPool.algo.ts:165","pc":[322]},{"teal":379,"source":"contracts/stakingPool.algo.ts:165","pc":[323]},{"teal":380,"source":"contracts/stakingPool.algo.ts:165","pc":[324]},{"teal":383,"source":"contracts/stakingPool.algo.ts:165","pc":[325,326,327]},{"teal":392,"source":"contracts/stakingPool.algo.ts:167","pc":[328]},{"teal":393,"source":"contracts/stakingPool.algo.ts:167","pc":[329,330]},{"teal":394,"source":"contracts/stakingPool.algo.ts:167","pc":[331,332]},{"teal":398,"source":"contracts/stakingPool.algo.ts:168","pc":[333,334]},{"teal":399,"source":"contracts/stakingPool.algo.ts:168","pc":[335,336,337]},{"teal":400,"source":"contracts/stakingPool.algo.ts:168","pc":[338]},{"teal":401,"source":"contracts/stakingPool.algo.ts:168","pc":[339,340]},{"teal":405,"source":"contracts/stakingPool.algo.ts:169","pc":[341,342]},{"teal":406,"source":"contracts/stakingPool.algo.ts:169","pc":[343,344]},{"teal":410,"source":"contracts/stakingPool.algo.ts:170","pc":[345]},{"teal":411,"source":"contracts/stakingPool.algo.ts:170","pc":[346,347]},{"teal":414,"source":"contracts/stakingPool.algo.ts:167","pc":[348]},{"teal":415,"source":"contracts/stakingPool.algo.ts:167","pc":[349,350]},{"teal":418,"source":"contracts/stakingPool.algo.ts:167","pc":[351]},{"teal":421,"source":"contracts/stakingPool.algo.ts:146","pc":[352]},{"teal":426,"source":"contracts/stakingPool.algo.ts:185","pc":[353,354]},{"teal":429,"source":"contracts/stakingPool.algo.ts:185","pc":[355,356,357]},{"teal":430,"source":"contracts/stakingPool.algo.ts:185","pc":[358]},{"teal":431,"source":"contracts/stakingPool.algo.ts:185","pc":[359]},{"teal":432,"source":"contracts/stakingPool.algo.ts:185","pc":[360,361]},{"teal":433,"source":"contracts/stakingPool.algo.ts:185","pc":[362]},{"teal":436,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 0 (staker) for addStake must be a address","pc":[363]},{"teal":439,"source":"contracts/stakingPool.algo.ts:185","pc":[364,365]},{"teal":440,"source":"contracts/stakingPool.algo.ts:185","pc":[366]},{"teal":441,"source":"contracts/stakingPool.algo.ts:185","pc":[367]},{"teal":442,"source":"contracts/stakingPool.algo.ts:185","pc":[368]},{"teal":443,"source":"contracts/stakingPool.algo.ts:185","pc":[369,370]},{"teal":444,"source":"contracts/stakingPool.algo.ts:185","pc":[371]},{"teal":445,"source":"contracts/stakingPool.algo.ts:185","pc":[372]},{"teal":448,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[373]},{"teal":451,"source":"contracts/stakingPool.algo.ts:185","pc":[374,375,376]},{"teal":452,"source":"contracts/stakingPool.algo.ts:185","pc":[377]},{"teal":453,"source":"contracts/stakingPool.algo.ts:185","pc":[378]},{"teal":454,"source":"contracts/stakingPool.algo.ts:185","pc":[379]},{"teal":455,"source":"contracts/stakingPool.algo.ts:185","pc":[380]},{"teal":456,"source":"contracts/stakingPool.algo.ts:185","pc":[381]},{"teal":469,"source":"contracts/stakingPool.algo.ts:185","pc":[382,383,384]},{"teal":472,"source":"contracts/stakingPool.algo.ts:185","pc":[385]},{"teal":473,"source":"contracts/stakingPool.algo.ts:185","pc":[386,387]},{"teal":477,"source":"contracts/stakingPool.algo.ts:186","pc":[388]},{"teal":478,"source":"contracts/stakingPool.algo.ts:186","pc":[389]},{"teal":479,"source":"contracts/stakingPool.algo.ts:186","pc":[390]},{"teal":480,"source":"contracts/stakingPool.algo.ts:186","pc":[391]},{"teal":483,"source":"contracts/stakingPool.algo.ts:186","errorMessage":"staking pool must be initialized first","pc":[392]},{"teal":490,"source":"contracts/stakingPool.algo.ts:190","pc":[393,394]},{"teal":491,"source":"contracts/stakingPool.algo.ts:190","pc":[395]},{"teal":492,"source":"contracts/stakingPool.algo.ts:190","pc":[396]},{"teal":493,"source":"contracts/stakingPool.algo.ts:190","pc":[397,398]},{"teal":494,"source":"contracts/stakingPool.algo.ts:190","pc":[399]},{"teal":495,"source":"contracts/stakingPool.algo.ts:190","pc":[400]},{"teal":498,"source":"contracts/stakingPool.algo.ts:189","errorMessage":"stake can only be added via the validator contract","pc":[401]},{"teal":502,"source":"contracts/stakingPool.algo.ts:193","pc":[402,403]},{"teal":503,"source":"contracts/stakingPool.algo.ts:193","pc":[404,405]},{"teal":504,"source":"contracts/stakingPool.algo.ts:193","pc":[406]},{"teal":505,"source":"contracts/stakingPool.algo.ts:193","pc":[407]},{"teal":509,"source":"contracts/stakingPool.algo.ts:196","pc":[408,409,410]},{"teal":518,"source":"contracts/stakingPool.algo.ts:200","pc":[411,412]},{"teal":519,"source":"contracts/stakingPool.algo.ts:201","pc":[413,414]},{"teal":520,"source":"contracts/stakingPool.algo.ts:201","pc":[415]},{"teal":521,"source":"contracts/stakingPool.algo.ts:201","pc":[416]},{"teal":522,"source":"contracts/stakingPool.algo.ts:201","pc":[417,418]},{"teal":523,"source":"contracts/stakingPool.algo.ts:201","pc":[419]},{"teal":524,"source":"contracts/stakingPool.algo.ts:201","pc":[420]},{"teal":527,"source":"contracts/stakingPool.algo.ts:201","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[421]},{"teal":530,"source":"contracts/stakingPool.algo.ts:200","pc":[422,423]},{"teal":531,"source":"contracts/stakingPool.algo.ts:202","pc":[424,425]},{"teal":532,"source":"contracts/stakingPool.algo.ts:202","pc":[426,427]},{"teal":533,"source":"contracts/stakingPool.algo.ts:202","pc":[428]},{"teal":536,"source":"contracts/stakingPool.algo.ts:202","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[429]},{"teal":539,"source":"contracts/stakingPool.algo.ts:200","pc":[430,431]},{"teal":540,"source":"contracts/stakingPool.algo.ts:203","pc":[432,433]},{"teal":541,"source":"contracts/stakingPool.algo.ts:203","pc":[434,435]},{"teal":542,"source":"contracts/stakingPool.algo.ts:203","pc":[436,437]},{"teal":543,"source":"contracts/stakingPool.algo.ts:203","pc":[438]},{"teal":546,"source":"contracts/stakingPool.algo.ts:203","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[439]},{"teal":550,"source":"contracts/stakingPool.algo.ts:209","pc":[440,441]},{"teal":551,"source":"contracts/stakingPool.algo.ts:209","pc":[442,443,444]},{"teal":552,"source":"contracts/stakingPool.algo.ts:209","pc":[445]},{"teal":553,"source":"contracts/stakingPool.algo.ts:209","pc":[446,447]},{"teal":557,"source":"contracts/stakingPool.algo.ts:210","pc":[448]},{"teal":558,"source":"contracts/stakingPool.algo.ts:210","pc":[449,450]},{"teal":562,"source":"contracts/stakingPool.algo.ts:212","pc":[451,452]},{"teal":563,"source":"contracts/stakingPool.algo.ts:212","pc":[453]},{"teal":564,"source":"contracts/stakingPool.algo.ts:212","pc":[454,455]},{"teal":565,"source":"contracts/stakingPool.algo.ts:212","pc":[456,457]},{"teal":566,"source":"contracts/stakingPool.algo.ts:212","pc":[458]},{"teal":567,"source":"contracts/stakingPool.algo.ts:212","pc":[459,460]},{"teal":568,"source":"contracts/stakingPool.algo.ts:212","pc":[461]},{"teal":569,"source":"contracts/stakingPool.algo.ts:212","pc":[462]},{"teal":573,"source":"contracts/stakingPool.algo.ts:214","pc":[463,464]},{"teal":574,"source":"contracts/stakingPool.algo.ts:214","pc":[465]},{"teal":575,"source":"contracts/stakingPool.algo.ts:214","pc":[466,467]},{"teal":576,"source":"contracts/stakingPool.algo.ts:214","pc":[468]},{"teal":577,"source":"contracts/stakingPool.algo.ts:214","pc":[469]},{"teal":578,"source":"contracts/stakingPool.algo.ts:214","pc":[470,471]},{"teal":579,"source":"contracts/stakingPool.algo.ts:214","pc":[472]},{"teal":580,"source":"contracts/stakingPool.algo.ts:214","pc":[473,474]},{"teal":585,"source":"contracts/stakingPool.algo.ts:215","pc":[475,476]},{"teal":586,"source":"contracts/stakingPool.algo.ts:215","pc":[477]},{"teal":587,"source":"contracts/stakingPool.algo.ts:216","pc":[478]},{"teal":588,"source":"contracts/stakingPool.algo.ts:216","pc":[479,480]},{"teal":589,"source":"contracts/stakingPool.algo.ts:216","pc":[481,482]},{"teal":590,"source":"contracts/stakingPool.algo.ts:216","pc":[483]},{"teal":591,"source":"contracts/stakingPool.algo.ts:216","pc":[484,485]},{"teal":592,"source":"contracts/stakingPool.algo.ts:216","pc":[486]},{"teal":593,"source":"contracts/stakingPool.algo.ts:216","pc":[487]},{"teal":594,"source":"contracts/stakingPool.algo.ts:216","pc":[488]},{"teal":595,"source":"contracts/stakingPool.algo.ts:216","pc":[489]},{"teal":596,"source":"contracts/stakingPool.algo.ts:216","pc":[490]},{"teal":597,"source":"contracts/stakingPool.algo.ts:216","pc":[491,492]},{"teal":598,"source":"contracts/stakingPool.algo.ts:216","pc":[493]},{"teal":601,"source":"contracts/stakingPool.algo.ts:216","errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[494]},{"teal":602,"source":"contracts/stakingPool.algo.ts:216","pc":[495,496]},{"teal":603,"source":"contracts/stakingPool.algo.ts:216","pc":[497]},{"teal":604,"source":"contracts/stakingPool.algo.ts:216","pc":[498]},{"teal":605,"source":"contracts/stakingPool.algo.ts:216","pc":[499]},{"teal":606,"source":"contracts/stakingPool.algo.ts:216","pc":[500]},{"teal":607,"source":"contracts/stakingPool.algo.ts:216","pc":[501,502]},{"teal":608,"source":"contracts/stakingPool.algo.ts:216","pc":[503]},{"teal":609,"source":"contracts/stakingPool.algo.ts:216","pc":[504]},{"teal":610,"source":"contracts/stakingPool.algo.ts:216","pc":[505]},{"teal":611,"source":"contracts/stakingPool.algo.ts:215","pc":[506]},{"teal":615,"source":"contracts/stakingPool.algo.ts:219","pc":[507]},{"teal":616,"source":"contracts/stakingPool.algo.ts:219","pc":[508,509]},{"teal":621,"source":"contracts/stakingPool.algo.ts:219","pc":[510,511]},{"teal":622,"source":"contracts/stakingPool.algo.ts:219","pc":[512,513]},{"teal":623,"source":"contracts/stakingPool.algo.ts:219","pc":[514]},{"teal":624,"source":"contracts/stakingPool.algo.ts:219","pc":[515,516,517]},{"teal":629,"source":"contracts/stakingPool.algo.ts:220","pc":[518,519]},{"teal":630,"source":"contracts/stakingPool.algo.ts:220","pc":[520,521]},{"teal":631,"source":"contracts/stakingPool.algo.ts:220","pc":[522]},{"teal":632,"source":"contracts/stakingPool.algo.ts:220","pc":[523,524,525]},{"teal":637,"source":"contracts/stakingPool.algo.ts:221","pc":[526]},{"teal":638,"source":"contracts/stakingPool.algo.ts:221","pc":[527]},{"teal":639,"source":"contracts/stakingPool.algo.ts:221","pc":[528,529]},{"teal":640,"source":"contracts/stakingPool.algo.ts:221","pc":[530]},{"teal":641,"source":"contracts/stakingPool.algo.ts:221","pc":[531,532]},{"teal":642,"source":"contracts/stakingPool.algo.ts:221","pc":[533,534]},{"teal":643,"source":"contracts/stakingPool.algo.ts:221","pc":[535]},{"teal":644,"source":"contracts/stakingPool.algo.ts:221","pc":[536,537]},{"teal":645,"source":"contracts/stakingPool.algo.ts:221","pc":[538,539]},{"teal":646,"source":"contracts/stakingPool.algo.ts:221","pc":[540,541]},{"teal":647,"source":"contracts/stakingPool.algo.ts:221","pc":[542,543]},{"teal":648,"source":"contracts/stakingPool.algo.ts:221","pc":[544]},{"teal":653,"source":"contracts/stakingPool.algo.ts:223","pc":[545,546]},{"teal":654,"source":"contracts/stakingPool.algo.ts:223","pc":[547]},{"teal":655,"source":"contracts/stakingPool.algo.ts:223","pc":[548]},{"teal":656,"source":"contracts/stakingPool.algo.ts:223","pc":[549]},{"teal":657,"source":"contracts/stakingPool.algo.ts:223","pc":[550]},{"teal":658,"source":"contracts/stakingPool.algo.ts:223","pc":[551,552]},{"teal":659,"source":"contracts/stakingPool.algo.ts:223","pc":[553]},{"teal":660,"source":"contracts/stakingPool.algo.ts:223","pc":[554,555]},{"teal":665,"source":"contracts/stakingPool.algo.ts:224","pc":[556,557]},{"teal":666,"source":"contracts/stakingPool.algo.ts:224","pc":[558,559,560]},{"teal":667,"source":"contracts/stakingPool.algo.ts:224","pc":[561,562]},{"teal":668,"source":"contracts/stakingPool.algo.ts:224","pc":[563]},{"teal":669,"source":"contracts/stakingPool.algo.ts:224","pc":[564,565,566]},{"teal":674,"source":"contracts/stakingPool.algo.ts:226","pc":[567,568]},{"teal":675,"source":"contracts/stakingPool.algo.ts:226","pc":[569,570]},{"teal":676,"source":"contracts/stakingPool.algo.ts:226","pc":[571,572]},{"teal":677,"source":"contracts/stakingPool.algo.ts:226","pc":[573,574,575]},{"teal":678,"source":"contracts/stakingPool.algo.ts:226","pc":[576]},{"teal":679,"source":"contracts/stakingPool.algo.ts:226","pc":[577,578]},{"teal":680,"source":"contracts/stakingPool.algo.ts:226","pc":[579,580]},{"teal":681,"source":"contracts/stakingPool.algo.ts:226","pc":[581]},{"teal":682,"source":"contracts/stakingPool.algo.ts:226","pc":[582]},{"teal":683,"source":"contracts/stakingPool.algo.ts:226","pc":[583]},{"teal":684,"source":"contracts/stakingPool.algo.ts:226","pc":[584,585]},{"teal":688,"source":"contracts/stakingPool.algo.ts:227","pc":[586,587]},{"teal":689,"source":"contracts/stakingPool.algo.ts:227","pc":[588,589]},{"teal":690,"source":"contracts/stakingPool.algo.ts:227","pc":[590,591]},{"teal":691,"source":"contracts/stakingPool.algo.ts:227","pc":[592]},{"teal":692,"source":"contracts/stakingPool.algo.ts:227","pc":[593]},{"teal":693,"source":"contracts/stakingPool.algo.ts:227","pc":[594,595]},{"teal":697,"source":"contracts/stakingPool.algo.ts:230","pc":[596,597]},{"teal":698,"source":"contracts/stakingPool.algo.ts:230","pc":[598]},{"teal":699,"source":"contracts/stakingPool.algo.ts:230","pc":[599]},{"teal":700,"source":"contracts/stakingPool.algo.ts:230","pc":[600,601]},{"teal":701,"source":"contracts/stakingPool.algo.ts:230","pc":[602]},{"teal":702,"source":"contracts/stakingPool.algo.ts:230","pc":[603,604]},{"teal":703,"source":"contracts/stakingPool.algo.ts:230","pc":[605]},{"teal":707,"source":"contracts/stakingPool.algo.ts:232","pc":[606,607]},{"teal":708,"source":"contracts/stakingPool.algo.ts:232","pc":[608,609,610]},{"teal":714,"source":"contracts/stakingPool.algo.ts:234","pc":[611,612]},{"teal":715,"source":"contracts/stakingPool.algo.ts:234","pc":[613]},{"teal":716,"source":"contracts/stakingPool.algo.ts:234","pc":[614]},{"teal":717,"source":"contracts/stakingPool.algo.ts:234","pc":[615]},{"teal":718,"source":"contracts/stakingPool.algo.ts:234","pc":[616,617,618]},{"teal":719,"source":"contracts/stakingPool.algo.ts:234","pc":[619,620]},{"teal":720,"source":"contracts/stakingPool.algo.ts:234","pc":[621,622,623]},{"teal":721,"source":"contracts/stakingPool.algo.ts:234","pc":[624,625]},{"teal":722,"source":"contracts/stakingPool.algo.ts:234","pc":[626]},{"teal":723,"source":"contracts/stakingPool.algo.ts:234","pc":[627]},{"teal":726,"source":"contracts/stakingPool.algo.ts:234","pc":[628,629,630]},{"teal":731,"source":"contracts/stakingPool.algo.ts:235","pc":[631,632]},{"teal":732,"source":"contracts/stakingPool.algo.ts:235","pc":[633]},{"teal":733,"source":"contracts/stakingPool.algo.ts:235","pc":[634]},{"teal":734,"source":"contracts/stakingPool.algo.ts:235","pc":[635,636]},{"teal":741,"source":"contracts/stakingPool.algo.ts:219","pc":[637,638]},{"teal":742,"source":"contracts/stakingPool.algo.ts:219","pc":[639]},{"teal":743,"source":"contracts/stakingPool.algo.ts:219","pc":[640]},{"teal":744,"source":"contracts/stakingPool.algo.ts:219","pc":[641,642]},{"teal":745,"source":"contracts/stakingPool.algo.ts:219","pc":[643,644,645]},{"teal":751,"source":"contracts/stakingPool.algo.ts:239","pc":[646,647]},{"teal":752,"source":"contracts/stakingPool.algo.ts:239","pc":[648]},{"teal":753,"source":"contracts/stakingPool.algo.ts:239","pc":[649]},{"teal":754,"source":"contracts/stakingPool.algo.ts:239","pc":[650,651,652]},{"teal":758,"source":"contracts/stakingPool.algo.ts:241","errorMessage":"Staking pool full","pc":[653]},{"teal":763,"source":"contracts/stakingPool.algo.ts:246","pc":[654,655]},{"teal":764,"source":"contracts/stakingPool.algo.ts:246","pc":[656,657]},{"teal":765,"source":"contracts/stakingPool.algo.ts:246","pc":[658,659]},{"teal":766,"source":"contracts/stakingPool.algo.ts:246","pc":[660]},{"teal":767,"source":"contracts/stakingPool.algo.ts:246","pc":[661]},{"teal":770,"source":"contracts/stakingPool.algo.ts:246","errorMessage":"must stake at least the minimum for this pool","pc":[662]},{"teal":774,"source":"contracts/stakingPool.algo.ts:248","pc":[663,664]},{"teal":775,"source":"contracts/stakingPool.algo.ts:248","pc":[665]},{"teal":776,"source":"contracts/stakingPool.algo.ts:248","pc":[666]},{"teal":777,"source":"contracts/stakingPool.algo.ts:248","pc":[667]},{"teal":778,"source":"contracts/stakingPool.algo.ts:248","pc":[668]},{"teal":779,"source":"contracts/stakingPool.algo.ts:248","pc":[669]},{"teal":780,"source":"contracts/stakingPool.algo.ts:248","pc":[670]},{"teal":781,"source":"contracts/stakingPool.algo.ts:248","pc":[671,672]},{"teal":782,"source":"contracts/stakingPool.algo.ts:248","pc":[673]},{"teal":783,"source":"contracts/stakingPool.algo.ts:248","pc":[674,675]},{"teal":784,"source":"contracts/stakingPool.algo.ts:248","pc":[676]},{"teal":785,"source":"contracts/stakingPool.algo.ts:248","pc":[677,678]},{"teal":786,"source":"contracts/stakingPool.algo.ts:248","pc":[679]},{"teal":787,"source":"contracts/stakingPool.algo.ts:248","pc":[680]},{"teal":797,"source":"contracts/stakingPool.algo.ts:249","pc":[681,682]},{"teal":798,"source":"contracts/stakingPool.algo.ts:249","pc":[683]},{"teal":799,"source":"contracts/stakingPool.algo.ts:249","pc":[684]},{"teal":800,"source":"contracts/stakingPool.algo.ts:249","pc":[685]},{"teal":801,"source":"contracts/stakingPool.algo.ts:249","pc":[686]},{"teal":802,"source":"contracts/stakingPool.algo.ts:250","pc":[687,688]},{"teal":803,"source":"contracts/stakingPool.algo.ts:251","pc":[689,690]},{"teal":804,"source":"contracts/stakingPool.algo.ts:251","pc":[691,692]},{"teal":805,"source":"contracts/stakingPool.algo.ts:251","pc":[693]},{"teal":806,"source":"contracts/stakingPool.algo.ts:251","pc":[694]},{"teal":807,"source":"contracts/stakingPool.algo.ts:252","pc":[695,696]},{"teal":808,"source":"contracts/stakingPool.algo.ts:252","pc":[697]},{"teal":809,"source":"contracts/stakingPool.algo.ts:253","pc":[698,699]},{"teal":810,"source":"contracts/stakingPool.algo.ts:253","pc":[700]},{"teal":811,"source":"contracts/stakingPool.algo.ts:254","pc":[701,702]},{"teal":812,"source":"contracts/stakingPool.algo.ts:254","pc":[703]},{"teal":813,"source":"contracts/stakingPool.algo.ts:254","pc":[704]},{"teal":814,"source":"contracts/stakingPool.algo.ts:249","pc":[705]},{"teal":815,"source":"contracts/stakingPool.algo.ts:249","pc":[706,707]},{"teal":816,"source":"contracts/stakingPool.algo.ts:249","pc":[708]},{"teal":820,"source":"contracts/stakingPool.algo.ts:256","pc":[709,710]},{"teal":821,"source":"contracts/stakingPool.algo.ts:256","pc":[711]},{"teal":822,"source":"contracts/stakingPool.algo.ts:256","pc":[712]},{"teal":823,"source":"contracts/stakingPool.algo.ts:256","pc":[713]},{"teal":824,"source":"contracts/stakingPool.algo.ts:256","pc":[714,715]},{"teal":825,"source":"contracts/stakingPool.algo.ts:256","pc":[716]},{"teal":826,"source":"contracts/stakingPool.algo.ts:256","pc":[717]},{"teal":830,"source":"contracts/stakingPool.algo.ts:257","pc":[718,719]},{"teal":834,"source":"contracts/stakingPool.algo.ts:185","pc":[720,721]},{"teal":837,"source":"contracts/stakingPool.algo.ts:185","pc":[722,723]},{"teal":838,"source":"contracts/stakingPool.algo.ts:185","pc":[724]},{"teal":843,"source":"contracts/stakingPool.algo.ts:271","pc":[725,726,727]},{"teal":844,"source":"contracts/stakingPool.algo.ts:271","pc":[728]},{"teal":847,"source":"contracts/stakingPool.algo.ts:271","pc":[729,730,731]},{"teal":848,"source":"contracts/stakingPool.algo.ts:271","pc":[732]},{"teal":849,"source":"contracts/stakingPool.algo.ts:271","pc":[733]},{"teal":850,"source":"contracts/stakingPool.algo.ts:271","pc":[734,735]},{"teal":851,"source":"contracts/stakingPool.algo.ts:271","pc":[736]},{"teal":854,"source":"contracts/stakingPool.algo.ts:271","errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[737]},{"teal":857,"source":"contracts/stakingPool.algo.ts:271","pc":[738,739,740]},{"teal":858,"source":"contracts/stakingPool.algo.ts:271","pc":[741]},{"teal":859,"source":"contracts/stakingPool.algo.ts:271","pc":[742]},{"teal":873,"source":"contracts/stakingPool.algo.ts:271","pc":[743,744,745]},{"teal":876,"source":"contracts/stakingPool.algo.ts:271","pc":[746]},{"teal":877,"source":"contracts/stakingPool.algo.ts:271","pc":[747,748]},{"teal":882,"source":"contracts/stakingPool.algo.ts:274","pc":[749,750]},{"teal":883,"source":"contracts/stakingPool.algo.ts:274","pc":[751,752]},{"teal":884,"source":"contracts/stakingPool.algo.ts:274","pc":[753]},{"teal":885,"source":"contracts/stakingPool.algo.ts:274","pc":[754,755,756]},{"teal":893,"source":"contracts/stakingPool.algo.ts:276","pc":[757,758,759]},{"teal":896,"source":"contracts/stakingPool.algo.ts:275","errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[760]},{"teal":901,"source":"contracts/stakingPool.algo.ts:281","pc":[761,762,763]},{"teal":905,"source":"contracts/stakingPool.algo.ts:283","pc":[764]},{"teal":906,"source":"contracts/stakingPool.algo.ts:283","pc":[765,766]},{"teal":911,"source":"contracts/stakingPool.algo.ts:283","pc":[767,768]},{"teal":912,"source":"contracts/stakingPool.algo.ts:283","pc":[769,770]},{"teal":913,"source":"contracts/stakingPool.algo.ts:283","pc":[771]},{"teal":914,"source":"contracts/stakingPool.algo.ts:283","pc":[772,773,774]},{"teal":919,"source":"contracts/stakingPool.algo.ts:284","pc":[775,776]},{"teal":920,"source":"contracts/stakingPool.algo.ts:284","pc":[777,778]},{"teal":921,"source":"contracts/stakingPool.algo.ts:284","pc":[779]},{"teal":922,"source":"contracts/stakingPool.algo.ts:284","pc":[780,781,782]},{"teal":927,"source":"contracts/stakingPool.algo.ts:285","pc":[783]},{"teal":928,"source":"contracts/stakingPool.algo.ts:285","pc":[784]},{"teal":929,"source":"contracts/stakingPool.algo.ts:285","pc":[785,786]},{"teal":930,"source":"contracts/stakingPool.algo.ts:285","pc":[787]},{"teal":931,"source":"contracts/stakingPool.algo.ts:285","pc":[788,789]},{"teal":932,"source":"contracts/stakingPool.algo.ts:285","pc":[790,791]},{"teal":933,"source":"contracts/stakingPool.algo.ts:285","pc":[792]},{"teal":934,"source":"contracts/stakingPool.algo.ts:285","pc":[793,794]},{"teal":935,"source":"contracts/stakingPool.algo.ts:285","pc":[795,796]},{"teal":936,"source":"contracts/stakingPool.algo.ts:285","pc":[797,798]},{"teal":937,"source":"contracts/stakingPool.algo.ts:285","pc":[799,800]},{"teal":938,"source":"contracts/stakingPool.algo.ts:285","pc":[801]},{"teal":943,"source":"contracts/stakingPool.algo.ts:287","pc":[802,803]},{"teal":944,"source":"contracts/stakingPool.algo.ts:287","pc":[804]},{"teal":945,"source":"contracts/stakingPool.algo.ts:287","pc":[805]},{"teal":946,"source":"contracts/stakingPool.algo.ts:287","pc":[806]},{"teal":947,"source":"contracts/stakingPool.algo.ts:287","pc":[807]},{"teal":948,"source":"contracts/stakingPool.algo.ts:287","pc":[808,809]},{"teal":949,"source":"contracts/stakingPool.algo.ts:287","pc":[810]},{"teal":950,"source":"contracts/stakingPool.algo.ts:287","pc":[811,812]},{"teal":955,"source":"contracts/stakingPool.algo.ts:288","pc":[813,814]},{"teal":956,"source":"contracts/stakingPool.algo.ts:288","pc":[815,816,817]},{"teal":957,"source":"contracts/stakingPool.algo.ts:288","pc":[818,819]},{"teal":958,"source":"contracts/stakingPool.algo.ts:288","pc":[820]},{"teal":959,"source":"contracts/stakingPool.algo.ts:288","pc":[821,822,823]},{"teal":965,"source":"contracts/stakingPool.algo.ts:289","pc":[824,825]},{"teal":966,"source":"contracts/stakingPool.algo.ts:289","pc":[826]},{"teal":967,"source":"contracts/stakingPool.algo.ts:289","pc":[827]},{"teal":968,"source":"contracts/stakingPool.algo.ts:289","pc":[828,829,830]},{"teal":973,"source":"contracts/stakingPool.algo.ts:291","pc":[831,832]},{"teal":974,"source":"contracts/stakingPool.algo.ts:291","pc":[833,834,835]},{"teal":975,"source":"contracts/stakingPool.algo.ts:291","pc":[836]},{"teal":976,"source":"contracts/stakingPool.algo.ts:291","pc":[837,838]},{"teal":982,"source":"contracts/stakingPool.algo.ts:293","pc":[839,840]},{"teal":983,"source":"contracts/stakingPool.algo.ts:293","pc":[841,842,843]},{"teal":984,"source":"contracts/stakingPool.algo.ts:293","pc":[844]},{"teal":985,"source":"contracts/stakingPool.algo.ts:293","pc":[845,846]},{"teal":986,"source":"contracts/stakingPool.algo.ts:293","pc":[847]},{"teal":987,"source":"contracts/stakingPool.algo.ts:293","pc":[848,849,850]},{"teal":991,"source":"contracts/stakingPool.algo.ts:294","errorMessage":"Insufficient balance","pc":[851]},{"teal":996,"source":"contracts/stakingPool.algo.ts:296","pc":[852,853]},{"teal":997,"source":"contracts/stakingPool.algo.ts:296","pc":[854,855]},{"teal":998,"source":"contracts/stakingPool.algo.ts:296","pc":[856,857]},{"teal":999,"source":"contracts/stakingPool.algo.ts:296","pc":[858,859,860]},{"teal":1000,"source":"contracts/stakingPool.algo.ts:296","pc":[861]},{"teal":1001,"source":"contracts/stakingPool.algo.ts:296","pc":[862,863]},{"teal":1002,"source":"contracts/stakingPool.algo.ts:296","pc":[864]},{"teal":1003,"source":"contracts/stakingPool.algo.ts:296","pc":[865]},{"teal":1004,"source":"contracts/stakingPool.algo.ts:296","pc":[866]},{"teal":1005,"source":"contracts/stakingPool.algo.ts:296","pc":[867,868]},{"teal":1009,"source":"contracts/stakingPool.algo.ts:297","pc":[869,870]},{"teal":1010,"source":"contracts/stakingPool.algo.ts:297","pc":[871]},{"teal":1011,"source":"contracts/stakingPool.algo.ts:297","pc":[872,873]},{"teal":1012,"source":"contracts/stakingPool.algo.ts:297","pc":[874]},{"teal":1013,"source":"contracts/stakingPool.algo.ts:297","pc":[875,876]},{"teal":1014,"source":"contracts/stakingPool.algo.ts:297","pc":[877]},{"teal":1015,"source":"contracts/stakingPool.algo.ts:297","pc":[878]},{"teal":1019,"source":"contracts/stakingPool.algo.ts:299","pc":[879]},{"teal":1020,"source":"contracts/stakingPool.algo.ts:299","pc":[880,881]},{"teal":1025,"source":"contracts/stakingPool.algo.ts:300","pc":[882,883]},{"teal":1026,"source":"contracts/stakingPool.algo.ts:300","pc":[884,885,886]},{"teal":1027,"source":"contracts/stakingPool.algo.ts:300","pc":[887]},{"teal":1028,"source":"contracts/stakingPool.algo.ts:300","pc":[888]},{"teal":1029,"source":"contracts/stakingPool.algo.ts:300","pc":[889]},{"teal":1030,"source":"contracts/stakingPool.algo.ts:300","pc":[890,891,892]},{"teal":1036,"source":"contracts/stakingPool.algo.ts:302","pc":[893,894]},{"teal":1037,"source":"contracts/stakingPool.algo.ts:302","pc":[895]},{"teal":1038,"source":"contracts/stakingPool.algo.ts:302","pc":[896]},{"teal":1039,"source":"contracts/stakingPool.algo.ts:302","pc":[897]},{"teal":1040,"source":"contracts/stakingPool.algo.ts:302","pc":[898,899,900]},{"teal":1048,"source":"contracts/stakingPool.algo.ts:303","pc":[901]},{"teal":1049,"source":"contracts/stakingPool.algo.ts:303","pc":[902]},{"teal":1050,"source":"contracts/stakingPool.algo.ts:303","pc":[903,904]},{"teal":1051,"source":"contracts/stakingPool.algo.ts:303","pc":[905,906]},{"teal":1052,"source":"contracts/stakingPool.algo.ts:303","pc":[907,908]},{"teal":1056,"source":"contracts/stakingPool.algo.ts:304","pc":[909]},{"teal":1057,"source":"contracts/stakingPool.algo.ts:304","pc":[910]},{"teal":1058,"source":"contracts/stakingPool.algo.ts:304","pc":[911,912]},{"teal":1062,"source":"contracts/stakingPool.algo.ts:305","pc":[913]},{"teal":1063,"source":"contracts/stakingPool.algo.ts:305","pc":[914]},{"teal":1064,"source":"contracts/stakingPool.algo.ts:305","pc":[915]},{"teal":1065,"source":"contracts/stakingPool.algo.ts:305","pc":[916,917]},{"teal":1068,"source":"contracts/stakingPool.algo.ts:303","pc":[918]},{"teal":1069,"source":"contracts/stakingPool.algo.ts:303","pc":[919,920]},{"teal":1072,"source":"contracts/stakingPool.algo.ts:303","pc":[921]},{"teal":1073,"source":"contracts/stakingPool.algo.ts:303","pc":[922,923]},{"teal":1074,"source":"contracts/stakingPool.algo.ts:303","pc":[924]},{"teal":1075,"source":"contracts/stakingPool.algo.ts:303","pc":[925]},{"teal":1076,"source":"contracts/stakingPool.algo.ts:303","pc":[926,927]},{"teal":1077,"source":"contracts/stakingPool.algo.ts:303","pc":[928,929,930]},{"teal":1078,"source":"contracts/stakingPool.algo.ts:303","pc":[931,932]},{"teal":1086,"source":"contracts/stakingPool.algo.ts:311","pc":[933]},{"teal":1087,"source":"contracts/stakingPool.algo.ts:311","pc":[934,935]},{"teal":1088,"source":"contracts/stakingPool.algo.ts:311","pc":[936,937]},{"teal":1092,"source":"contracts/stakingPool.algo.ts:312","pc":[938,939]},{"teal":1093,"source":"contracts/stakingPool.algo.ts:312","pc":[940,941,942]},{"teal":1094,"source":"contracts/stakingPool.algo.ts:312","pc":[943]},{"teal":1095,"source":"contracts/stakingPool.algo.ts:312","pc":[944,945]},{"teal":1099,"source":"contracts/stakingPool.algo.ts:313","pc":[946,947]},{"teal":1100,"source":"contracts/stakingPool.algo.ts:313","pc":[948,949]},{"teal":1104,"source":"contracts/stakingPool.algo.ts:314","pc":[950,951]},{"teal":1105,"source":"contracts/stakingPool.algo.ts:314","pc":[952,953,954]},{"teal":1106,"source":"contracts/stakingPool.algo.ts:314","pc":[955]},{"teal":1107,"source":"contracts/stakingPool.algo.ts:314","pc":[956,957]},{"teal":1110,"source":"contracts/stakingPool.algo.ts:311","pc":[958]},{"teal":1111,"source":"contracts/stakingPool.algo.ts:311","pc":[959,960]},{"teal":1114,"source":"contracts/stakingPool.algo.ts:311","pc":[961]},{"teal":1118,"source":"contracts/stakingPool.algo.ts:316","pc":[962,963]},{"teal":1119,"source":"contracts/stakingPool.algo.ts:316","pc":[964,965,966]},{"teal":1120,"source":"contracts/stakingPool.algo.ts:316","pc":[967]},{"teal":1121,"source":"contracts/stakingPool.algo.ts:316","pc":[968,969]},{"teal":1125,"source":"contracts/stakingPool.algo.ts:317","pc":[970,971]},{"teal":1126,"source":"contracts/stakingPool.algo.ts:317","pc":[972,973]},{"teal":1127,"source":"contracts/stakingPool.algo.ts:317","pc":[974,975]},{"teal":1128,"source":"contracts/stakingPool.algo.ts:317","pc":[976,977]},{"teal":1129,"source":"contracts/stakingPool.algo.ts:302","pc":[978,979,980]},{"teal":1134,"source":"contracts/stakingPool.algo.ts:322","pc":[981,982]},{"teal":1135,"source":"contracts/stakingPool.algo.ts:322","pc":[983,984,985]},{"teal":1136,"source":"contracts/stakingPool.algo.ts:322","pc":[986]},{"teal":1137,"source":"contracts/stakingPool.algo.ts:322","pc":[987,988]},{"teal":1141,"source":"contracts/stakingPool.algo.ts:323","pc":[989,990]},{"teal":1142,"source":"contracts/stakingPool.algo.ts:323","pc":[991,992]},{"teal":1143,"source":"contracts/stakingPool.algo.ts:323","pc":[993,994]},{"teal":1144,"source":"contracts/stakingPool.algo.ts:323","pc":[995,996]},{"teal":1154,"source":"contracts/stakingPool.algo.ts:329","pc":[997,998]},{"teal":1155,"source":"contracts/stakingPool.algo.ts:329","pc":[999,1000,1001]},{"teal":1156,"source":"contracts/stakingPool.algo.ts:329","pc":[1002]},{"teal":1157,"source":"contracts/stakingPool.algo.ts:329","pc":[1003]},{"teal":1158,"source":"contracts/stakingPool.algo.ts:329","pc":[1004]},{"teal":1159,"source":"contracts/stakingPool.algo.ts:329","pc":[1005]},{"teal":1160,"source":"contracts/stakingPool.algo.ts:329","pc":[1006,1007,1008]},{"teal":1161,"source":"contracts/stakingPool.algo.ts:329","pc":[1009,1010]},{"teal":1162,"source":"contracts/stakingPool.algo.ts:329","pc":[1011,1012,1013]},{"teal":1163,"source":"contracts/stakingPool.algo.ts:329","pc":[1014]},{"teal":1164,"source":"contracts/stakingPool.algo.ts:329","pc":[1015,1016]},{"teal":1165,"source":"contracts/stakingPool.algo.ts:329","pc":[1017]},{"teal":1166,"source":"contracts/stakingPool.algo.ts:329","pc":[1018]},{"teal":1167,"source":"contracts/stakingPool.algo.ts:329","pc":[1019]},{"teal":1171,"source":"contracts/stakingPool.algo.ts:328","errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1020]},{"teal":1179,"source":"contracts/stakingPool.algo.ts:336","pc":[1021]},{"teal":1180,"source":"contracts/stakingPool.algo.ts:336","pc":[1022]},{"teal":1181,"source":"contracts/stakingPool.algo.ts:336","pc":[1023,1024]},{"teal":1185,"source":"contracts/stakingPool.algo.ts:337","pc":[1025,1026]},{"teal":1186,"source":"contracts/stakingPool.algo.ts:337","pc":[1027,1028]},{"teal":1190,"source":"contracts/stakingPool.algo.ts:338","pc":[1029,1030]},{"teal":1191,"source":"contracts/stakingPool.algo.ts:338","pc":[1031,1032]},{"teal":1195,"source":"contracts/stakingPool.algo.ts:339","pc":[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042]},{"teal":1196,"source":"contracts/stakingPool.algo.ts:339","pc":[1043,1044]},{"teal":1199,"source":"contracts/stakingPool.algo.ts:336","pc":[1045]},{"teal":1200,"source":"contracts/stakingPool.algo.ts:336","pc":[1046,1047]},{"teal":1203,"source":"contracts/stakingPool.algo.ts:336","pc":[1048]},{"teal":1207,"source":"contracts/stakingPool.algo.ts:341","pc":[1049]},{"teal":1208,"source":"contracts/stakingPool.algo.ts:341","pc":[1050,1051]},{"teal":1213,"source":"contracts/stakingPool.algo.ts:342","pc":[1052,1053]},{"teal":1214,"source":"contracts/stakingPool.algo.ts:342","pc":[1054,1055,1056]},{"teal":1215,"source":"contracts/stakingPool.algo.ts:342","pc":[1057]},{"teal":1216,"source":"contracts/stakingPool.algo.ts:342","pc":[1058]},{"teal":1217,"source":"contracts/stakingPool.algo.ts:342","pc":[1059]},{"teal":1218,"source":"contracts/stakingPool.algo.ts:342","pc":[1060,1061,1062]},{"teal":1223,"source":"contracts/stakingPool.algo.ts:344","pc":[1063,1064]},{"teal":1224,"source":"contracts/stakingPool.algo.ts:344","pc":[1065]},{"teal":1225,"source":"contracts/stakingPool.algo.ts:344","pc":[1066]},{"teal":1226,"source":"contracts/stakingPool.algo.ts:344","pc":[1067]},{"teal":1227,"source":"contracts/stakingPool.algo.ts:344","pc":[1068,1069]},{"teal":1228,"source":"contracts/stakingPool.algo.ts:344","pc":[1070]},{"teal":1229,"source":"contracts/stakingPool.algo.ts:344","pc":[1071]},{"teal":1233,"source":"contracts/stakingPool.algo.ts:345","pc":[1072,1073]},{"teal":1234,"source":"contracts/stakingPool.algo.ts:345","pc":[1074]},{"teal":1235,"source":"contracts/stakingPool.algo.ts:345","pc":[1075,1076]},{"teal":1236,"source":"contracts/stakingPool.algo.ts:345","pc":[1077]},{"teal":1237,"source":"contracts/stakingPool.algo.ts:345","pc":[1078,1079]},{"teal":1241,"source":"contracts/stakingPool.algo.ts:346","pc":[1080,1081]},{"teal":1242,"source":"contracts/stakingPool.algo.ts:346","pc":[1082,1083]},{"teal":1243,"source":"contracts/stakingPool.algo.ts:346","pc":[1084,1085]},{"teal":1244,"source":"contracts/stakingPool.algo.ts:346","pc":[1086,1087]},{"teal":1248,"source":"contracts/stakingPool.algo.ts:347","pc":[1088,1089]},{"teal":1249,"source":"contracts/stakingPool.algo.ts:347","pc":[1090,1091]},{"teal":1250,"source":"contracts/stakingPool.algo.ts:347","pc":[1092,1093]},{"teal":1251,"source":"contracts/stakingPool.algo.ts:347","pc":[1094,1095]},{"teal":1255,"source":"contracts/stakingPool.algo.ts:348","pc":[1096]},{"teal":1256,"source":"contracts/stakingPool.algo.ts:348","pc":[1097,1098]},{"teal":1261,"source":"contracts/stakingPool.algo.ts:351","pc":[1099,1100]},{"teal":1262,"source":"contracts/stakingPool.algo.ts:351","pc":[1101]},{"teal":1263,"source":"contracts/stakingPool.algo.ts:351","pc":[1102]},{"teal":1264,"source":"contracts/stakingPool.algo.ts:351","pc":[1103,1104]},{"teal":1265,"source":"contracts/stakingPool.algo.ts:351","pc":[1105]},{"teal":1266,"source":"contracts/stakingPool.algo.ts:351","pc":[1106,1107]},{"teal":1267,"source":"contracts/stakingPool.algo.ts:351","pc":[1108]},{"teal":1271,"source":"contracts/stakingPool.algo.ts:353","pc":[1109,1110]},{"teal":1272,"source":"contracts/stakingPool.algo.ts:353","pc":[1111]},{"teal":1273,"source":"contracts/stakingPool.algo.ts:353","pc":[1112,1113]},{"teal":1274,"source":"contracts/stakingPool.algo.ts:353","pc":[1114]},{"teal":1275,"source":"contracts/stakingPool.algo.ts:353","pc":[1115]},{"teal":1276,"source":"contracts/stakingPool.algo.ts:353","pc":[1116,1117]},{"teal":1277,"source":"contracts/stakingPool.algo.ts:353","pc":[1118]},{"teal":1278,"source":"contracts/stakingPool.algo.ts:353","pc":[1119,1120]},{"teal":1282,"source":"contracts/stakingPool.algo.ts:354","pc":[1121,1122]},{"teal":1283,"source":"contracts/stakingPool.algo.ts:354","pc":[1123]},{"teal":1284,"source":"contracts/stakingPool.algo.ts:354","pc":[1124,1125]},{"teal":1285,"source":"contracts/stakingPool.algo.ts:354","pc":[1126]},{"teal":1286,"source":"contracts/stakingPool.algo.ts:354","pc":[1127]},{"teal":1287,"source":"contracts/stakingPool.algo.ts:354","pc":[1128]},{"teal":1288,"source":"contracts/stakingPool.algo.ts:354","pc":[1129]},{"teal":1289,"source":"contracts/stakingPool.algo.ts:354","pc":[1130,1131]},{"teal":1290,"source":"contracts/stakingPool.algo.ts:354","pc":[1132]},{"teal":1293,"source":"contracts/stakingPool.algo.ts:354","errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1133]},{"teal":1294,"source":"contracts/stakingPool.algo.ts:354","pc":[1134,1135]},{"teal":1295,"source":"contracts/stakingPool.algo.ts:354","pc":[1136]},{"teal":1296,"source":"contracts/stakingPool.algo.ts:354","pc":[1137]},{"teal":1297,"source":"contracts/stakingPool.algo.ts:354","pc":[1138]},{"teal":1298,"source":"contracts/stakingPool.algo.ts:354","pc":[1139]},{"teal":1299,"source":"contracts/stakingPool.algo.ts:354","pc":[1140,1141]},{"teal":1300,"source":"contracts/stakingPool.algo.ts:354","pc":[1142]},{"teal":1301,"source":"contracts/stakingPool.algo.ts:354","pc":[1143]},{"teal":1302,"source":"contracts/stakingPool.algo.ts:354","pc":[1144]},{"teal":1303,"source":"contracts/stakingPool.algo.ts:354","pc":[1145,1146]},{"teal":1307,"source":"contracts/stakingPool.algo.ts:355","pc":[1147,1148]},{"teal":1308,"source":"contracts/stakingPool.algo.ts:355","pc":[1149]},{"teal":1309,"source":"contracts/stakingPool.algo.ts:355","pc":[1150]},{"teal":1310,"source":"contracts/stakingPool.algo.ts:355","pc":[1151,1152]},{"teal":1311,"source":"contracts/stakingPool.algo.ts:355","pc":[1153]},{"teal":1312,"source":"contracts/stakingPool.algo.ts:355","pc":[1154]},{"teal":1313,"source":"contracts/stakingPool.algo.ts:355","pc":[1155]},{"teal":1314,"source":"contracts/stakingPool.algo.ts:355","pc":[1156,1157]},{"teal":1315,"source":"contracts/stakingPool.algo.ts:355","pc":[1158]},{"teal":1318,"source":"contracts/stakingPool.algo.ts:355","errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1159]},{"teal":1319,"source":"contracts/stakingPool.algo.ts:355","pc":[1160,1161]},{"teal":1320,"source":"contracts/stakingPool.algo.ts:355","pc":[1162]},{"teal":1321,"source":"contracts/stakingPool.algo.ts:355","pc":[1163]},{"teal":1322,"source":"contracts/stakingPool.algo.ts:355","pc":[1164]},{"teal":1323,"source":"contracts/stakingPool.algo.ts:355","pc":[1165]},{"teal":1324,"source":"contracts/stakingPool.algo.ts:355","pc":[1166,1167]},{"teal":1325,"source":"contracts/stakingPool.algo.ts:355","pc":[1168]},{"teal":1326,"source":"contracts/stakingPool.algo.ts:355","pc":[1169]},{"teal":1327,"source":"contracts/stakingPool.algo.ts:355","pc":[1170]},{"teal":1328,"source":"contracts/stakingPool.algo.ts:355","pc":[1171]},{"teal":1341,"source":"contracts/stakingPool.algo.ts:360","pc":[1172]},{"teal":1342,"source":"contracts/stakingPool.algo.ts:360","pc":[1173]},{"teal":1343,"source":"contracts/stakingPool.algo.ts:360","pc":[1174,1175]},{"teal":1344,"source":"contracts/stakingPool.algo.ts:360","pc":[1176,1177]},{"teal":1345,"source":"contracts/stakingPool.algo.ts:360","pc":[1178,1179]},{"teal":1349,"source":"contracts/stakingPool.algo.ts:361","pc":[1180]},{"teal":1350,"source":"contracts/stakingPool.algo.ts:361","pc":[1181]},{"teal":1351,"source":"contracts/stakingPool.algo.ts:361","pc":[1182,1183]},{"teal":1361,"source":"contracts/stakingPool.algo.ts:363","pc":[1184]},{"teal":1362,"source":"contracts/stakingPool.algo.ts:363","pc":[1185]},{"teal":1363,"source":"contracts/stakingPool.algo.ts:363","pc":[1186]},{"teal":1364,"source":"contracts/stakingPool.algo.ts:363","pc":[1187,1188]},{"teal":1365,"source":"contracts/stakingPool.algo.ts:363","pc":[1189]},{"teal":1366,"source":"contracts/stakingPool.algo.ts:363","pc":[1190]},{"teal":1367,"source":"contracts/stakingPool.algo.ts:363","pc":[1191]},{"teal":1368,"source":"contracts/stakingPool.algo.ts:363","pc":[1192,1193,1194]},{"teal":1369,"source":"contracts/stakingPool.algo.ts:363","pc":[1195]},{"teal":1370,"source":"contracts/stakingPool.algo.ts:363","pc":[1196]},{"teal":1371,"source":"contracts/stakingPool.algo.ts:363","pc":[1197,1198]},{"teal":1372,"source":"contracts/stakingPool.algo.ts:364","pc":[1199,1200]},{"teal":1373,"source":"contracts/stakingPool.algo.ts:364","pc":[1201,1202]},{"teal":1374,"source":"contracts/stakingPool.algo.ts:365","pc":[1203,1204]},{"teal":1375,"source":"contracts/stakingPool.algo.ts:365","pc":[1205]},{"teal":1376,"source":"contracts/stakingPool.algo.ts:365","pc":[1206,1207]},{"teal":1377,"source":"contracts/stakingPool.algo.ts:366","pc":[1208,1209]},{"teal":1378,"source":"contracts/stakingPool.algo.ts:366","pc":[1210]},{"teal":1379,"source":"contracts/stakingPool.algo.ts:366","pc":[1211,1212]},{"teal":1380,"source":"contracts/stakingPool.algo.ts:367","pc":[1213,1214]},{"teal":1381,"source":"contracts/stakingPool.algo.ts:367","pc":[1215,1216]},{"teal":1382,"source":"contracts/stakingPool.algo.ts:367","pc":[1217]},{"teal":1383,"source":"contracts/stakingPool.algo.ts:367","pc":[1218,1219]},{"teal":1384,"source":"contracts/stakingPool.algo.ts:367","pc":[1220]},{"teal":1385,"source":"contracts/stakingPool.algo.ts:367","pc":[1221,1222]},{"teal":1388,"source":"contracts/stakingPool.algo.ts:360","pc":[1223]},{"teal":1389,"source":"contracts/stakingPool.algo.ts:360","pc":[1224,1225]},{"teal":1392,"source":"contracts/stakingPool.algo.ts:360","pc":[1226]},{"teal":1396,"source":"contracts/stakingPool.algo.ts:370","pc":[1227]},{"teal":1403,"source":"contracts/stakingPool.algo.ts:283","pc":[1228,1229]},{"teal":1404,"source":"contracts/stakingPool.algo.ts:283","pc":[1230]},{"teal":1405,"source":"contracts/stakingPool.algo.ts:283","pc":[1231]},{"teal":1406,"source":"contracts/stakingPool.algo.ts:283","pc":[1232,1233]},{"teal":1407,"source":"contracts/stakingPool.algo.ts:283","pc":[1234,1235,1236]},{"teal":1411,"source":"contracts/stakingPool.algo.ts:373","errorMessage":"account not found","pc":[1237]},{"teal":1412,"source":"contracts/stakingPool.algo.ts:271","pc":[1238]},{"teal":1417,"source":"contracts/stakingPool.algo.ts:381","pc":[1239,1240,1241]},{"teal":1418,"source":"contracts/stakingPool.algo.ts:381","pc":[1242]},{"teal":1419,"source":"contracts/stakingPool.algo.ts:381","pc":[1243]},{"teal":1427,"source":"contracts/stakingPool.algo.ts:381","pc":[1244,1245,1246]},{"teal":1430,"source":"contracts/stakingPool.algo.ts:381","pc":[1247]},{"teal":1431,"source":"contracts/stakingPool.algo.ts:381","pc":[1248,1249]},{"teal":1435,"source":"contracts/stakingPool.algo.ts:385","pc":[1250,1251]},{"teal":1436,"source":"contracts/stakingPool.algo.ts:385","pc":[1252,1253]},{"teal":1440,"source":"contracts/stakingPool.algo.ts:387","pc":[1254]},{"teal":1441,"source":"contracts/stakingPool.algo.ts:387","pc":[1255,1256]},{"teal":1446,"source":"contracts/stakingPool.algo.ts:387","pc":[1257,1258]},{"teal":1447,"source":"contracts/stakingPool.algo.ts:387","pc":[1259,1260]},{"teal":1448,"source":"contracts/stakingPool.algo.ts:387","pc":[1261]},{"teal":1449,"source":"contracts/stakingPool.algo.ts:387","pc":[1262,1263,1264]},{"teal":1454,"source":"contracts/stakingPool.algo.ts:388","pc":[1265,1266]},{"teal":1455,"source":"contracts/stakingPool.algo.ts:388","pc":[1267,1268]},{"teal":1456,"source":"contracts/stakingPool.algo.ts:388","pc":[1269]},{"teal":1457,"source":"contracts/stakingPool.algo.ts:388","pc":[1270,1271,1272]},{"teal":1462,"source":"contracts/stakingPool.algo.ts:389","pc":[1273]},{"teal":1463,"source":"contracts/stakingPool.algo.ts:389","pc":[1274]},{"teal":1464,"source":"contracts/stakingPool.algo.ts:389","pc":[1275,1276]},{"teal":1465,"source":"contracts/stakingPool.algo.ts:389","pc":[1277]},{"teal":1466,"source":"contracts/stakingPool.algo.ts:389","pc":[1278,1279]},{"teal":1467,"source":"contracts/stakingPool.algo.ts:389","pc":[1280,1281]},{"teal":1468,"source":"contracts/stakingPool.algo.ts:389","pc":[1282]},{"teal":1469,"source":"contracts/stakingPool.algo.ts:389","pc":[1283,1284]},{"teal":1470,"source":"contracts/stakingPool.algo.ts:389","pc":[1285,1286]},{"teal":1471,"source":"contracts/stakingPool.algo.ts:389","pc":[1287,1288]},{"teal":1472,"source":"contracts/stakingPool.algo.ts:389","pc":[1289,1290]},{"teal":1473,"source":"contracts/stakingPool.algo.ts:389","pc":[1291]},{"teal":1478,"source":"contracts/stakingPool.algo.ts:391","pc":[1292,1293]},{"teal":1479,"source":"contracts/stakingPool.algo.ts:391","pc":[1294]},{"teal":1480,"source":"contracts/stakingPool.algo.ts:391","pc":[1295]},{"teal":1481,"source":"contracts/stakingPool.algo.ts:391","pc":[1296]},{"teal":1482,"source":"contracts/stakingPool.algo.ts:391","pc":[1297]},{"teal":1483,"source":"contracts/stakingPool.algo.ts:391","pc":[1298,1299]},{"teal":1484,"source":"contracts/stakingPool.algo.ts:391","pc":[1300]},{"teal":1485,"source":"contracts/stakingPool.algo.ts:391","pc":[1301,1302]},{"teal":1490,"source":"contracts/stakingPool.algo.ts:392","pc":[1303,1304]},{"teal":1491,"source":"contracts/stakingPool.algo.ts:392","pc":[1305,1306,1307]},{"teal":1492,"source":"contracts/stakingPool.algo.ts:392","pc":[1308,1309]},{"teal":1493,"source":"contracts/stakingPool.algo.ts:392","pc":[1310]},{"teal":1494,"source":"contracts/stakingPool.algo.ts:392","pc":[1311,1312,1313]},{"teal":1500,"source":"contracts/stakingPool.algo.ts:393","pc":[1314,1315]},{"teal":1501,"source":"contracts/stakingPool.algo.ts:393","pc":[1316,1317,1318]},{"teal":1502,"source":"contracts/stakingPool.algo.ts:393","pc":[1319]},{"teal":1503,"source":"contracts/stakingPool.algo.ts:393","pc":[1320]},{"teal":1504,"source":"contracts/stakingPool.algo.ts:393","pc":[1321]},{"teal":1505,"source":"contracts/stakingPool.algo.ts:393","pc":[1322,1323,1324]},{"teal":1510,"source":"contracts/stakingPool.algo.ts:394","pc":[1325]},{"teal":1515,"source":"contracts/stakingPool.algo.ts:396","pc":[1326]},{"teal":1516,"source":"contracts/stakingPool.algo.ts:396","pc":[1327,1328]},{"teal":1521,"source":"contracts/stakingPool.algo.ts:398","pc":[1329,1330]},{"teal":1522,"source":"contracts/stakingPool.algo.ts:398","pc":[1331]},{"teal":1523,"source":"contracts/stakingPool.algo.ts:398","pc":[1332]},{"teal":1524,"source":"contracts/stakingPool.algo.ts:398","pc":[1333]},{"teal":1525,"source":"contracts/stakingPool.algo.ts:398","pc":[1334,1335,1336]},{"teal":1533,"source":"contracts/stakingPool.algo.ts:399","pc":[1337]},{"teal":1534,"source":"contracts/stakingPool.algo.ts:399","pc":[1338]},{"teal":1535,"source":"contracts/stakingPool.algo.ts:399","pc":[1339,1340]},{"teal":1536,"source":"contracts/stakingPool.algo.ts:399","pc":[1341,1342]},{"teal":1537,"source":"contracts/stakingPool.algo.ts:399","pc":[1343,1344]},{"teal":1541,"source":"contracts/stakingPool.algo.ts:400","pc":[1345]},{"teal":1542,"source":"contracts/stakingPool.algo.ts:400","pc":[1346]},{"teal":1543,"source":"contracts/stakingPool.algo.ts:400","pc":[1347,1348]},{"teal":1547,"source":"contracts/stakingPool.algo.ts:401","pc":[1349]},{"teal":1548,"source":"contracts/stakingPool.algo.ts:401","pc":[1350]},{"teal":1549,"source":"contracts/stakingPool.algo.ts:401","pc":[1351]},{"teal":1550,"source":"contracts/stakingPool.algo.ts:401","pc":[1352,1353]},{"teal":1553,"source":"contracts/stakingPool.algo.ts:399","pc":[1354]},{"teal":1554,"source":"contracts/stakingPool.algo.ts:399","pc":[1355,1356]},{"teal":1557,"source":"contracts/stakingPool.algo.ts:399","pc":[1357]},{"teal":1558,"source":"contracts/stakingPool.algo.ts:399","pc":[1358,1359]},{"teal":1559,"source":"contracts/stakingPool.algo.ts:399","pc":[1360]},{"teal":1560,"source":"contracts/stakingPool.algo.ts:399","pc":[1361]},{"teal":1561,"source":"contracts/stakingPool.algo.ts:399","pc":[1362,1363]},{"teal":1562,"source":"contracts/stakingPool.algo.ts:399","pc":[1364,1365,1366]},{"teal":1563,"source":"contracts/stakingPool.algo.ts:399","pc":[1367,1368]},{"teal":1571,"source":"contracts/stakingPool.algo.ts:406","pc":[1369]},{"teal":1572,"source":"contracts/stakingPool.algo.ts:406","pc":[1370,1371]},{"teal":1573,"source":"contracts/stakingPool.algo.ts:406","pc":[1372,1373]},{"teal":1577,"source":"contracts/stakingPool.algo.ts:407","pc":[1374,1375]},{"teal":1578,"source":"contracts/stakingPool.algo.ts:407","pc":[1376,1377,1378]},{"teal":1579,"source":"contracts/stakingPool.algo.ts:407","pc":[1379]},{"teal":1580,"source":"contracts/stakingPool.algo.ts:407","pc":[1380,1381]},{"teal":1584,"source":"contracts/stakingPool.algo.ts:408","pc":[1382,1383]},{"teal":1585,"source":"contracts/stakingPool.algo.ts:408","pc":[1384,1385]},{"teal":1589,"source":"contracts/stakingPool.algo.ts:409","pc":[1386,1387]},{"teal":1590,"source":"contracts/stakingPool.algo.ts:409","pc":[1388,1389,1390]},{"teal":1591,"source":"contracts/stakingPool.algo.ts:409","pc":[1391]},{"teal":1592,"source":"contracts/stakingPool.algo.ts:409","pc":[1392,1393]},{"teal":1595,"source":"contracts/stakingPool.algo.ts:406","pc":[1394]},{"teal":1596,"source":"contracts/stakingPool.algo.ts:406","pc":[1395,1396]},{"teal":1599,"source":"contracts/stakingPool.algo.ts:406","pc":[1397]},{"teal":1603,"source":"contracts/stakingPool.algo.ts:411","pc":[1398,1399]},{"teal":1604,"source":"contracts/stakingPool.algo.ts:411","pc":[1400,1401,1402]},{"teal":1605,"source":"contracts/stakingPool.algo.ts:411","pc":[1403]},{"teal":1606,"source":"contracts/stakingPool.algo.ts:411","pc":[1404,1405]},{"teal":1610,"source":"contracts/stakingPool.algo.ts:412","pc":[1406,1407]},{"teal":1611,"source":"contracts/stakingPool.algo.ts:412","pc":[1408,1409]},{"teal":1612,"source":"contracts/stakingPool.algo.ts:412","pc":[1410,1411]},{"teal":1613,"source":"contracts/stakingPool.algo.ts:412","pc":[1412,1413]},{"teal":1614,"source":"contracts/stakingPool.algo.ts:398","pc":[1414,1415,1416]},{"teal":1619,"source":"contracts/stakingPool.algo.ts:417","pc":[1417,1418]},{"teal":1620,"source":"contracts/stakingPool.algo.ts:417","pc":[1419,1420,1421]},{"teal":1621,"source":"contracts/stakingPool.algo.ts:417","pc":[1422]},{"teal":1622,"source":"contracts/stakingPool.algo.ts:417","pc":[1423,1424]},{"teal":1626,"source":"contracts/stakingPool.algo.ts:418","pc":[1425,1426]},{"teal":1627,"source":"contracts/stakingPool.algo.ts:418","pc":[1427,1428]},{"teal":1628,"source":"contracts/stakingPool.algo.ts:418","pc":[1429,1430]},{"teal":1629,"source":"contracts/stakingPool.algo.ts:418","pc":[1431,1432]},{"teal":1634,"source":"contracts/stakingPool.algo.ts:422","pc":[1433,1434]},{"teal":1635,"source":"contracts/stakingPool.algo.ts:422","pc":[1435]},{"teal":1636,"source":"contracts/stakingPool.algo.ts:422","pc":[1436]},{"teal":1637,"source":"contracts/stakingPool.algo.ts:422","pc":[1437,1438]},{"teal":1638,"source":"contracts/stakingPool.algo.ts:422","pc":[1439]},{"teal":1639,"source":"contracts/stakingPool.algo.ts:422","pc":[1440,1441]},{"teal":1640,"source":"contracts/stakingPool.algo.ts:422","pc":[1442]},{"teal":1653,"source":"contracts/stakingPool.algo.ts:427","pc":[1443]},{"teal":1654,"source":"contracts/stakingPool.algo.ts:427","pc":[1444]},{"teal":1655,"source":"contracts/stakingPool.algo.ts:427","pc":[1445,1446]},{"teal":1656,"source":"contracts/stakingPool.algo.ts:427","pc":[1447,1448]},{"teal":1657,"source":"contracts/stakingPool.algo.ts:427","pc":[1449,1450]},{"teal":1661,"source":"contracts/stakingPool.algo.ts:428","pc":[1451]},{"teal":1662,"source":"contracts/stakingPool.algo.ts:428","pc":[1452]},{"teal":1663,"source":"contracts/stakingPool.algo.ts:428","pc":[1453,1454]},{"teal":1673,"source":"contracts/stakingPool.algo.ts:430","pc":[1455]},{"teal":1674,"source":"contracts/stakingPool.algo.ts:430","pc":[1456]},{"teal":1675,"source":"contracts/stakingPool.algo.ts:430","pc":[1457]},{"teal":1676,"source":"contracts/stakingPool.algo.ts:430","pc":[1458,1459]},{"teal":1677,"source":"contracts/stakingPool.algo.ts:430","pc":[1460]},{"teal":1678,"source":"contracts/stakingPool.algo.ts:430","pc":[1461]},{"teal":1679,"source":"contracts/stakingPool.algo.ts:430","pc":[1462]},{"teal":1680,"source":"contracts/stakingPool.algo.ts:430","pc":[1463,1464,1465]},{"teal":1681,"source":"contracts/stakingPool.algo.ts:430","pc":[1466]},{"teal":1682,"source":"contracts/stakingPool.algo.ts:430","pc":[1467]},{"teal":1683,"source":"contracts/stakingPool.algo.ts:430","pc":[1468,1469]},{"teal":1684,"source":"contracts/stakingPool.algo.ts:431","pc":[1470,1471]},{"teal":1685,"source":"contracts/stakingPool.algo.ts:431","pc":[1472,1473]},{"teal":1686,"source":"contracts/stakingPool.algo.ts:432","pc":[1474,1475]},{"teal":1687,"source":"contracts/stakingPool.algo.ts:432","pc":[1476,1477]},{"teal":1688,"source":"contracts/stakingPool.algo.ts:433","pc":[1478,1479]},{"teal":1689,"source":"contracts/stakingPool.algo.ts:433","pc":[1480]},{"teal":1690,"source":"contracts/stakingPool.algo.ts:433","pc":[1481,1482]},{"teal":1691,"source":"contracts/stakingPool.algo.ts:434","pc":[1483]},{"teal":1692,"source":"contracts/stakingPool.algo.ts:434","pc":[1484,1485]},{"teal":1693,"source":"contracts/stakingPool.algo.ts:434","pc":[1486]},{"teal":1694,"source":"contracts/stakingPool.algo.ts:434","pc":[1487,1488]},{"teal":1695,"source":"contracts/stakingPool.algo.ts:434","pc":[1489]},{"teal":1696,"source":"contracts/stakingPool.algo.ts:434","pc":[1490,1491]},{"teal":1699,"source":"contracts/stakingPool.algo.ts:427","pc":[1492]},{"teal":1700,"source":"contracts/stakingPool.algo.ts:427","pc":[1493,1494]},{"teal":1703,"source":"contracts/stakingPool.algo.ts:427","pc":[1495]},{"teal":1707,"source":"contracts/stakingPool.algo.ts:437","pc":[1496]},{"teal":1714,"source":"contracts/stakingPool.algo.ts:387","pc":[1497,1498]},{"teal":1715,"source":"contracts/stakingPool.algo.ts:387","pc":[1499]},{"teal":1716,"source":"contracts/stakingPool.algo.ts:387","pc":[1500]},{"teal":1717,"source":"contracts/stakingPool.algo.ts:387","pc":[1501,1502]},{"teal":1718,"source":"contracts/stakingPool.algo.ts:387","pc":[1503,1504,1505]},{"teal":1722,"source":"contracts/stakingPool.algo.ts:440","errorMessage":"account not found","pc":[1506]},{"teal":1723,"source":"contracts/stakingPool.algo.ts:381","pc":[1507]},{"teal":1728,"source":"contracts/stakingPool.algo.ts:450","pc":[1508,1509]},{"teal":1731,"source":"contracts/stakingPool.algo.ts:451","pc":[1510,1511,1512]},{"teal":1732,"source":"contracts/stakingPool.algo.ts:451","pc":[1513]},{"teal":1733,"source":"contracts/stakingPool.algo.ts:451","pc":[1514]},{"teal":1734,"source":"contracts/stakingPool.algo.ts:451","pc":[1515,1516]},{"teal":1735,"source":"contracts/stakingPool.algo.ts:451","pc":[1517]},{"teal":1738,"source":"contracts/stakingPool.algo.ts:451","errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1518]},{"teal":1741,"source":"contracts/stakingPool.algo.ts:450","pc":[1519,1520,1521]},{"teal":1742,"source":"contracts/stakingPool.algo.ts:450","pc":[1522]},{"teal":1743,"source":"contracts/stakingPool.algo.ts:450","pc":[1523]},{"teal":1744,"source":"contracts/stakingPool.algo.ts:450","pc":[1524]},{"teal":1745,"source":"contracts/stakingPool.algo.ts:450","pc":[1525]},{"teal":1755,"source":"contracts/stakingPool.algo.ts:450","pc":[1526,1527,1528]},{"teal":1758,"source":"contracts/stakingPool.algo.ts:450","pc":[1529]},{"teal":1762,"source":"contracts/stakingPool.algo.ts:452","pc":[1530]},{"teal":1763,"source":"contracts/stakingPool.algo.ts:452","pc":[1531,1532]},{"teal":1768,"source":"contracts/stakingPool.algo.ts:452","pc":[1533,1534]},{"teal":1769,"source":"contracts/stakingPool.algo.ts:452","pc":[1535,1536]},{"teal":1770,"source":"contracts/stakingPool.algo.ts:452","pc":[1537]},{"teal":1771,"source":"contracts/stakingPool.algo.ts:452","pc":[1538,1539,1540]},{"teal":1776,"source":"contracts/stakingPool.algo.ts:453","pc":[1541,1542]},{"teal":1777,"source":"contracts/stakingPool.algo.ts:453","pc":[1543,1544]},{"teal":1778,"source":"contracts/stakingPool.algo.ts:453","pc":[1545]},{"teal":1779,"source":"contracts/stakingPool.algo.ts:453","pc":[1546,1547,1548]},{"teal":1784,"source":"contracts/stakingPool.algo.ts:454","pc":[1549]},{"teal":1785,"source":"contracts/stakingPool.algo.ts:454","pc":[1550]},{"teal":1786,"source":"contracts/stakingPool.algo.ts:454","pc":[1551,1552]},{"teal":1787,"source":"contracts/stakingPool.algo.ts:454","pc":[1553]},{"teal":1788,"source":"contracts/stakingPool.algo.ts:454","pc":[1554,1555]},{"teal":1789,"source":"contracts/stakingPool.algo.ts:454","pc":[1556,1557]},{"teal":1790,"source":"contracts/stakingPool.algo.ts:454","pc":[1558]},{"teal":1791,"source":"contracts/stakingPool.algo.ts:454","pc":[1559,1560]},{"teal":1792,"source":"contracts/stakingPool.algo.ts:454","pc":[1561,1562]},{"teal":1793,"source":"contracts/stakingPool.algo.ts:454","pc":[1563,1564]},{"teal":1794,"source":"contracts/stakingPool.algo.ts:454","pc":[1565,1566]},{"teal":1795,"source":"contracts/stakingPool.algo.ts:454","pc":[1567]},{"teal":1801,"source":"contracts/stakingPool.algo.ts:456","pc":[1568,1569]},{"teal":1802,"source":"contracts/stakingPool.algo.ts:456","pc":[1570]},{"teal":1803,"source":"contracts/stakingPool.algo.ts:456","pc":[1571]},{"teal":1804,"source":"contracts/stakingPool.algo.ts:456","pc":[1572]},{"teal":1805,"source":"contracts/stakingPool.algo.ts:456","pc":[1573]},{"teal":1806,"source":"contracts/stakingPool.algo.ts:456","pc":[1574,1575]},{"teal":1807,"source":"contracts/stakingPool.algo.ts:456","pc":[1576]},{"teal":1808,"source":"contracts/stakingPool.algo.ts:456","pc":[1577,1578]},{"teal":1809,"source":"contracts/stakingPool.algo.ts:456","pc":[1579]},{"teal":1810,"source":"contracts/stakingPool.algo.ts:456","pc":[1580,1581]},{"teal":1811,"source":"contracts/stakingPool.algo.ts:456","pc":[1582]},{"teal":1812,"source":"contracts/stakingPool.algo.ts:456","pc":[1583,1584,1585]},{"teal":1817,"source":"contracts/stakingPool.algo.ts:457","pc":[1586,1587]},{"teal":1818,"source":"contracts/stakingPool.algo.ts:457","pc":[1588]},{"teal":1819,"source":"contracts/stakingPool.algo.ts:457","pc":[1589]},{"teal":1820,"source":"contracts/stakingPool.algo.ts:457","pc":[1590]},{"teal":1821,"source":"contracts/stakingPool.algo.ts:457","pc":[1591]},{"teal":1822,"source":"contracts/stakingPool.algo.ts:457","pc":[1592,1593]},{"teal":1823,"source":"contracts/stakingPool.algo.ts:457","pc":[1594]},{"teal":1824,"source":"contracts/stakingPool.algo.ts:457","pc":[1595,1596,1597]},{"teal":1831,"source":"contracts/stakingPool.algo.ts:452","pc":[1598,1599]},{"teal":1832,"source":"contracts/stakingPool.algo.ts:452","pc":[1600]},{"teal":1833,"source":"contracts/stakingPool.algo.ts:452","pc":[1601]},{"teal":1834,"source":"contracts/stakingPool.algo.ts:452","pc":[1602,1603]},{"teal":1835,"source":"contracts/stakingPool.algo.ts:452","pc":[1604,1605,1606]},{"teal":1839,"source":"contracts/stakingPool.algo.ts:460","errorMessage":"account not found","pc":[1607]},{"teal":1843,"source":"contracts/stakingPool.algo.ts:450","pc":[1608,1609]},{"teal":1844,"source":"contracts/stakingPool.algo.ts:450","pc":[1610]},{"teal":1849,"source":"contracts/stakingPool.algo.ts:473","pc":[1611,1612,1613]},{"teal":1850,"source":"contracts/stakingPool.algo.ts:473","pc":[1614]},{"teal":1853,"source":"contracts/stakingPool.algo.ts:473","pc":[1615,1616,1617]},{"teal":1854,"source":"contracts/stakingPool.algo.ts:473","pc":[1618]},{"teal":1857,"source":"contracts/stakingPool.algo.ts:473","pc":[1619,1620,1621]},{"teal":1858,"source":"contracts/stakingPool.algo.ts:473","pc":[1622]},{"teal":1859,"source":"contracts/stakingPool.algo.ts:473","pc":[1623]},{"teal":1860,"source":"contracts/stakingPool.algo.ts:473","pc":[1624,1625]},{"teal":1861,"source":"contracts/stakingPool.algo.ts:473","pc":[1626]},{"teal":1864,"source":"contracts/stakingPool.algo.ts:473","errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1627]},{"teal":1867,"source":"contracts/stakingPool.algo.ts:473","pc":[1628,1629,1630]},{"teal":1868,"source":"contracts/stakingPool.algo.ts:473","pc":[1631]},{"teal":1869,"source":"contracts/stakingPool.algo.ts:473","pc":[1632]},{"teal":1882,"source":"contracts/stakingPool.algo.ts:473","pc":[1633,1634,1635]},{"teal":1889,"source":"contracts/stakingPool.algo.ts:476","pc":[1636,1637]},{"teal":1890,"source":"contracts/stakingPool.algo.ts:476","pc":[1638]},{"teal":1891,"source":"contracts/stakingPool.algo.ts:476","pc":[1639]},{"teal":1892,"source":"contracts/stakingPool.algo.ts:476","pc":[1640,1641]},{"teal":1893,"source":"contracts/stakingPool.algo.ts:476","pc":[1642]},{"teal":1894,"source":"contracts/stakingPool.algo.ts:476","pc":[1643]},{"teal":1897,"source":"contracts/stakingPool.algo.ts:475","errorMessage":"this can only be called via the validator contract","pc":[1644]},{"teal":1901,"source":"contracts/stakingPool.algo.ts:479","pc":[1645,1646]},{"teal":1902,"source":"contracts/stakingPool.algo.ts:479","pc":[1647]},{"teal":1903,"source":"contracts/stakingPool.algo.ts:479","pc":[1648]},{"teal":1904,"source":"contracts/stakingPool.algo.ts:479","pc":[1649]},{"teal":1907,"source":"contracts/stakingPool.algo.ts:479","errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1650]},{"teal":1911,"source":"contracts/stakingPool.algo.ts:480","pc":[1651,1652]},{"teal":1912,"source":"contracts/stakingPool.algo.ts:480","pc":[1653]},{"teal":1913,"source":"contracts/stakingPool.algo.ts:480","pc":[1654]},{"teal":1916,"source":"contracts/stakingPool.algo.ts:480","errorMessage":"can only claim token rewards from validator that has them","pc":[1655]},{"teal":1924,"source":"contracts/stakingPool.algo.ts:483","pc":[1656]},{"teal":1925,"source":"contracts/stakingPool.algo.ts:483","pc":[1657,1658]},{"teal":1926,"source":"contracts/stakingPool.algo.ts:483","pc":[1659,1660]},{"teal":1930,"source":"contracts/stakingPool.algo.ts:484","pc":[1661,1662]},{"teal":1931,"source":"contracts/stakingPool.algo.ts:484","pc":[1663,1664]},{"teal":1935,"source":"contracts/stakingPool.algo.ts:485","pc":[1665,1666]},{"teal":1936,"source":"contracts/stakingPool.algo.ts:485","pc":[1667,1668]},{"teal":1940,"source":"contracts/stakingPool.algo.ts:486","pc":[1669,1670]},{"teal":1941,"source":"contracts/stakingPool.algo.ts:486","pc":[1671,1672]},{"teal":1944,"source":"contracts/stakingPool.algo.ts:483","pc":[1673]},{"teal":1945,"source":"contracts/stakingPool.algo.ts:483","pc":[1674,1675]},{"teal":1948,"source":"contracts/stakingPool.algo.ts:483","pc":[1676]},{"teal":1949,"source":"contracts/stakingPool.algo.ts:473","pc":[1677]},{"teal":1954,"source":"contracts/stakingPool.algo.ts:499","pc":[1678,1679,1680]},{"teal":1955,"source":"contracts/stakingPool.algo.ts:499","pc":[1681,1682,1683]},{"teal":1958,"source":"contracts/stakingPool.algo.ts:499","pc":[1684,1685,1686]},{"teal":1959,"source":"contracts/stakingPool.algo.ts:499","pc":[1687]},{"teal":1960,"source":"contracts/stakingPool.algo.ts:499","pc":[1688]},{"teal":1972,"source":"contracts/stakingPool.algo.ts:499","pc":[1689,1690,1691]},{"teal":1976,"source":"contracts/stakingPool.algo.ts:500","pc":[1692,1693,1694]},{"teal":1979,"source":"contracts/stakingPool.algo.ts:500","errorMessage":"can only be called by owner or manager of validator","pc":[1695]},{"teal":1983,"source":"contracts/stakingPool.algo.ts:501","pc":[1696,1697,1698,1699,1700,1701,1702,1703,1704,1705]},{"teal":1984,"source":"contracts/stakingPool.algo.ts:501","pc":[1706,1707]},{"teal":1985,"source":"contracts/stakingPool.algo.ts:501","pc":[1708]},{"teal":1986,"source":"contracts/stakingPool.algo.ts:499","pc":[1709]},{"teal":1991,"source":"contracts/stakingPool.algo.ts:512","pc":[1710,1711,1712]},{"teal":1992,"source":"contracts/stakingPool.algo.ts:512","pc":[1713]},{"teal":1993,"source":"contracts/stakingPool.algo.ts:512","pc":[1714]},{"teal":2004,"source":"contracts/stakingPool.algo.ts:512","pc":[1715,1716,1717]},{"teal":2007,"source":"contracts/stakingPool.algo.ts:512","pc":[1718]},{"teal":2008,"source":"contracts/stakingPool.algo.ts:512","pc":[1719,1720]},{"teal":2015,"source":"contracts/stakingPool.algo.ts:514","pc":[1721]},{"teal":2016,"source":"contracts/stakingPool.algo.ts:514","pc":[1722]},{"teal":2017,"source":"contracts/stakingPool.algo.ts:514","pc":[1723,1724]},{"teal":2018,"source":"contracts/stakingPool.algo.ts:514","pc":[1725,1726]},{"teal":2019,"source":"contracts/stakingPool.algo.ts:514","pc":[1727,1728]},{"teal":2023,"source":"contracts/stakingPool.algo.ts:515","pc":[1729]},{"teal":2024,"source":"contracts/stakingPool.algo.ts:515","pc":[1730]},{"teal":2025,"source":"contracts/stakingPool.algo.ts:515","pc":[1731,1732]},{"teal":2029,"source":"contracts/stakingPool.algo.ts:516","pc":[1733]},{"teal":2030,"source":"contracts/stakingPool.algo.ts:516","pc":[1734]},{"teal":2031,"source":"contracts/stakingPool.algo.ts:516","pc":[1735]},{"teal":2032,"source":"contracts/stakingPool.algo.ts:516","pc":[1736,1737]},{"teal":2035,"source":"contracts/stakingPool.algo.ts:514","pc":[1738]},{"teal":2036,"source":"contracts/stakingPool.algo.ts:514","pc":[1739,1740]},{"teal":2039,"source":"contracts/stakingPool.algo.ts:514","pc":[1741]},{"teal":2040,"source":"contracts/stakingPool.algo.ts:514","pc":[1742,1743]},{"teal":2041,"source":"contracts/stakingPool.algo.ts:514","pc":[1744]},{"teal":2042,"source":"contracts/stakingPool.algo.ts:514","pc":[1745]},{"teal":2043,"source":"contracts/stakingPool.algo.ts:514","pc":[1746,1747]},{"teal":2044,"source":"contracts/stakingPool.algo.ts:514","pc":[1748,1749,1750]},{"teal":2045,"source":"contracts/stakingPool.algo.ts:514","pc":[1751,1752]},{"teal":2049,"source":"contracts/stakingPool.algo.ts:523","pc":[1753,1754]},{"teal":2050,"source":"contracts/stakingPool.algo.ts:523","pc":[1755,1756,1757]},{"teal":2051,"source":"contracts/stakingPool.algo.ts:523","pc":[1758]},{"teal":2052,"source":"contracts/stakingPool.algo.ts:523","pc":[1759,1760]},{"teal":2056,"source":"contracts/stakingPool.algo.ts:524","pc":[1761,1762]},{"teal":2057,"source":"contracts/stakingPool.algo.ts:524","pc":[1763,1764]},{"teal":2061,"source":"contracts/stakingPool.algo.ts:525","pc":[1765,1766]},{"teal":2062,"source":"contracts/stakingPool.algo.ts:525","pc":[1767,1768]},{"teal":2063,"source":"contracts/stakingPool.algo.ts:525","pc":[1769,1770]},{"teal":2064,"source":"contracts/stakingPool.algo.ts:525","pc":[1771]},{"teal":2065,"source":"contracts/stakingPool.algo.ts:525","pc":[1772]},{"teal":2066,"source":"contracts/stakingPool.algo.ts:525","pc":[1773,1774]},{"teal":2070,"source":"contracts/stakingPool.algo.ts:528","pc":[1775,1776]},{"teal":2071,"source":"contracts/stakingPool.algo.ts:528","pc":[1777]},{"teal":2072,"source":"contracts/stakingPool.algo.ts:528","pc":[1778,1779]},{"teal":2073,"source":"contracts/stakingPool.algo.ts:528","pc":[1780]},{"teal":2074,"source":"contracts/stakingPool.algo.ts:528","pc":[1781,1782]},{"teal":2075,"source":"contracts/stakingPool.algo.ts:528","pc":[1783]},{"teal":2076,"source":"contracts/stakingPool.algo.ts:528","pc":[1784]},{"teal":2077,"source":"contracts/stakingPool.algo.ts:528","pc":[1785,1786]},{"teal":2081,"source":"contracts/stakingPool.algo.ts:530","pc":[1787,1788]},{"teal":2082,"source":"contracts/stakingPool.algo.ts:530","pc":[1789,1790]},{"teal":2083,"source":"contracts/stakingPool.algo.ts:530","pc":[1791]},{"teal":2086,"source":"contracts/stakingPool.algo.ts:530","errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[1792]},{"teal":2090,"source":"contracts/stakingPool.algo.ts:532","pc":[1793,1794,1795]},{"teal":2094,"source":"contracts/stakingPool.algo.ts:535","pc":[1796,1797]},{"teal":2095,"source":"contracts/stakingPool.algo.ts:535","pc":[1798,1799]},{"teal":2096,"source":"contracts/stakingPool.algo.ts:535","pc":[1800]},{"teal":2100,"source":"contracts/stakingPool.algo.ts:536","pc":[1801,1802]},{"teal":2101,"source":"contracts/stakingPool.algo.ts:536","pc":[1803]},{"teal":2102,"source":"contracts/stakingPool.algo.ts:536","pc":[1804]},{"teal":2103,"source":"contracts/stakingPool.algo.ts:536","pc":[1805]},{"teal":2104,"source":"contracts/stakingPool.algo.ts:536","pc":[1806,1807]},{"teal":2105,"source":"contracts/stakingPool.algo.ts:536","pc":[1808]},{"teal":2106,"source":"contracts/stakingPool.algo.ts:536","pc":[1809]},{"teal":2110,"source":"contracts/stakingPool.algo.ts:541","pc":[1810,1811]},{"teal":2111,"source":"contracts/stakingPool.algo.ts:541","pc":[1812,1813,1814]},{"teal":2112,"source":"contracts/stakingPool.algo.ts:541","pc":[1815]},{"teal":2113,"source":"contracts/stakingPool.algo.ts:541","pc":[1816]},{"teal":2114,"source":"contracts/stakingPool.algo.ts:541","pc":[1817]},{"teal":2115,"source":"contracts/stakingPool.algo.ts:541","pc":[1818,1819]},{"teal":2119,"source":"contracts/stakingPool.algo.ts:542","pc":[1820,1821,1822]},{"teal":2120,"source":"contracts/stakingPool.algo.ts:542","pc":[1823,1824]},{"teal":2124,"source":"contracts/stakingPool.algo.ts:543","pc":[1825,1826]},{"teal":2125,"source":"contracts/stakingPool.algo.ts:543","pc":[1827,1828]},{"teal":2130,"source":"contracts/stakingPool.algo.ts:548","pc":[1829,1830]},{"teal":2131,"source":"contracts/stakingPool.algo.ts:548","pc":[1831,1832,1833]},{"teal":2137,"source":"contracts/stakingPool.algo.ts:549","pc":[1834,1835]},{"teal":2138,"source":"contracts/stakingPool.algo.ts:549","pc":[1836]},{"teal":2139,"source":"contracts/stakingPool.algo.ts:549","pc":[1837]},{"teal":2140,"source":"contracts/stakingPool.algo.ts:549","pc":[1838]},{"teal":2141,"source":"contracts/stakingPool.algo.ts:549","pc":[1839,1840,1841]},{"teal":2149,"source":"contracts/stakingPool.algo.ts:551","pc":[1842]},{"teal":2150,"source":"contracts/stakingPool.algo.ts:551","pc":[1843]},{"teal":2151,"source":"contracts/stakingPool.algo.ts:551","pc":[1844,1845]},{"teal":2152,"source":"contracts/stakingPool.algo.ts:551","pc":[1846,1847]},{"teal":2153,"source":"contracts/stakingPool.algo.ts:551","pc":[1848,1849]},{"teal":2157,"source":"contracts/stakingPool.algo.ts:552","pc":[1850]},{"teal":2158,"source":"contracts/stakingPool.algo.ts:552","pc":[1851]},{"teal":2159,"source":"contracts/stakingPool.algo.ts:552","pc":[1852,1853]},{"teal":2163,"source":"contracts/stakingPool.algo.ts:553","pc":[1854]},{"teal":2164,"source":"contracts/stakingPool.algo.ts:553","pc":[1855]},{"teal":2165,"source":"contracts/stakingPool.algo.ts:553","pc":[1856]},{"teal":2166,"source":"contracts/stakingPool.algo.ts:553","pc":[1857,1858]},{"teal":2167,"source":"contracts/stakingPool.algo.ts:553","pc":[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868]},{"teal":2168,"source":"contracts/stakingPool.algo.ts:553","pc":[1869,1870]},{"teal":2171,"source":"contracts/stakingPool.algo.ts:551","pc":[1871]},{"teal":2172,"source":"contracts/stakingPool.algo.ts:551","pc":[1872,1873]},{"teal":2175,"source":"contracts/stakingPool.algo.ts:551","pc":[1874]},{"teal":2176,"source":"contracts/stakingPool.algo.ts:551","pc":[1875,1876]},{"teal":2177,"source":"contracts/stakingPool.algo.ts:551","pc":[1877]},{"teal":2178,"source":"contracts/stakingPool.algo.ts:551","pc":[1878]},{"teal":2179,"source":"contracts/stakingPool.algo.ts:551","pc":[1879,1880]},{"teal":2180,"source":"contracts/stakingPool.algo.ts:551","pc":[1881,1882,1883]},{"teal":2181,"source":"contracts/stakingPool.algo.ts:551","pc":[1884]},{"teal":2182,"source":"contracts/stakingPool.algo.ts:551","pc":[1885,1886]},{"teal":2186,"source":"contracts/stakingPool.algo.ts:555","pc":[1887,1888]},{"teal":2187,"source":"contracts/stakingPool.algo.ts:555","pc":[1889,1890]},{"teal":2188,"source":"contracts/stakingPool.algo.ts:555","pc":[1891]},{"teal":2189,"source":"contracts/stakingPool.algo.ts:555","pc":[1892,1893]},{"teal":2195,"source":"contracts/stakingPool.algo.ts:560","pc":[1894,1895]},{"teal":2196,"source":"contracts/stakingPool.algo.ts:560","pc":[1896]},{"teal":2197,"source":"contracts/stakingPool.algo.ts:560","pc":[1897]},{"teal":2198,"source":"contracts/stakingPool.algo.ts:560","pc":[1898]},{"teal":2199,"source":"contracts/stakingPool.algo.ts:560","pc":[1899,1900,1901]},{"teal":2207,"source":"contracts/stakingPool.algo.ts:561","pc":[1902]},{"teal":2208,"source":"contracts/stakingPool.algo.ts:561","pc":[1903]},{"teal":2209,"source":"contracts/stakingPool.algo.ts:561","pc":[1904,1905]},{"teal":2210,"source":"contracts/stakingPool.algo.ts:561","pc":[1906,1907]},{"teal":2211,"source":"contracts/stakingPool.algo.ts:561","pc":[1908,1909]},{"teal":2215,"source":"contracts/stakingPool.algo.ts:562","pc":[1910]},{"teal":2216,"source":"contracts/stakingPool.algo.ts:562","pc":[1911]},{"teal":2217,"source":"contracts/stakingPool.algo.ts:562","pc":[1912,1913]},{"teal":2221,"source":"contracts/stakingPool.algo.ts:563","pc":[1914]},{"teal":2222,"source":"contracts/stakingPool.algo.ts:563","pc":[1915]},{"teal":2223,"source":"contracts/stakingPool.algo.ts:563","pc":[1916]},{"teal":2224,"source":"contracts/stakingPool.algo.ts:563","pc":[1917,1918]},{"teal":2227,"source":"contracts/stakingPool.algo.ts:561","pc":[1919]},{"teal":2228,"source":"contracts/stakingPool.algo.ts:561","pc":[1920,1921]},{"teal":2231,"source":"contracts/stakingPool.algo.ts:561","pc":[1922]},{"teal":2232,"source":"contracts/stakingPool.algo.ts:561","pc":[1923,1924]},{"teal":2233,"source":"contracts/stakingPool.algo.ts:561","pc":[1925]},{"teal":2234,"source":"contracts/stakingPool.algo.ts:561","pc":[1926]},{"teal":2235,"source":"contracts/stakingPool.algo.ts:561","pc":[1927,1928]},{"teal":2236,"source":"contracts/stakingPool.algo.ts:561","pc":[1929,1930,1931]},{"teal":2237,"source":"contracts/stakingPool.algo.ts:561","pc":[1932,1933]},{"teal":2238,"source":"contracts/stakingPool.algo.ts:560","pc":[1934,1935,1936]},{"teal":2246,"source":"contracts/stakingPool.algo.ts:567","pc":[1937]},{"teal":2247,"source":"contracts/stakingPool.algo.ts:567","pc":[1938]},{"teal":2248,"source":"contracts/stakingPool.algo.ts:567","pc":[1939,1940]},{"teal":2249,"source":"contracts/stakingPool.algo.ts:567","pc":[1941,1942]},{"teal":2250,"source":"contracts/stakingPool.algo.ts:567","pc":[1943,1944]},{"teal":2254,"source":"contracts/stakingPool.algo.ts:568","pc":[1945,1946]},{"teal":2255,"source":"contracts/stakingPool.algo.ts:568","pc":[1947,1948]},{"teal":2259,"source":"contracts/stakingPool.algo.ts:569","pc":[1949]},{"teal":2260,"source":"contracts/stakingPool.algo.ts:569","pc":[1950]},{"teal":2261,"source":"contracts/stakingPool.algo.ts:569","pc":[1951]},{"teal":2262,"source":"contracts/stakingPool.algo.ts:569","pc":[1952,1953]},{"teal":2263,"source":"contracts/stakingPool.algo.ts:569","pc":[1954]},{"teal":2264,"source":"contracts/stakingPool.algo.ts:569","pc":[1955]},{"teal":2265,"source":"contracts/stakingPool.algo.ts:569","pc":[1956]},{"teal":2266,"source":"contracts/stakingPool.algo.ts:569","pc":[1957,1958,1959]},{"teal":2267,"source":"contracts/stakingPool.algo.ts:569","pc":[1960]},{"teal":2268,"source":"contracts/stakingPool.algo.ts:569","pc":[1961]},{"teal":2269,"source":"contracts/stakingPool.algo.ts:569","pc":[1962,1963]},{"teal":2272,"source":"contracts/stakingPool.algo.ts:567","pc":[1964]},{"teal":2273,"source":"contracts/stakingPool.algo.ts:567","pc":[1965,1966]},{"teal":2276,"source":"contracts/stakingPool.algo.ts:567","pc":[1967]},{"teal":2277,"source":"contracts/stakingPool.algo.ts:567","pc":[1968,1969]},{"teal":2278,"source":"contracts/stakingPool.algo.ts:567","pc":[1970]},{"teal":2279,"source":"contracts/stakingPool.algo.ts:567","pc":[1971]},{"teal":2280,"source":"contracts/stakingPool.algo.ts:567","pc":[1972,1973]},{"teal":2281,"source":"contracts/stakingPool.algo.ts:567","pc":[1974,1975,1976]},{"teal":2282,"source":"contracts/stakingPool.algo.ts:567","pc":[1977,1978]},{"teal":2292,"source":"contracts/stakingPool.algo.ts:576","pc":[1979]},{"teal":2293,"source":"contracts/stakingPool.algo.ts:576","pc":[1980]},{"teal":2294,"source":"contracts/stakingPool.algo.ts:576","pc":[1981,1982]},{"teal":2295,"source":"contracts/stakingPool.algo.ts:576","pc":[1983,1984,1985,1986,1987,1988]},{"teal":2296,"source":"contracts/stakingPool.algo.ts:576","pc":[1989,1990]},{"teal":2300,"source":"contracts/stakingPool.algo.ts:577","pc":[1991]},{"teal":2301,"source":"contracts/stakingPool.algo.ts:577","pc":[1992]},{"teal":2302,"source":"contracts/stakingPool.algo.ts:577","pc":[1993,1994]},{"teal":2306,"source":"contracts/stakingPool.algo.ts:578","pc":[1995]},{"teal":2307,"source":"contracts/stakingPool.algo.ts:578","pc":[1996]},{"teal":2308,"source":"contracts/stakingPool.algo.ts:578","pc":[1997]},{"teal":2309,"source":"contracts/stakingPool.algo.ts:578","pc":[1998,1999]},{"teal":2312,"source":"contracts/stakingPool.algo.ts:576","pc":[2000]},{"teal":2313,"source":"contracts/stakingPool.algo.ts:576","pc":[2001,2002]},{"teal":2316,"source":"contracts/stakingPool.algo.ts:576","pc":[2003]},{"teal":2317,"source":"contracts/stakingPool.algo.ts:576","pc":[2004,2005]},{"teal":2318,"source":"contracts/stakingPool.algo.ts:576","pc":[2006]},{"teal":2319,"source":"contracts/stakingPool.algo.ts:576","pc":[2007]},{"teal":2320,"source":"contracts/stakingPool.algo.ts:576","pc":[2008,2009]},{"teal":2321,"source":"contracts/stakingPool.algo.ts:576","pc":[2010,2011,2012]},{"teal":2322,"source":"contracts/stakingPool.algo.ts:576","pc":[2013,2014]},{"teal":2326,"source":"contracts/stakingPool.algo.ts:580","pc":[2015,2016]},{"teal":2327,"source":"contracts/stakingPool.algo.ts:580","pc":[2017,2018,2019]},{"teal":2328,"source":"contracts/stakingPool.algo.ts:580","pc":[2020]},{"teal":2329,"source":"contracts/stakingPool.algo.ts:580","pc":[2021,2022]},{"teal":2333,"source":"contracts/stakingPool.algo.ts:586","pc":[2023,2024]},{"teal":2334,"source":"contracts/stakingPool.algo.ts:586","pc":[2025,2026]},{"teal":2335,"source":"contracts/stakingPool.algo.ts:586","pc":[2027]},{"teal":2336,"source":"contracts/stakingPool.algo.ts:586","pc":[2028,2029]},{"teal":2337,"source":"contracts/stakingPool.algo.ts:586","pc":[2030]},{"teal":2338,"source":"contracts/stakingPool.algo.ts:586","pc":[2031]},{"teal":2339,"source":"contracts/stakingPool.algo.ts:586","pc":[2032,2033]},{"teal":2340,"source":"contracts/stakingPool.algo.ts:586","pc":[2034,2035]},{"teal":2341,"source":"contracts/stakingPool.algo.ts:586","pc":[2036]},{"teal":2342,"source":"contracts/stakingPool.algo.ts:586","pc":[2037]},{"teal":2343,"source":"contracts/stakingPool.algo.ts:586","pc":[2038,2039]},{"teal":2347,"source":"contracts/stakingPool.algo.ts:587","pc":[2040]},{"teal":2348,"source":"contracts/stakingPool.algo.ts:587","pc":[2041,2042]},{"teal":2352,"source":"contracts/stakingPool.algo.ts:588","pc":[2043,2044,2045]},{"teal":2353,"source":"contracts/stakingPool.algo.ts:588","pc":[2046,2047]},{"teal":2358,"source":"contracts/stakingPool.algo.ts:596","pc":[2048,2049]},{"teal":2359,"source":"contracts/stakingPool.algo.ts:596","pc":[2050,2051,2052]},{"teal":2360,"source":"contracts/stakingPool.algo.ts:596","pc":[2053]},{"teal":2361,"source":"contracts/stakingPool.algo.ts:596","pc":[2054,2055]},{"teal":2362,"source":"contracts/stakingPool.algo.ts:596","pc":[2056]},{"teal":2363,"source":"contracts/stakingPool.algo.ts:596","pc":[2057,2058,2059]},{"teal":2368,"source":"contracts/stakingPool.algo.ts:597","pc":[2060]},{"teal":2369,"source":"contracts/stakingPool.algo.ts:597","pc":[2061,2062]},{"teal":2374,"source":"contracts/stakingPool.algo.ts:603","pc":[2063]},{"teal":2375,"source":"contracts/stakingPool.algo.ts:603","pc":[2064,2065]},{"teal":2379,"source":"contracts/stakingPool.algo.ts:604","pc":[2066]},{"teal":2380,"source":"contracts/stakingPool.algo.ts:604","pc":[2067,2068]},{"teal":2384,"source":"contracts/stakingPool.algo.ts:605","pc":[2069]},{"teal":2385,"source":"contracts/stakingPool.algo.ts:605","pc":[2070,2071]},{"teal":2389,"source":"contracts/stakingPool.algo.ts:606","pc":[2072]},{"teal":2390,"source":"contracts/stakingPool.algo.ts:606","pc":[2073,2074]},{"teal":2395,"source":"contracts/stakingPool.algo.ts:607","pc":[2075,2076]},{"teal":2396,"source":"contracts/stakingPool.algo.ts:607","pc":[2077,2078,2079]},{"teal":2402,"source":"contracts/stakingPool.algo.ts:609","pc":[2080,2081]},{"teal":2403,"source":"contracts/stakingPool.algo.ts:609","pc":[2082,2083]},{"teal":2404,"source":"contracts/stakingPool.algo.ts:609","pc":[2084,2085,2086]},{"teal":2405,"source":"contracts/stakingPool.algo.ts:609","pc":[2087]},{"teal":2406,"source":"contracts/stakingPool.algo.ts:609","pc":[2088,2089]},{"teal":2407,"source":"contracts/stakingPool.algo.ts:609","pc":[2090]},{"teal":2408,"source":"contracts/stakingPool.algo.ts:609","pc":[2091,2092]},{"teal":2409,"source":"contracts/stakingPool.algo.ts:609","pc":[2093]},{"teal":2410,"source":"contracts/stakingPool.algo.ts:608","pc":[2094,2095]},{"teal":2415,"source":"contracts/stakingPool.algo.ts:613","pc":[2096,2097]},{"teal":2416,"source":"contracts/stakingPool.algo.ts:613","pc":[2098,2099]},{"teal":2417,"source":"contracts/stakingPool.algo.ts:613","pc":[2100,2101,2102]},{"teal":2418,"source":"contracts/stakingPool.algo.ts:613","pc":[2103]},{"teal":2419,"source":"contracts/stakingPool.algo.ts:613","pc":[2104]},{"teal":2420,"source":"contracts/stakingPool.algo.ts:613","pc":[2105,2106,2107]},{"teal":2425,"source":"contracts/stakingPool.algo.ts:619","pc":[2108,2109]},{"teal":2426,"source":"contracts/stakingPool.algo.ts:619","pc":[2110]},{"teal":2427,"source":"contracts/stakingPool.algo.ts:619","pc":[2111,2112]},{"teal":2428,"source":"contracts/stakingPool.algo.ts:619","pc":[2113]},{"teal":2429,"source":"contracts/stakingPool.algo.ts:619","pc":[2114]},{"teal":2430,"source":"contracts/stakingPool.algo.ts:619","pc":[2115]},{"teal":2431,"source":"contracts/stakingPool.algo.ts:619","pc":[2116,2117]},{"teal":2432,"source":"contracts/stakingPool.algo.ts:619","pc":[2118]},{"teal":2433,"source":"contracts/stakingPool.algo.ts:619","pc":[2119]},{"teal":2434,"source":"contracts/stakingPool.algo.ts:619","pc":[2120,2121]},{"teal":2435,"source":"contracts/stakingPool.algo.ts:619","pc":[2122]},{"teal":2436,"source":"contracts/stakingPool.algo.ts:619","pc":[2123]},{"teal":2437,"source":"contracts/stakingPool.algo.ts:619","pc":[2124,2125]},{"teal":2441,"source":"contracts/stakingPool.algo.ts:622","pc":[2126,2127]},{"teal":2442,"source":"contracts/stakingPool.algo.ts:622","pc":[2128,2129,2130]},{"teal":2443,"source":"contracts/stakingPool.algo.ts:622","pc":[2131]},{"teal":2444,"source":"contracts/stakingPool.algo.ts:622","pc":[2132,2133]},{"teal":2445,"source":"contracts/stakingPool.algo.ts:622","pc":[2134]},{"teal":2446,"source":"contracts/stakingPool.algo.ts:622","pc":[2135]},{"teal":2447,"source":"contracts/stakingPool.algo.ts:622","pc":[2136,2137]},{"teal":2448,"source":"contracts/stakingPool.algo.ts:622","pc":[2138]},{"teal":2449,"source":"contracts/stakingPool.algo.ts:622","pc":[2139]},{"teal":2450,"source":"contracts/stakingPool.algo.ts:622","pc":[2140]},{"teal":2451,"source":"contracts/stakingPool.algo.ts:622","pc":[2141]},{"teal":2452,"source":"contracts/stakingPool.algo.ts:622","pc":[2142]},{"teal":2455,"source":"contracts/stakingPool.algo.ts:622","errorMessage":"wideRatio failed","pc":[2143]},{"teal":2456,"source":"contracts/stakingPool.algo.ts:622","pc":[2144,2145]},{"teal":2464,"source":"contracts/stakingPool.algo.ts:625","pc":[2146,2147]},{"teal":2465,"source":"contracts/stakingPool.algo.ts:625","pc":[2148]},{"teal":2466,"source":"contracts/stakingPool.algo.ts:625","pc":[2149]},{"teal":2467,"source":"contracts/stakingPool.algo.ts:625","pc":[2150,2151,2152]},{"teal":2473,"source":"contracts/stakingPool.algo.ts:630","pc":[2153,2154]},{"teal":2474,"source":"contracts/stakingPool.algo.ts:630","pc":[2155,2156]},{"teal":2475,"source":"contracts/stakingPool.algo.ts:630","pc":[2157]},{"teal":2476,"source":"contracts/stakingPool.algo.ts:630","pc":[2158,2159,2160]},{"teal":2481,"source":"contracts/stakingPool.algo.ts:631","pc":[2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184]},{"teal":2482,"source":"contracts/stakingPool.algo.ts:631","pc":[2185]},{"teal":2486,"source":"contracts/stakingPool.algo.ts:632","pc":[2186]},{"teal":2494,"source":"contracts/stakingPool.algo.ts:636","pc":[2187,2188]},{"teal":2495,"source":"contracts/stakingPool.algo.ts:636","pc":[2189,2190,2191]},{"teal":2503,"source":"contracts/stakingPool.algo.ts:643","pc":[2192,2193]},{"teal":2504,"source":"contracts/stakingPool.algo.ts:643","pc":[2194,2195]},{"teal":2505,"source":"contracts/stakingPool.algo.ts:643","pc":[2196,2197,2198]},{"teal":2506,"source":"contracts/stakingPool.algo.ts:643","pc":[2199]},{"teal":2507,"source":"contracts/stakingPool.algo.ts:642","pc":[2200]},{"teal":2508,"source":"contracts/stakingPool.algo.ts:642","pc":[2201]},{"teal":2509,"source":"contracts/stakingPool.algo.ts:644","pc":[2202,2203]},{"teal":2510,"source":"contracts/stakingPool.algo.ts:642","pc":[2204]},{"teal":2511,"source":"contracts/stakingPool.algo.ts:642","pc":[2205]},{"teal":2512,"source":"contracts/stakingPool.algo.ts:642","pc":[2206]},{"teal":2513,"source":"contracts/stakingPool.algo.ts:642","pc":[2207]},{"teal":2514,"source":"contracts/stakingPool.algo.ts:642","pc":[2208]},{"teal":2517,"source":"contracts/stakingPool.algo.ts:642","errorMessage":"wideRatio failed","pc":[2209]},{"teal":2518,"source":"contracts/stakingPool.algo.ts:642","pc":[2210,2211]},{"teal":2522,"source":"contracts/stakingPool.algo.ts:647","pc":[2212,2213]},{"teal":2523,"source":"contracts/stakingPool.algo.ts:647","pc":[2214,2215]},{"teal":2524,"source":"contracts/stakingPool.algo.ts:647","pc":[2216]},{"teal":2525,"source":"contracts/stakingPool.algo.ts:647","pc":[2217]},{"teal":2526,"source":"contracts/stakingPool.algo.ts:647","pc":[2218,2219]},{"teal":2527,"source":"contracts/stakingPool.algo.ts:647","pc":[2220,2221,2222]},{"teal":2528,"source":"contracts/stakingPool.algo.ts:647","pc":[2223]},{"teal":2529,"source":"contracts/stakingPool.algo.ts:647","pc":[2224]},{"teal":2530,"source":"contracts/stakingPool.algo.ts:647","pc":[2225]},{"teal":2531,"source":"contracts/stakingPool.algo.ts:647","pc":[2226]},{"teal":2532,"source":"contracts/stakingPool.algo.ts:647","pc":[2227]},{"teal":2533,"source":"contracts/stakingPool.algo.ts:647","pc":[2228]},{"teal":2536,"source":"contracts/stakingPool.algo.ts:647","errorMessage":"wideRatio failed","pc":[2229]},{"teal":2537,"source":"contracts/stakingPool.algo.ts:647","pc":[2230,2231]},{"teal":2542,"source":"contracts/stakingPool.algo.ts:649","pc":[2232,2233]},{"teal":2543,"source":"contracts/stakingPool.algo.ts:649","pc":[2234,2235]},{"teal":2544,"source":"contracts/stakingPool.algo.ts:649","pc":[2236,2237]},{"teal":2545,"source":"contracts/stakingPool.algo.ts:649","pc":[2238]},{"teal":2546,"source":"contracts/stakingPool.algo.ts:649","pc":[2239]},{"teal":2547,"source":"contracts/stakingPool.algo.ts:649","pc":[2240,2241,2242]},{"teal":2552,"source":"contracts/stakingPool.algo.ts:650","pc":[2243,2244]},{"teal":2553,"source":"contracts/stakingPool.algo.ts:650","pc":[2245,2246]},{"teal":2554,"source":"contracts/stakingPool.algo.ts:650","pc":[2247]},{"teal":2555,"source":"contracts/stakingPool.algo.ts:650","pc":[2248,2249]},{"teal":2560,"source":"contracts/stakingPool.algo.ts:653","pc":[2250,2251]},{"teal":2561,"source":"contracts/stakingPool.algo.ts:653","pc":[2252,2253]},{"teal":2562,"source":"contracts/stakingPool.algo.ts:653","pc":[2254]},{"teal":2563,"source":"contracts/stakingPool.algo.ts:653","pc":[2255,2256]},{"teal":2571,"source":"contracts/stakingPool.algo.ts:654","pc":[2257]},{"teal":2572,"source":"contracts/stakingPool.algo.ts:654","pc":[2258]},{"teal":2573,"source":"contracts/stakingPool.algo.ts:654","pc":[2259,2260]},{"teal":2577,"source":"contracts/stakingPool.algo.ts:655","pc":[2261,2262]},{"teal":2578,"source":"contracts/stakingPool.algo.ts:655","pc":[2263,2264]},{"teal":2582,"source":"contracts/stakingPool.algo.ts:656","pc":[2265,2266]},{"teal":2583,"source":"contracts/stakingPool.algo.ts:656","pc":[2267]},{"teal":2584,"source":"contracts/stakingPool.algo.ts:656","pc":[2268]},{"teal":2585,"source":"contracts/stakingPool.algo.ts:656","pc":[2269,2270]},{"teal":2586,"source":"contracts/stakingPool.algo.ts:656","pc":[2271,2272]},{"teal":2590,"source":"contracts/stakingPool.algo.ts:657","pc":[2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308]},{"teal":2591,"source":"contracts/stakingPool.algo.ts:657","pc":[2309,2310]},{"teal":2594,"source":"contracts/stakingPool.algo.ts:654","pc":[2311]},{"teal":2595,"source":"contracts/stakingPool.algo.ts:654","pc":[2312,2313]},{"teal":2598,"source":"contracts/stakingPool.algo.ts:654","pc":[2314]},{"teal":2602,"source":"contracts/stakingPool.algo.ts:660","pc":[2315,2316]},{"teal":2603,"source":"contracts/stakingPool.algo.ts:660","pc":[2317,2318]},{"teal":2604,"source":"contracts/stakingPool.algo.ts:636","pc":[2319,2320,2321]},{"teal":2609,"source":"contracts/stakingPool.algo.ts:661","pc":[2322,2323]},{"teal":2610,"source":"contracts/stakingPool.algo.ts:661","pc":[2324,2325,2326]},{"teal":2611,"source":"contracts/stakingPool.algo.ts:661","pc":[2327]},{"teal":2612,"source":"contracts/stakingPool.algo.ts:661","pc":[2328]},{"teal":2613,"source":"contracts/stakingPool.algo.ts:661","pc":[2329]},{"teal":2614,"source":"contracts/stakingPool.algo.ts:661","pc":[2330,2331,2332]},{"teal":2622,"source":"contracts/stakingPool.algo.ts:665","pc":[2333,2334]},{"teal":2623,"source":"contracts/stakingPool.algo.ts:665","pc":[2335,2336]},{"teal":2624,"source":"contracts/stakingPool.algo.ts:665","pc":[2337,2338,2339]},{"teal":2625,"source":"contracts/stakingPool.algo.ts:665","pc":[2340]},{"teal":2626,"source":"contracts/stakingPool.algo.ts:664","pc":[2341]},{"teal":2627,"source":"contracts/stakingPool.algo.ts:664","pc":[2342]},{"teal":2628,"source":"contracts/stakingPool.algo.ts:666","pc":[2343,2344]},{"teal":2629,"source":"contracts/stakingPool.algo.ts:664","pc":[2345]},{"teal":2630,"source":"contracts/stakingPool.algo.ts:664","pc":[2346]},{"teal":2631,"source":"contracts/stakingPool.algo.ts:664","pc":[2347]},{"teal":2632,"source":"contracts/stakingPool.algo.ts:664","pc":[2348]},{"teal":2633,"source":"contracts/stakingPool.algo.ts:664","pc":[2349]},{"teal":2636,"source":"contracts/stakingPool.algo.ts:664","errorMessage":"wideRatio failed","pc":[2350]},{"teal":2637,"source":"contracts/stakingPool.algo.ts:664","pc":[2351,2352]},{"teal":2641,"source":"contracts/stakingPool.algo.ts:670","pc":[2353,2354]},{"teal":2642,"source":"contracts/stakingPool.algo.ts:670","pc":[2355,2356]},{"teal":2643,"source":"contracts/stakingPool.algo.ts:670","pc":[2357]},{"teal":2644,"source":"contracts/stakingPool.algo.ts:670","pc":[2358,2359]},{"teal":2649,"source":"contracts/stakingPool.algo.ts:677","pc":[2360,2361]},{"teal":2650,"source":"contracts/stakingPool.algo.ts:677","pc":[2362]},{"teal":2651,"source":"contracts/stakingPool.algo.ts:677","pc":[2363]},{"teal":2652,"source":"contracts/stakingPool.algo.ts:677","pc":[2364,2365,2366]},{"teal":2657,"source":"contracts/stakingPool.algo.ts:680","pc":[2367]},{"teal":2658,"source":"contracts/stakingPool.algo.ts:680","pc":[2368,2369]},{"teal":2664,"source":"contracts/stakingPool.algo.ts:682","pc":[2370,2371]},{"teal":2665,"source":"contracts/stakingPool.algo.ts:682","pc":[2372,2373,2374]},{"teal":2666,"source":"contracts/stakingPool.algo.ts:682","pc":[2375,2376]},{"teal":2667,"source":"contracts/stakingPool.algo.ts:682","pc":[2377,2378,2379]},{"teal":2668,"source":"contracts/stakingPool.algo.ts:682","pc":[2380]},{"teal":2669,"source":"contracts/stakingPool.algo.ts:682","pc":[2381]},{"teal":2670,"source":"contracts/stakingPool.algo.ts:682","pc":[2382,2383,2384]},{"teal":2671,"source":"contracts/stakingPool.algo.ts:683","pc":[2385,2386]},{"teal":2672,"source":"contracts/stakingPool.algo.ts:683","pc":[2387,2388,2389]},{"teal":2673,"source":"contracts/stakingPool.algo.ts:683","pc":[2390,2391]},{"teal":2674,"source":"contracts/stakingPool.algo.ts:683","pc":[2392]},{"teal":2675,"source":"contracts/stakingPool.algo.ts:683","pc":[2393,2394]},{"teal":2676,"source":"contracts/stakingPool.algo.ts:683","pc":[2395,2396,2397]},{"teal":2677,"source":"contracts/stakingPool.algo.ts:683","pc":[2398,2399]},{"teal":2678,"source":"contracts/stakingPool.algo.ts:683","pc":[2400]},{"teal":2679,"source":"contracts/stakingPool.algo.ts:683","pc":[2401]},{"teal":2680,"source":"contracts/stakingPool.algo.ts:683","pc":[2402,2403]},{"teal":2681,"source":"contracts/stakingPool.algo.ts:683","pc":[2404]},{"teal":2682,"source":"contracts/stakingPool.algo.ts:682","pc":[2405]},{"teal":2685,"source":"contracts/stakingPool.algo.ts:681","pc":[2406,2407,2408]},{"teal":2690,"source":"contracts/stakingPool.algo.ts:685","pc":[2409,2410]},{"teal":2691,"source":"contracts/stakingPool.algo.ts:685","pc":[2411,2412]},{"teal":2692,"source":"contracts/stakingPool.algo.ts:685","pc":[2413]},{"teal":2693,"source":"contracts/stakingPool.algo.ts:685","pc":[2414,2415,2416]},{"teal":2694,"source":"contracts/stakingPool.algo.ts:685","pc":[2417,2418]},{"teal":2695,"source":"contracts/stakingPool.algo.ts:685","pc":[2419,2420,2421]},{"teal":2698,"source":"contracts/stakingPool.algo.ts:685","pc":[2422,2423]},{"teal":2701,"source":"contracts/stakingPool.algo.ts:685","pc":[2424,2425]},{"teal":2709,"source":"contracts/stakingPool.algo.ts:686","pc":[2426]},{"teal":2710,"source":"contracts/stakingPool.algo.ts:686","pc":[2427]},{"teal":2711,"source":"contracts/stakingPool.algo.ts:686","pc":[2428,2429]},{"teal":2715,"source":"contracts/stakingPool.algo.ts:687","pc":[2430,2431]},{"teal":2716,"source":"contracts/stakingPool.algo.ts:687","pc":[2432,2433]},{"teal":2720,"source":"contracts/stakingPool.algo.ts:688","pc":[2434,2435]},{"teal":2721,"source":"contracts/stakingPool.algo.ts:688","pc":[2436,2437,2438]},{"teal":2722,"source":"contracts/stakingPool.algo.ts:688","pc":[2439,2440]},{"teal":2726,"source":"contracts/stakingPool.algo.ts:689","pc":[2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495]},{"teal":2727,"source":"contracts/stakingPool.algo.ts:689","pc":[2496,2497]},{"teal":2730,"source":"contracts/stakingPool.algo.ts:686","pc":[2498]},{"teal":2731,"source":"contracts/stakingPool.algo.ts:686","pc":[2499,2500]},{"teal":2734,"source":"contracts/stakingPool.algo.ts:686","pc":[2501]},{"teal":2740,"source":"contracts/stakingPool.algo.ts:692","pc":[2502,2503]},{"teal":2741,"source":"contracts/stakingPool.algo.ts:692","pc":[2504,2505]},{"teal":2742,"source":"contracts/stakingPool.algo.ts:692","pc":[2506]},{"teal":2743,"source":"contracts/stakingPool.algo.ts:692","pc":[2507]},{"teal":2744,"source":"contracts/stakingPool.algo.ts:692","pc":[2508]},{"teal":2745,"source":"contracts/stakingPool.algo.ts:692","pc":[2509,2510,2511]},{"teal":2754,"source":"contracts/stakingPool.algo.ts:693","pc":[2512]},{"teal":2755,"source":"contracts/stakingPool.algo.ts:693","pc":[2513]},{"teal":2756,"source":"contracts/stakingPool.algo.ts:693","pc":[2514,2515]},{"teal":2760,"source":"contracts/stakingPool.algo.ts:694","pc":[2516,2517]},{"teal":2761,"source":"contracts/stakingPool.algo.ts:694","pc":[2518,2519]},{"teal":2762,"source":"contracts/stakingPool.algo.ts:694","pc":[2520]},{"teal":2763,"source":"contracts/stakingPool.algo.ts:694","pc":[2521,2522]},{"teal":2767,"source":"contracts/stakingPool.algo.ts:695","pc":[2523,2524]},{"teal":2768,"source":"contracts/stakingPool.algo.ts:695","pc":[2525,2526,2527]},{"teal":2769,"source":"contracts/stakingPool.algo.ts:695","pc":[2528,2529]},{"teal":2773,"source":"contracts/stakingPool.algo.ts:696","pc":[2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547]},{"teal":2774,"source":"contracts/stakingPool.algo.ts:696","pc":[2548,2549]},{"teal":2777,"source":"contracts/stakingPool.algo.ts:693","pc":[2550]},{"teal":2778,"source":"contracts/stakingPool.algo.ts:693","pc":[2551,2552]},{"teal":2781,"source":"contracts/stakingPool.algo.ts:693","pc":[2553]},{"teal":2790,"source":"contracts/stakingPool.algo.ts:708","pc":[2554]},{"teal":2791,"source":"contracts/stakingPool.algo.ts:708","pc":[2555,2556]},{"teal":2796,"source":"contracts/stakingPool.algo.ts:732","pc":[2557,2558]},{"teal":2797,"source":"contracts/stakingPool.algo.ts:732","pc":[2559]},{"teal":2798,"source":"contracts/stakingPool.algo.ts:732","pc":[2560]},{"teal":2799,"source":"contracts/stakingPool.algo.ts:732","pc":[2561]},{"teal":2800,"source":"contracts/stakingPool.algo.ts:732","pc":[2562,2563,2564]},{"teal":2801,"source":"contracts/stakingPool.algo.ts:732","pc":[2565,2566]},{"teal":2802,"source":"contracts/stakingPool.algo.ts:732","pc":[2567]},{"teal":2803,"source":"contracts/stakingPool.algo.ts:732","pc":[2568]},{"teal":2804,"source":"contracts/stakingPool.algo.ts:732","pc":[2569]},{"teal":2807,"source":"contracts/stakingPool.algo.ts:732","pc":[2570,2571,2572]},{"teal":2812,"source":"contracts/stakingPool.algo.ts:733","pc":[2573]},{"teal":2813,"source":"contracts/stakingPool.algo.ts:733","pc":[2574,2575]},{"teal":2817,"source":"contracts/stakingPool.algo.ts:734","pc":[2576,2577]},{"teal":2818,"source":"contracts/stakingPool.algo.ts:734","pc":[2578,2579]},{"teal":2822,"source":"contracts/stakingPool.algo.ts:736","pc":[2580,2581]},{"teal":2823,"source":"contracts/stakingPool.algo.ts:736","pc":[2582,2583]},{"teal":2827,"source":"contracts/stakingPool.algo.ts:737","pc":[2584]},{"teal":2828,"source":"contracts/stakingPool.algo.ts:737","pc":[2585,2586]},{"teal":2833,"source":"contracts/stakingPool.algo.ts:737","pc":[2587,2588]},{"teal":2834,"source":"contracts/stakingPool.algo.ts:737","pc":[2589,2590]},{"teal":2835,"source":"contracts/stakingPool.algo.ts:737","pc":[2591]},{"teal":2836,"source":"contracts/stakingPool.algo.ts:737","pc":[2592,2593,2594]},{"teal":2841,"source":"contracts/stakingPool.algo.ts:738","pc":[2595,2596]},{"teal":2842,"source":"contracts/stakingPool.algo.ts:738","pc":[2597,2598]},{"teal":2843,"source":"contracts/stakingPool.algo.ts:738","pc":[2599]},{"teal":2844,"source":"contracts/stakingPool.algo.ts:738","pc":[2600,2601,2602]},{"teal":2849,"source":"contracts/stakingPool.algo.ts:739","pc":[2603]},{"teal":2850,"source":"contracts/stakingPool.algo.ts:739","pc":[2604]},{"teal":2851,"source":"contracts/stakingPool.algo.ts:739","pc":[2605,2606]},{"teal":2852,"source":"contracts/stakingPool.algo.ts:739","pc":[2607]},{"teal":2853,"source":"contracts/stakingPool.algo.ts:739","pc":[2608,2609]},{"teal":2854,"source":"contracts/stakingPool.algo.ts:739","pc":[2610,2611]},{"teal":2855,"source":"contracts/stakingPool.algo.ts:739","pc":[2612]},{"teal":2856,"source":"contracts/stakingPool.algo.ts:739","pc":[2613,2614]},{"teal":2857,"source":"contracts/stakingPool.algo.ts:739","pc":[2615,2616]},{"teal":2858,"source":"contracts/stakingPool.algo.ts:739","pc":[2617,2618]},{"teal":2859,"source":"contracts/stakingPool.algo.ts:739","pc":[2619,2620]},{"teal":2860,"source":"contracts/stakingPool.algo.ts:739","pc":[2621]},{"teal":2865,"source":"contracts/stakingPool.algo.ts:741","pc":[2622,2623]},{"teal":2866,"source":"contracts/stakingPool.algo.ts:741","pc":[2624]},{"teal":2867,"source":"contracts/stakingPool.algo.ts:741","pc":[2625]},{"teal":2868,"source":"contracts/stakingPool.algo.ts:741","pc":[2626]},{"teal":2869,"source":"contracts/stakingPool.algo.ts:741","pc":[2627]},{"teal":2870,"source":"contracts/stakingPool.algo.ts:741","pc":[2628,2629]},{"teal":2871,"source":"contracts/stakingPool.algo.ts:741","pc":[2630]},{"teal":2872,"source":"contracts/stakingPool.algo.ts:741","pc":[2631,2632]},{"teal":2877,"source":"contracts/stakingPool.algo.ts:742","pc":[2633,2634]},{"teal":2878,"source":"contracts/stakingPool.algo.ts:742","pc":[2635,2636,2637]},{"teal":2879,"source":"contracts/stakingPool.algo.ts:742","pc":[2638,2639]},{"teal":2880,"source":"contracts/stakingPool.algo.ts:742","pc":[2640]},{"teal":2881,"source":"contracts/stakingPool.algo.ts:742","pc":[2641,2642,2643]},{"teal":2887,"source":"contracts/stakingPool.algo.ts:743","pc":[2644,2645]},{"teal":2888,"source":"contracts/stakingPool.algo.ts:743","pc":[2646,2647,2648]},{"teal":2889,"source":"contracts/stakingPool.algo.ts:743","pc":[2649]},{"teal":2890,"source":"contracts/stakingPool.algo.ts:743","pc":[2650,2651]},{"teal":2891,"source":"contracts/stakingPool.algo.ts:743","pc":[2652]},{"teal":2892,"source":"contracts/stakingPool.algo.ts:743","pc":[2653,2654,2655]},{"teal":2897,"source":"contracts/stakingPool.algo.ts:746","pc":[2656,2657]},{"teal":2898,"source":"contracts/stakingPool.algo.ts:746","pc":[2658,2659]},{"teal":2899,"source":"contracts/stakingPool.algo.ts:746","pc":[2660,2661,2662]},{"teal":2900,"source":"contracts/stakingPool.algo.ts:746","pc":[2663]},{"teal":2901,"source":"contracts/stakingPool.algo.ts:746","pc":[2664]},{"teal":2902,"source":"contracts/stakingPool.algo.ts:746","pc":[2665,2666]},{"teal":2903,"source":"contracts/stakingPool.algo.ts:743","pc":[2667,2668,2669]},{"teal":2908,"source":"contracts/stakingPool.algo.ts:750","pc":[2670,2671]},{"teal":2909,"source":"contracts/stakingPool.algo.ts:750","pc":[2672,2673]},{"teal":2910,"source":"contracts/stakingPool.algo.ts:750","pc":[2674,2675,2676]},{"teal":2911,"source":"contracts/stakingPool.algo.ts:750","pc":[2677]},{"teal":2912,"source":"contracts/stakingPool.algo.ts:750","pc":[2678]},{"teal":2913,"source":"contracts/stakingPool.algo.ts:750","pc":[2679,2680]},{"teal":2918,"source":"contracts/stakingPool.algo.ts:754","pc":[2681,2682]},{"teal":2919,"source":"contracts/stakingPool.algo.ts:754","pc":[2683,2684]},{"teal":2920,"source":"contracts/stakingPool.algo.ts:754","pc":[2685]},{"teal":2921,"source":"contracts/stakingPool.algo.ts:754","pc":[2686,2687,2688]},{"teal":2926,"source":"contracts/stakingPool.algo.ts:755","pc":[2689,2690]},{"teal":2927,"source":"contracts/stakingPool.algo.ts:755","pc":[2691,2692]},{"teal":2928,"source":"contracts/stakingPool.algo.ts:755","pc":[2693,2694,2695]},{"teal":2929,"source":"contracts/stakingPool.algo.ts:755","pc":[2696]},{"teal":2930,"source":"contracts/stakingPool.algo.ts:755","pc":[2697]},{"teal":2931,"source":"contracts/stakingPool.algo.ts:755","pc":[2698,2699]},{"teal":2935,"source":"contracts/stakingPool.algo.ts:756","pc":[2700,2701]},{"teal":2936,"source":"contracts/stakingPool.algo.ts:756","pc":[2702,2703]},{"teal":2937,"source":"contracts/stakingPool.algo.ts:756","pc":[2704]},{"teal":2938,"source":"contracts/stakingPool.algo.ts:756","pc":[2705,2706]},{"teal":2939,"source":"contracts/stakingPool.algo.ts:756","pc":[2707]},{"teal":2940,"source":"contracts/stakingPool.algo.ts:756","pc":[2708,2709]},{"teal":2945,"source":"contracts/stakingPool.algo.ts:758","pc":[2710,2711]},{"teal":2946,"source":"contracts/stakingPool.algo.ts:758","pc":[2712]},{"teal":2947,"source":"contracts/stakingPool.algo.ts:758","pc":[2713]},{"teal":2948,"source":"contracts/stakingPool.algo.ts:758","pc":[2714,2715,2716]},{"teal":2956,"source":"contracts/stakingPool.algo.ts:761","pc":[2717,2718]},{"teal":2957,"source":"contracts/stakingPool.algo.ts:761","pc":[2719,2720,2721]},{"teal":2958,"source":"contracts/stakingPool.algo.ts:761","pc":[2722]},{"teal":2959,"source":"contracts/stakingPool.algo.ts:761","pc":[2723,2724]},{"teal":2960,"source":"contracts/stakingPool.algo.ts:760","pc":[2725]},{"teal":2961,"source":"contracts/stakingPool.algo.ts:761","pc":[2726,2727]},{"teal":2962,"source":"contracts/stakingPool.algo.ts:760","pc":[2728,2729]},{"teal":2963,"source":"contracts/stakingPool.algo.ts:760","pc":[2730,2731]},{"teal":2964,"source":"contracts/stakingPool.algo.ts:760","pc":[2732]},{"teal":2965,"source":"contracts/stakingPool.algo.ts:760","pc":[2733,2734]},{"teal":2966,"source":"contracts/stakingPool.algo.ts:760","pc":[2735]},{"teal":2967,"source":"contracts/stakingPool.algo.ts:760","pc":[2736,2737]},{"teal":2968,"source":"contracts/stakingPool.algo.ts:760","pc":[2738]},{"teal":2969,"source":"contracts/stakingPool.algo.ts:760","pc":[2739]},{"teal":2970,"source":"contracts/stakingPool.algo.ts:762","pc":[2740,2741]},{"teal":2971,"source":"contracts/stakingPool.algo.ts:762","pc":[2742]},{"teal":2972,"source":"contracts/stakingPool.algo.ts:762","pc":[2743,2744]},{"teal":2973,"source":"contracts/stakingPool.algo.ts:760","pc":[2745]},{"teal":2974,"source":"contracts/stakingPool.algo.ts:760","pc":[2746]},{"teal":2975,"source":"contracts/stakingPool.algo.ts:760","pc":[2747]},{"teal":2976,"source":"contracts/stakingPool.algo.ts:760","pc":[2748]},{"teal":2977,"source":"contracts/stakingPool.algo.ts:760","pc":[2749]},{"teal":2978,"source":"contracts/stakingPool.algo.ts:760","pc":[2750]},{"teal":2981,"source":"contracts/stakingPool.algo.ts:760","errorMessage":"wideRatio failed","pc":[2751]},{"teal":2982,"source":"contracts/stakingPool.algo.ts:760","pc":[2752,2753]},{"teal":2986,"source":"contracts/stakingPool.algo.ts:767","pc":[2754,2755]},{"teal":2987,"source":"contracts/stakingPool.algo.ts:767","pc":[2756,2757]},{"teal":2988,"source":"contracts/stakingPool.algo.ts:767","pc":[2758]},{"teal":2989,"source":"contracts/stakingPool.algo.ts:767","pc":[2759,2760]},{"teal":2993,"source":"contracts/stakingPool.algo.ts:768","pc":[2761,2762]},{"teal":2994,"source":"contracts/stakingPool.algo.ts:768","pc":[2763,2764]},{"teal":2995,"source":"contracts/stakingPool.algo.ts:768","pc":[2765,2766]},{"teal":2996,"source":"contracts/stakingPool.algo.ts:768","pc":[2767,2768,2769]},{"teal":2997,"source":"contracts/stakingPool.algo.ts:768","pc":[2770]},{"teal":2998,"source":"contracts/stakingPool.algo.ts:768","pc":[2771,2772]},{"teal":2999,"source":"contracts/stakingPool.algo.ts:768","pc":[2773]},{"teal":3000,"source":"contracts/stakingPool.algo.ts:768","pc":[2774]},{"teal":3001,"source":"contracts/stakingPool.algo.ts:768","pc":[2775]},{"teal":3002,"source":"contracts/stakingPool.algo.ts:768","pc":[2776,2777]},{"teal":3006,"source":"contracts/stakingPool.algo.ts:769","pc":[2778,2779]},{"teal":3007,"source":"contracts/stakingPool.algo.ts:769","pc":[2780,2781]},{"teal":3008,"source":"contracts/stakingPool.algo.ts:769","pc":[2782]},{"teal":3009,"source":"contracts/stakingPool.algo.ts:769","pc":[2783,2784]},{"teal":3017,"source":"contracts/stakingPool.algo.ts:773","pc":[2785,2786]},{"teal":3018,"source":"contracts/stakingPool.algo.ts:773","pc":[2787,2788,2789]},{"teal":3019,"source":"contracts/stakingPool.algo.ts:773","pc":[2790]},{"teal":3020,"source":"contracts/stakingPool.algo.ts:773","pc":[2791,2792]},{"teal":3021,"source":"contracts/stakingPool.algo.ts:772","pc":[2793]},{"teal":3022,"source":"contracts/stakingPool.algo.ts:773","pc":[2794,2795]},{"teal":3023,"source":"contracts/stakingPool.algo.ts:772","pc":[2796,2797]},{"teal":3024,"source":"contracts/stakingPool.algo.ts:772","pc":[2798,2799]},{"teal":3025,"source":"contracts/stakingPool.algo.ts:772","pc":[2800]},{"teal":3026,"source":"contracts/stakingPool.algo.ts:772","pc":[2801,2802]},{"teal":3027,"source":"contracts/stakingPool.algo.ts:772","pc":[2803]},{"teal":3028,"source":"contracts/stakingPool.algo.ts:772","pc":[2804,2805]},{"teal":3029,"source":"contracts/stakingPool.algo.ts:772","pc":[2806]},{"teal":3030,"source":"contracts/stakingPool.algo.ts:772","pc":[2807]},{"teal":3031,"source":"contracts/stakingPool.algo.ts:774","pc":[2808,2809]},{"teal":3032,"source":"contracts/stakingPool.algo.ts:774","pc":[2810]},{"teal":3033,"source":"contracts/stakingPool.algo.ts:774","pc":[2811,2812]},{"teal":3034,"source":"contracts/stakingPool.algo.ts:772","pc":[2813]},{"teal":3035,"source":"contracts/stakingPool.algo.ts:772","pc":[2814]},{"teal":3036,"source":"contracts/stakingPool.algo.ts:772","pc":[2815]},{"teal":3037,"source":"contracts/stakingPool.algo.ts:772","pc":[2816]},{"teal":3038,"source":"contracts/stakingPool.algo.ts:772","pc":[2817]},{"teal":3039,"source":"contracts/stakingPool.algo.ts:772","pc":[2818]},{"teal":3042,"source":"contracts/stakingPool.algo.ts:772","errorMessage":"wideRatio failed","pc":[2819]},{"teal":3043,"source":"contracts/stakingPool.algo.ts:772","pc":[2820,2821]},{"teal":3047,"source":"contracts/stakingPool.algo.ts:778","pc":[2822,2823]},{"teal":3048,"source":"contracts/stakingPool.algo.ts:778","pc":[2824,2825]},{"teal":3049,"source":"contracts/stakingPool.algo.ts:778","pc":[2826]},{"teal":3050,"source":"contracts/stakingPool.algo.ts:778","pc":[2827,2828]},{"teal":3054,"source":"contracts/stakingPool.algo.ts:781","pc":[2829,2830]},{"teal":3055,"source":"contracts/stakingPool.algo.ts:781","pc":[2831,2832]},{"teal":3056,"source":"contracts/stakingPool.algo.ts:781","pc":[2833,2834]},{"teal":3057,"source":"contracts/stakingPool.algo.ts:781","pc":[2835,2836,2837]},{"teal":3058,"source":"contracts/stakingPool.algo.ts:781","pc":[2838]},{"teal":3059,"source":"contracts/stakingPool.algo.ts:781","pc":[2839,2840]},{"teal":3060,"source":"contracts/stakingPool.algo.ts:781","pc":[2841]},{"teal":3061,"source":"contracts/stakingPool.algo.ts:781","pc":[2842]},{"teal":3062,"source":"contracts/stakingPool.algo.ts:781","pc":[2843]},{"teal":3063,"source":"contracts/stakingPool.algo.ts:781","pc":[2844,2845]},{"teal":3067,"source":"contracts/stakingPool.algo.ts:782","pc":[2846,2847]},{"teal":3068,"source":"contracts/stakingPool.algo.ts:782","pc":[2848,2849]},{"teal":3069,"source":"contracts/stakingPool.algo.ts:782","pc":[2850,2851]},{"teal":3070,"source":"contracts/stakingPool.algo.ts:782","pc":[2852,2853,2854]},{"teal":3071,"source":"contracts/stakingPool.algo.ts:782","pc":[2855]},{"teal":3072,"source":"contracts/stakingPool.algo.ts:782","pc":[2856,2857]},{"teal":3073,"source":"contracts/stakingPool.algo.ts:782","pc":[2858]},{"teal":3074,"source":"contracts/stakingPool.algo.ts:782","pc":[2859]},{"teal":3075,"source":"contracts/stakingPool.algo.ts:782","pc":[2860]},{"teal":3076,"source":"contracts/stakingPool.algo.ts:782","pc":[2861,2862]},{"teal":3080,"source":"contracts/stakingPool.algo.ts:783","pc":[2863,2864]},{"teal":3081,"source":"contracts/stakingPool.algo.ts:783","pc":[2865,2866]},{"teal":3082,"source":"contracts/stakingPool.algo.ts:783","pc":[2867]},{"teal":3083,"source":"contracts/stakingPool.algo.ts:783","pc":[2868,2869]},{"teal":3087,"source":"contracts/stakingPool.algo.ts:785","pc":[2870,2871]},{"teal":3088,"source":"contracts/stakingPool.algo.ts:785","pc":[2872]},{"teal":3089,"source":"contracts/stakingPool.algo.ts:785","pc":[2873]},{"teal":3090,"source":"contracts/stakingPool.algo.ts:785","pc":[2874,2875]},{"teal":3091,"source":"contracts/stakingPool.algo.ts:785","pc":[2876]},{"teal":3092,"source":"contracts/stakingPool.algo.ts:785","pc":[2877,2878]},{"teal":3093,"source":"contracts/stakingPool.algo.ts:785","pc":[2879]},{"teal":3104,"source":"contracts/stakingPool.algo.ts:737","pc":[2880,2881]},{"teal":3105,"source":"contracts/stakingPool.algo.ts:737","pc":[2882]},{"teal":3106,"source":"contracts/stakingPool.algo.ts:737","pc":[2883]},{"teal":3107,"source":"contracts/stakingPool.algo.ts:737","pc":[2884,2885]},{"teal":3108,"source":"contracts/stakingPool.algo.ts:737","pc":[2886,2887,2888]},{"teal":3113,"source":"contracts/stakingPool.algo.ts:793","pc":[2889,2890]},{"teal":3114,"source":"contracts/stakingPool.algo.ts:793","pc":[2891]},{"teal":3115,"source":"contracts/stakingPool.algo.ts:793","pc":[2892,2893]},{"teal":3116,"source":"contracts/stakingPool.algo.ts:793","pc":[2894]},{"teal":3117,"source":"contracts/stakingPool.algo.ts:793","pc":[2895,2896]},{"teal":3122,"source":"contracts/stakingPool.algo.ts:797","pc":[2897,2898]},{"teal":3123,"source":"contracts/stakingPool.algo.ts:797","pc":[2899]},{"teal":3124,"source":"contracts/stakingPool.algo.ts:797","pc":[2900]},{"teal":3125,"source":"contracts/stakingPool.algo.ts:797","pc":[2901,2902,2903]},{"teal":3130,"source":"contracts/stakingPool.algo.ts:799","pc":[2904]},{"teal":3131,"source":"contracts/stakingPool.algo.ts:799","pc":[2905,2906]},{"teal":3136,"source":"contracts/stakingPool.algo.ts:799","pc":[2907,2908]},{"teal":3137,"source":"contracts/stakingPool.algo.ts:799","pc":[2909,2910]},{"teal":3138,"source":"contracts/stakingPool.algo.ts:799","pc":[2911]},{"teal":3139,"source":"contracts/stakingPool.algo.ts:799","pc":[2912,2913,2914]},{"teal":3144,"source":"contracts/stakingPool.algo.ts:800","pc":[2915,2916]},{"teal":3145,"source":"contracts/stakingPool.algo.ts:800","pc":[2917,2918]},{"teal":3146,"source":"contracts/stakingPool.algo.ts:800","pc":[2919]},{"teal":3147,"source":"contracts/stakingPool.algo.ts:800","pc":[2920,2921,2922]},{"teal":3152,"source":"contracts/stakingPool.algo.ts:801","pc":[2923]},{"teal":3153,"source":"contracts/stakingPool.algo.ts:801","pc":[2924]},{"teal":3154,"source":"contracts/stakingPool.algo.ts:801","pc":[2925,2926]},{"teal":3155,"source":"contracts/stakingPool.algo.ts:801","pc":[2927]},{"teal":3156,"source":"contracts/stakingPool.algo.ts:801","pc":[2928,2929]},{"teal":3157,"source":"contracts/stakingPool.algo.ts:801","pc":[2930,2931]},{"teal":3158,"source":"contracts/stakingPool.algo.ts:801","pc":[2932]},{"teal":3159,"source":"contracts/stakingPool.algo.ts:801","pc":[2933,2934]},{"teal":3160,"source":"contracts/stakingPool.algo.ts:801","pc":[2935,2936]},{"teal":3161,"source":"contracts/stakingPool.algo.ts:801","pc":[2937,2938]},{"teal":3162,"source":"contracts/stakingPool.algo.ts:801","pc":[2939,2940]},{"teal":3163,"source":"contracts/stakingPool.algo.ts:801","pc":[2941]},{"teal":3168,"source":"contracts/stakingPool.algo.ts:803","pc":[2942,2943]},{"teal":3169,"source":"contracts/stakingPool.algo.ts:803","pc":[2944]},{"teal":3170,"source":"contracts/stakingPool.algo.ts:803","pc":[2945]},{"teal":3171,"source":"contracts/stakingPool.algo.ts:803","pc":[2946]},{"teal":3172,"source":"contracts/stakingPool.algo.ts:803","pc":[2947]},{"teal":3173,"source":"contracts/stakingPool.algo.ts:803","pc":[2948,2949]},{"teal":3174,"source":"contracts/stakingPool.algo.ts:803","pc":[2950]},{"teal":3175,"source":"contracts/stakingPool.algo.ts:803","pc":[2951,2952]},{"teal":3180,"source":"contracts/stakingPool.algo.ts:804","pc":[2953,2954]},{"teal":3181,"source":"contracts/stakingPool.algo.ts:804","pc":[2955,2956,2957]},{"teal":3182,"source":"contracts/stakingPool.algo.ts:804","pc":[2958,2959]},{"teal":3183,"source":"contracts/stakingPool.algo.ts:804","pc":[2960]},{"teal":3184,"source":"contracts/stakingPool.algo.ts:804","pc":[2961]},{"teal":3185,"source":"contracts/stakingPool.algo.ts:804","pc":[2962,2963,2964]},{"teal":3186,"source":"contracts/stakingPool.algo.ts:804","pc":[2965,2966]},{"teal":3187,"source":"contracts/stakingPool.algo.ts:804","pc":[2967,2968,2969]},{"teal":3188,"source":"contracts/stakingPool.algo.ts:804","pc":[2970]},{"teal":3189,"source":"contracts/stakingPool.algo.ts:804","pc":[2971,2972]},{"teal":3190,"source":"contracts/stakingPool.algo.ts:804","pc":[2973]},{"teal":3191,"source":"contracts/stakingPool.algo.ts:804","pc":[2974]},{"teal":3194,"source":"contracts/stakingPool.algo.ts:804","pc":[2975,2976,2977]},{"teal":3199,"source":"contracts/stakingPool.algo.ts:805","pc":[2978,2979]},{"teal":3200,"source":"contracts/stakingPool.algo.ts:805","pc":[2980,2981]},{"teal":3201,"source":"contracts/stakingPool.algo.ts:805","pc":[2982,2983,2984]},{"teal":3202,"source":"contracts/stakingPool.algo.ts:805","pc":[2985]},{"teal":3203,"source":"contracts/stakingPool.algo.ts:805","pc":[2986]},{"teal":3204,"source":"contracts/stakingPool.algo.ts:805","pc":[2987,2988]},{"teal":3209,"source":"contracts/stakingPool.algo.ts:807","pc":[2989,2990]},{"teal":3210,"source":"contracts/stakingPool.algo.ts:807","pc":[2991,2992]},{"teal":3211,"source":"contracts/stakingPool.algo.ts:807","pc":[2993]},{"teal":3212,"source":"contracts/stakingPool.algo.ts:807","pc":[2994,2995,2996]},{"teal":3218,"source":"contracts/stakingPool.algo.ts:812","pc":[2997,2998]},{"teal":3219,"source":"contracts/stakingPool.algo.ts:812","pc":[2999]},{"teal":3220,"source":"contracts/stakingPool.algo.ts:812","pc":[3000]},{"teal":3221,"source":"contracts/stakingPool.algo.ts:812","pc":[3001,3002,3003]},{"teal":3229,"source":"contracts/stakingPool.algo.ts:814","pc":[3004,3005]},{"teal":3230,"source":"contracts/stakingPool.algo.ts:814","pc":[3006,3007,3008]},{"teal":3231,"source":"contracts/stakingPool.algo.ts:814","pc":[3009]},{"teal":3232,"source":"contracts/stakingPool.algo.ts:814","pc":[3010,3011]},{"teal":3233,"source":"contracts/stakingPool.algo.ts:813","pc":[3012]},{"teal":3234,"source":"contracts/stakingPool.algo.ts:813","pc":[3013]},{"teal":3235,"source":"contracts/stakingPool.algo.ts:815","pc":[3014,3015]},{"teal":3236,"source":"contracts/stakingPool.algo.ts:813","pc":[3016]},{"teal":3237,"source":"contracts/stakingPool.algo.ts:813","pc":[3017]},{"teal":3238,"source":"contracts/stakingPool.algo.ts:813","pc":[3018]},{"teal":3239,"source":"contracts/stakingPool.algo.ts:813","pc":[3019]},{"teal":3240,"source":"contracts/stakingPool.algo.ts:813","pc":[3020]},{"teal":3243,"source":"contracts/stakingPool.algo.ts:813","errorMessage":"wideRatio failed","pc":[3021]},{"teal":3244,"source":"contracts/stakingPool.algo.ts:813","pc":[3022,3023]},{"teal":3248,"source":"contracts/stakingPool.algo.ts:818","pc":[3024,3025]},{"teal":3249,"source":"contracts/stakingPool.algo.ts:818","pc":[3026,3027]},{"teal":3250,"source":"contracts/stakingPool.algo.ts:818","pc":[3028,3029]},{"teal":3251,"source":"contracts/stakingPool.algo.ts:818","pc":[3030,3031,3032]},{"teal":3252,"source":"contracts/stakingPool.algo.ts:818","pc":[3033]},{"teal":3253,"source":"contracts/stakingPool.algo.ts:818","pc":[3034,3035]},{"teal":3254,"source":"contracts/stakingPool.algo.ts:818","pc":[3036]},{"teal":3255,"source":"contracts/stakingPool.algo.ts:818","pc":[3037]},{"teal":3256,"source":"contracts/stakingPool.algo.ts:818","pc":[3038]},{"teal":3257,"source":"contracts/stakingPool.algo.ts:818","pc":[3039,3040]},{"teal":3261,"source":"contracts/stakingPool.algo.ts:819","pc":[3041,3042]},{"teal":3262,"source":"contracts/stakingPool.algo.ts:819","pc":[3043,3044]},{"teal":3263,"source":"contracts/stakingPool.algo.ts:819","pc":[3045]},{"teal":3264,"source":"contracts/stakingPool.algo.ts:819","pc":[3046,3047]},{"teal":3270,"source":"contracts/stakingPool.algo.ts:821","pc":[3048,3049]},{"teal":3271,"source":"contracts/stakingPool.algo.ts:821","pc":[3050]},{"teal":3272,"source":"contracts/stakingPool.algo.ts:821","pc":[3051]},{"teal":3273,"source":"contracts/stakingPool.algo.ts:821","pc":[3052,3053,3054]},{"teal":3281,"source":"contracts/stakingPool.algo.ts:823","pc":[3055,3056]},{"teal":3282,"source":"contracts/stakingPool.algo.ts:823","pc":[3057,3058,3059]},{"teal":3283,"source":"contracts/stakingPool.algo.ts:823","pc":[3060]},{"teal":3284,"source":"contracts/stakingPool.algo.ts:823","pc":[3061,3062]},{"teal":3285,"source":"contracts/stakingPool.algo.ts:822","pc":[3063]},{"teal":3286,"source":"contracts/stakingPool.algo.ts:822","pc":[3064]},{"teal":3287,"source":"contracts/stakingPool.algo.ts:824","pc":[3065,3066]},{"teal":3288,"source":"contracts/stakingPool.algo.ts:822","pc":[3067]},{"teal":3289,"source":"contracts/stakingPool.algo.ts:822","pc":[3068]},{"teal":3290,"source":"contracts/stakingPool.algo.ts:822","pc":[3069]},{"teal":3291,"source":"contracts/stakingPool.algo.ts:822","pc":[3070]},{"teal":3292,"source":"contracts/stakingPool.algo.ts:822","pc":[3071]},{"teal":3295,"source":"contracts/stakingPool.algo.ts:822","errorMessage":"wideRatio failed","pc":[3072]},{"teal":3296,"source":"contracts/stakingPool.algo.ts:822","pc":[3073,3074]},{"teal":3300,"source":"contracts/stakingPool.algo.ts:828","pc":[3075,3076]},{"teal":3301,"source":"contracts/stakingPool.algo.ts:828","pc":[3077,3078]},{"teal":3302,"source":"contracts/stakingPool.algo.ts:828","pc":[3079,3080]},{"teal":3303,"source":"contracts/stakingPool.algo.ts:828","pc":[3081,3082,3083]},{"teal":3304,"source":"contracts/stakingPool.algo.ts:828","pc":[3084]},{"teal":3305,"source":"contracts/stakingPool.algo.ts:828","pc":[3085,3086]},{"teal":3306,"source":"contracts/stakingPool.algo.ts:828","pc":[3087]},{"teal":3307,"source":"contracts/stakingPool.algo.ts:828","pc":[3088]},{"teal":3308,"source":"contracts/stakingPool.algo.ts:828","pc":[3089]},{"teal":3309,"source":"contracts/stakingPool.algo.ts:828","pc":[3090,3091]},{"teal":3313,"source":"contracts/stakingPool.algo.ts:829","pc":[3092,3093]},{"teal":3314,"source":"contracts/stakingPool.algo.ts:829","pc":[3094,3095]},{"teal":3315,"source":"contracts/stakingPool.algo.ts:829","pc":[3096,3097]},{"teal":3316,"source":"contracts/stakingPool.algo.ts:829","pc":[3098,3099,3100]},{"teal":3317,"source":"contracts/stakingPool.algo.ts:829","pc":[3101]},{"teal":3318,"source":"contracts/stakingPool.algo.ts:829","pc":[3102,3103]},{"teal":3319,"source":"contracts/stakingPool.algo.ts:829","pc":[3104]},{"teal":3320,"source":"contracts/stakingPool.algo.ts:829","pc":[3105]},{"teal":3321,"source":"contracts/stakingPool.algo.ts:829","pc":[3106]},{"teal":3322,"source":"contracts/stakingPool.algo.ts:829","pc":[3107,3108]},{"teal":3326,"source":"contracts/stakingPool.algo.ts:830","pc":[3109,3110]},{"teal":3327,"source":"contracts/stakingPool.algo.ts:830","pc":[3111,3112]},{"teal":3328,"source":"contracts/stakingPool.algo.ts:830","pc":[3113]},{"teal":3329,"source":"contracts/stakingPool.algo.ts:830","pc":[3114,3115]},{"teal":3334,"source":"contracts/stakingPool.algo.ts:834","pc":[3116,3117]},{"teal":3335,"source":"contracts/stakingPool.algo.ts:834","pc":[3118]},{"teal":3336,"source":"contracts/stakingPool.algo.ts:834","pc":[3119]},{"teal":3337,"source":"contracts/stakingPool.algo.ts:834","pc":[3120,3121]},{"teal":3338,"source":"contracts/stakingPool.algo.ts:834","pc":[3122]},{"teal":3339,"source":"contracts/stakingPool.algo.ts:834","pc":[3123,3124]},{"teal":3340,"source":"contracts/stakingPool.algo.ts:834","pc":[3125]},{"teal":3349,"source":"contracts/stakingPool.algo.ts:799","pc":[3126,3127]},{"teal":3350,"source":"contracts/stakingPool.algo.ts:799","pc":[3128]},{"teal":3351,"source":"contracts/stakingPool.algo.ts:799","pc":[3129]},{"teal":3352,"source":"contracts/stakingPool.algo.ts:799","pc":[3130,3131]},{"teal":3353,"source":"contracts/stakingPool.algo.ts:799","pc":[3132,3133,3134]},{"teal":3362,"source":"contracts/stakingPool.algo.ts:844","pc":[3135,3136]},{"teal":3363,"source":"contracts/stakingPool.algo.ts:844","pc":[3137]},{"teal":3364,"source":"contracts/stakingPool.algo.ts:844","pc":[3138,3139]},{"teal":3365,"source":"contracts/stakingPool.algo.ts:844","pc":[3140]},{"teal":3366,"source":"contracts/stakingPool.algo.ts:844","pc":[3141]},{"teal":3367,"source":"contracts/stakingPool.algo.ts:844","pc":[3142,3143]},{"teal":3368,"source":"contracts/stakingPool.algo.ts:844","pc":[3144]},{"teal":3369,"source":"contracts/stakingPool.algo.ts:844","pc":[3145,3146]},{"teal":3373,"source":"contracts/stakingPool.algo.ts:845","pc":[3147,3148]},{"teal":3374,"source":"contracts/stakingPool.algo.ts:845","pc":[3149]},{"teal":3375,"source":"contracts/stakingPool.algo.ts:845","pc":[3150,3151]},{"teal":3376,"source":"contracts/stakingPool.algo.ts:845","pc":[3152]},{"teal":3377,"source":"contracts/stakingPool.algo.ts:845","pc":[3153,3154]},{"teal":3378,"source":"contracts/stakingPool.algo.ts:845","pc":[3155]},{"teal":3379,"source":"contracts/stakingPool.algo.ts:845","pc":[3156]},{"teal":3384,"source":"contracts/stakingPool.algo.ts:846","pc":[3157,3158]},{"teal":3385,"source":"contracts/stakingPool.algo.ts:846","pc":[3159]},{"teal":3386,"source":"contracts/stakingPool.algo.ts:847","pc":[3160]},{"teal":3387,"source":"contracts/stakingPool.algo.ts:847","pc":[3161,3162]},{"teal":3388,"source":"contracts/stakingPool.algo.ts:847","pc":[3163]},{"teal":3389,"source":"contracts/stakingPool.algo.ts:847","pc":[3164,3165]},{"teal":3390,"source":"contracts/stakingPool.algo.ts:847","pc":[3166]},{"teal":3391,"source":"contracts/stakingPool.algo.ts:847","pc":[3167]},{"teal":3392,"source":"contracts/stakingPool.algo.ts:847","pc":[3168]},{"teal":3393,"source":"contracts/stakingPool.algo.ts:847","pc":[3169]},{"teal":3394,"source":"contracts/stakingPool.algo.ts:847","pc":[3170]},{"teal":3395,"source":"contracts/stakingPool.algo.ts:847","pc":[3171,3172]},{"teal":3396,"source":"contracts/stakingPool.algo.ts:847","pc":[3173]},{"teal":3399,"source":"contracts/stakingPool.algo.ts:847","errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3174]},{"teal":3400,"source":"contracts/stakingPool.algo.ts:847","pc":[3175,3176]},{"teal":3401,"source":"contracts/stakingPool.algo.ts:847","pc":[3177]},{"teal":3402,"source":"contracts/stakingPool.algo.ts:847","pc":[3178]},{"teal":3403,"source":"contracts/stakingPool.algo.ts:847","pc":[3179]},{"teal":3404,"source":"contracts/stakingPool.algo.ts:847","pc":[3180]},{"teal":3405,"source":"contracts/stakingPool.algo.ts:847","pc":[3181,3182]},{"teal":3406,"source":"contracts/stakingPool.algo.ts:847","pc":[3183]},{"teal":3407,"source":"contracts/stakingPool.algo.ts:847","pc":[3184]},{"teal":3408,"source":"contracts/stakingPool.algo.ts:847","pc":[3185]},{"teal":3409,"source":"contracts/stakingPool.algo.ts:846","pc":[3186]},{"teal":3413,"source":"contracts/stakingPool.algo.ts:848","pc":[3187,3188]},{"teal":3414,"source":"contracts/stakingPool.algo.ts:848","pc":[3189]},{"teal":3415,"source":"contracts/stakingPool.algo.ts:848","pc":[3190]},{"teal":3416,"source":"contracts/stakingPool.algo.ts:848","pc":[3191,3192]},{"teal":3417,"source":"contracts/stakingPool.algo.ts:848","pc":[3193]},{"teal":3418,"source":"contracts/stakingPool.algo.ts:848","pc":[3194]},{"teal":3431,"source":"contracts/stakingPool.algo.ts:854","pc":[3195]},{"teal":3432,"source":"contracts/stakingPool.algo.ts:854","pc":[3196]},{"teal":3433,"source":"contracts/stakingPool.algo.ts:854","pc":[3197,3198]},{"teal":3434,"source":"contracts/stakingPool.algo.ts:854","pc":[3199,3200,3201,3202,3203,3204]},{"teal":3435,"source":"contracts/stakingPool.algo.ts:854","pc":[3205,3206]},{"teal":3439,"source":"contracts/stakingPool.algo.ts:855","pc":[3207]},{"teal":3440,"source":"contracts/stakingPool.algo.ts:855","pc":[3208]},{"teal":3441,"source":"contracts/stakingPool.algo.ts:855","pc":[3209,3210]},{"teal":3451,"source":"contracts/stakingPool.algo.ts:857","pc":[3211]},{"teal":3452,"source":"contracts/stakingPool.algo.ts:857","pc":[3212]},{"teal":3453,"source":"contracts/stakingPool.algo.ts:857","pc":[3213]},{"teal":3454,"source":"contracts/stakingPool.algo.ts:857","pc":[3214,3215]},{"teal":3455,"source":"contracts/stakingPool.algo.ts:857","pc":[3216]},{"teal":3456,"source":"contracts/stakingPool.algo.ts:857","pc":[3217]},{"teal":3457,"source":"contracts/stakingPool.algo.ts:857","pc":[3218]},{"teal":3458,"source":"contracts/stakingPool.algo.ts:857","pc":[3219,3220,3221]},{"teal":3459,"source":"contracts/stakingPool.algo.ts:857","pc":[3222]},{"teal":3460,"source":"contracts/stakingPool.algo.ts:857","pc":[3223]},{"teal":3461,"source":"contracts/stakingPool.algo.ts:857","pc":[3224,3225]},{"teal":3462,"source":"contracts/stakingPool.algo.ts:858","pc":[3226,3227]},{"teal":3463,"source":"contracts/stakingPool.algo.ts:858","pc":[3228]},{"teal":3464,"source":"contracts/stakingPool.algo.ts:858","pc":[3229,3230]},{"teal":3465,"source":"contracts/stakingPool.algo.ts:859","pc":[3231,3232]},{"teal":3466,"source":"contracts/stakingPool.algo.ts:859","pc":[3233]},{"teal":3467,"source":"contracts/stakingPool.algo.ts:859","pc":[3234,3235]},{"teal":3468,"source":"contracts/stakingPool.algo.ts:860","pc":[3236,3237]},{"teal":3469,"source":"contracts/stakingPool.algo.ts:860","pc":[3238]},{"teal":3470,"source":"contracts/stakingPool.algo.ts:860","pc":[3239,3240]},{"teal":3471,"source":"contracts/stakingPool.algo.ts:861","pc":[3241,3242]},{"teal":3472,"source":"contracts/stakingPool.algo.ts:861","pc":[3243]},{"teal":3473,"source":"contracts/stakingPool.algo.ts:861","pc":[3244,3245]},{"teal":3476,"source":"contracts/stakingPool.algo.ts:854","pc":[3246]},{"teal":3477,"source":"contracts/stakingPool.algo.ts:854","pc":[3247,3248]},{"teal":3480,"source":"contracts/stakingPool.algo.ts:854","pc":[3249]},{"teal":3481,"source":"contracts/stakingPool.algo.ts:512","pc":[3250]},{"teal":3486,"source":"contracts/stakingPool.algo.ts:886","pc":[3251,3252,3253]},{"teal":3487,"source":"contracts/stakingPool.algo.ts:886","pc":[3254]},{"teal":3490,"source":"contracts/stakingPool.algo.ts:885","pc":[3255,3256,3257]},{"teal":3491,"source":"contracts/stakingPool.algo.ts:885","pc":[3258]},{"teal":3494,"source":"contracts/stakingPool.algo.ts:884","pc":[3259,3260,3261]},{"teal":3495,"source":"contracts/stakingPool.algo.ts:884","pc":[3262]},{"teal":3498,"source":"contracts/stakingPool.algo.ts:883","pc":[3263,3264,3265]},{"teal":3499,"source":"contracts/stakingPool.algo.ts:883","pc":[3266,3267,3268]},{"teal":3502,"source":"contracts/stakingPool.algo.ts:882","pc":[3269,3270,3271]},{"teal":3503,"source":"contracts/stakingPool.algo.ts:882","pc":[3272,3273,3274]},{"teal":3506,"source":"contracts/stakingPool.algo.ts:881","pc":[3275,3276,3277]},{"teal":3507,"source":"contracts/stakingPool.algo.ts:881","pc":[3278,3279,3280]},{"teal":3510,"source":"contracts/stakingPool.algo.ts:880","pc":[3281,3282]},{"teal":3511,"source":"contracts/stakingPool.algo.ts:880","pc":[3283]},{"teal":3512,"source":"contracts/stakingPool.algo.ts:880","pc":[3284]},{"teal":3513,"source":"contracts/stakingPool.algo.ts:880","pc":[3285]},{"teal":3514,"source":"contracts/stakingPool.algo.ts:880","pc":[3286,3287]},{"teal":3515,"source":"contracts/stakingPool.algo.ts:880","pc":[3288]},{"teal":3516,"source":"contracts/stakingPool.algo.ts:880","pc":[3289]},{"teal":3519,"source":"contracts/stakingPool.algo.ts:880","errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3290]},{"teal":3522,"source":"contracts/stakingPool.algo.ts:879","pc":[3291,3292,3293]},{"teal":3523,"source":"contracts/stakingPool.algo.ts:879","pc":[3294]},{"teal":3524,"source":"contracts/stakingPool.algo.ts:879","pc":[3295]},{"teal":3540,"source":"contracts/stakingPool.algo.ts:879","pc":[3296,3297,3298]},{"teal":3543,"source":"contracts/stakingPool.algo.ts:879","pc":[3299]},{"teal":3547,"source":"contracts/stakingPool.algo.ts:888","pc":[3300,3301,3302]},{"teal":3550,"source":"contracts/stakingPool.algo.ts:888","errorMessage":"can only be called by owner or manager of validator","pc":[3303]},{"teal":3554,"source":"contracts/stakingPool.algo.ts:889","pc":[3304,3305,3306]},{"teal":3555,"source":"contracts/stakingPool.algo.ts:889","pc":[3307,3308]},{"teal":3560,"source":"contracts/stakingPool.algo.ts:890","pc":[3309,3310]},{"teal":3561,"source":"contracts/stakingPool.algo.ts:890","pc":[3311,3312]},{"teal":3562,"source":"contracts/stakingPool.algo.ts:890","pc":[3313,3314]},{"teal":3563,"source":"contracts/stakingPool.algo.ts:890","pc":[3315]},{"teal":3566,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3316]},{"teal":3569,"source":"contracts/stakingPool.algo.ts:890","pc":[3317,3318]},{"teal":3570,"source":"contracts/stakingPool.algo.ts:890","pc":[3319,3320]},{"teal":3571,"source":"contracts/stakingPool.algo.ts:890","pc":[3321,3322]},{"teal":3572,"source":"contracts/stakingPool.algo.ts:890","pc":[3323]},{"teal":3575,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3324]},{"teal":3587,"source":"contracts/stakingPool.algo.ts:891","pc":[3325]},{"teal":3588,"source":"contracts/stakingPool.algo.ts:891","pc":[3326,3327]},{"teal":3589,"source":"contracts/stakingPool.algo.ts:891","pc":[3328,3329]},{"teal":3593,"source":"contracts/stakingPool.algo.ts:892","pc":[3330,3331]},{"teal":3594,"source":"contracts/stakingPool.algo.ts:892","pc":[3332,3333]},{"teal":3598,"source":"contracts/stakingPool.algo.ts:893","pc":[3334,3335]},{"teal":3599,"source":"contracts/stakingPool.algo.ts:893","pc":[3336,3337]},{"teal":3603,"source":"contracts/stakingPool.algo.ts:894","pc":[3338,3339]},{"teal":3604,"source":"contracts/stakingPool.algo.ts:894","pc":[3340,3341]},{"teal":3608,"source":"contracts/stakingPool.algo.ts:895","pc":[3342,3343]},{"teal":3609,"source":"contracts/stakingPool.algo.ts:895","pc":[3344,3345]},{"teal":3613,"source":"contracts/stakingPool.algo.ts:896","pc":[3346,3347]},{"teal":3614,"source":"contracts/stakingPool.algo.ts:896","pc":[3348,3349]},{"teal":3618,"source":"contracts/stakingPool.algo.ts:897","pc":[3350,3351]},{"teal":3619,"source":"contracts/stakingPool.algo.ts:897","pc":[3352,3353]},{"teal":3623,"source":"contracts/stakingPool.algo.ts:898","pc":[3354,3355]},{"teal":3624,"source":"contracts/stakingPool.algo.ts:898","pc":[3356,3357]},{"teal":3627,"source":"contracts/stakingPool.algo.ts:891","pc":[3358]},{"teal":3628,"source":"contracts/stakingPool.algo.ts:879","pc":[3359]},{"teal":3633,"source":"contracts/stakingPool.algo.ts:907","pc":[3360,3361,3362]},{"teal":3634,"source":"contracts/stakingPool.algo.ts:907","pc":[3363]},{"teal":3635,"source":"contracts/stakingPool.algo.ts:907","pc":[3364]},{"teal":3642,"source":"contracts/stakingPool.algo.ts:907","pc":[3365,3366,3367]},{"teal":3647,"source":"contracts/stakingPool.algo.ts:910","pc":[3368,3369]},{"teal":3648,"source":"contracts/stakingPool.algo.ts:910","pc":[3370]},{"teal":3649,"source":"contracts/stakingPool.algo.ts:910","pc":[3371]},{"teal":3650,"source":"contracts/stakingPool.algo.ts:910","pc":[3372,3373]},{"teal":3651,"source":"contracts/stakingPool.algo.ts:910","pc":[3374]},{"teal":3652,"source":"contracts/stakingPool.algo.ts:910","pc":[3375]},{"teal":3653,"source":"contracts/stakingPool.algo.ts:910","pc":[3376,3377,3378]},{"teal":3658,"source":"contracts/stakingPool.algo.ts:911","pc":[3379,3380,3381]},{"teal":3661,"source":"contracts/stakingPool.algo.ts:911","errorMessage":"can only be called by owner or manager of validator","pc":[3382]},{"teal":3666,"source":"contracts/stakingPool.algo.ts:914","pc":[3383]},{"teal":3667,"source":"contracts/stakingPool.algo.ts:914","pc":[3384,3385]},{"teal":3668,"source":"contracts/stakingPool.algo.ts:914","pc":[3386,3387]},{"teal":3671,"source":"contracts/stakingPool.algo.ts:914","pc":[3388]},{"teal":3672,"source":"contracts/stakingPool.algo.ts:914","pc":[3389,3390]},{"teal":3675,"source":"contracts/stakingPool.algo.ts:914","pc":[3391]},{"teal":3676,"source":"contracts/stakingPool.algo.ts:907","pc":[3392]},{"teal":3681,"source":"contracts/stakingPool.algo.ts:920","pc":[3393,3394,3395]},{"teal":3682,"source":"contracts/stakingPool.algo.ts:920","pc":[3396,3397,3398]},{"teal":3685,"source":"contracts/stakingPool.algo.ts:920","pc":[3399,3400,3401]},{"teal":3686,"source":"contracts/stakingPool.algo.ts:920","pc":[3402]},{"teal":3689,"source":"contracts/stakingPool.algo.ts:920","pc":[3403,3404,3405]},{"teal":3690,"source":"contracts/stakingPool.algo.ts:920","pc":[3406]},{"teal":3691,"source":"contracts/stakingPool.algo.ts:920","pc":[3407]},{"teal":3695,"source":"contracts/stakingPool.algo.ts:920","pc":[3408,3409,3410]},{"teal":3699,"source":"contracts/stakingPool.algo.ts:921","pc":[3411,3412,3413]},{"teal":3702,"source":"contracts/stakingPool.algo.ts:921","errorMessage":"can only be called by owner or manager of validator","pc":[3414]},{"teal":3710,"source":"contracts/stakingPool.algo.ts:923","pc":[3415]},{"teal":3711,"source":"contracts/stakingPool.algo.ts:923","pc":[3416]},{"teal":3712,"source":"contracts/stakingPool.algo.ts:923","pc":[3417,3418]},{"teal":3716,"source":"contracts/stakingPool.algo.ts:924","pc":[3419,3420]},{"teal":3717,"source":"contracts/stakingPool.algo.ts:924","pc":[3421,3422]},{"teal":3721,"source":"contracts/stakingPool.algo.ts:925","pc":[3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439]},{"teal":3722,"source":"contracts/stakingPool.algo.ts:925","pc":[3440,3441]},{"teal":3723,"source":"contracts/stakingPool.algo.ts:925","pc":[3442,3443]},{"teal":3724,"source":"contracts/stakingPool.algo.ts:925","pc":[3444,3445]},{"teal":3725,"source":"contracts/stakingPool.algo.ts:925","pc":[3446,3447]},{"teal":3726,"source":"contracts/stakingPool.algo.ts:925","pc":[3448]},{"teal":3727,"source":"contracts/stakingPool.algo.ts:925","pc":[3449,3450]},{"teal":3728,"source":"contracts/stakingPool.algo.ts:925","pc":[3451,3452]},{"teal":3729,"source":"contracts/stakingPool.algo.ts:925","pc":[3453,3454]},{"teal":3733,"source":"contracts/stakingPool.algo.ts:926","pc":[3455,3456]},{"teal":3734,"source":"contracts/stakingPool.algo.ts:926","pc":[3457,3458]},{"teal":3737,"source":"contracts/stakingPool.algo.ts:923","pc":[3459]},{"teal":3738,"source":"contracts/stakingPool.algo.ts:923","pc":[3460,3461]},{"teal":3741,"source":"contracts/stakingPool.algo.ts:923","pc":[3462]},{"teal":3742,"source":"contracts/stakingPool.algo.ts:920","pc":[3463]},{"teal":3747,"source":"contracts/stakingPool.algo.ts:936","pc":[3464,3465]},{"teal":3750,"source":"contracts/stakingPool.algo.ts:936","pc":[3466,3467,3468]},{"teal":3751,"source":"contracts/stakingPool.algo.ts:936","pc":[3469]},{"teal":3752,"source":"contracts/stakingPool.algo.ts:936","pc":[3470]},{"teal":3753,"source":"contracts/stakingPool.algo.ts:936","pc":[3471,3472]},{"teal":3754,"source":"contracts/stakingPool.algo.ts:936","pc":[3473]},{"teal":3757,"source":"contracts/stakingPool.algo.ts:936","errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3474]},{"teal":3760,"source":"contracts/stakingPool.algo.ts:936","pc":[3475,3476,3477]},{"teal":3761,"source":"contracts/stakingPool.algo.ts:936","pc":[3478]},{"teal":3762,"source":"contracts/stakingPool.algo.ts:936","pc":[3479]},{"teal":3763,"source":"contracts/stakingPool.algo.ts:936","pc":[3480]},{"teal":3764,"source":"contracts/stakingPool.algo.ts:936","pc":[3481]},{"teal":3773,"source":"contracts/stakingPool.algo.ts:936","pc":[3482,3483,3484]},{"teal":3776,"source":"contracts/stakingPool.algo.ts:936","pc":[3485]},{"teal":3780,"source":"contracts/stakingPool.algo.ts:937","pc":[3486]},{"teal":3781,"source":"contracts/stakingPool.algo.ts:937","pc":[3487]},{"teal":3782,"source":"contracts/stakingPool.algo.ts:937","pc":[3488,3489]},{"teal":3783,"source":"contracts/stakingPool.algo.ts:937","pc":[3490,3491,3492]},{"teal":3784,"source":"contracts/stakingPool.algo.ts:937","pc":[3493]},{"teal":3785,"source":"contracts/stakingPool.algo.ts:937","pc":[3494]},{"teal":3788,"source":"contracts/stakingPool.algo.ts:937","errorMessage":"caller must be part of same validator set!","pc":[3495]},{"teal":3792,"source":"contracts/stakingPool.algo.ts:938","pc":[3496,3497]},{"teal":3793,"source":"contracts/stakingPool.algo.ts:938","pc":[3498]},{"teal":3794,"source":"contracts/stakingPool.algo.ts:938","pc":[3499]},{"teal":3795,"source":"contracts/stakingPool.algo.ts:938","pc":[3500]},{"teal":3798,"source":"contracts/stakingPool.algo.ts:938","errorMessage":"callee must be pool 1","pc":[3501]},{"teal":3802,"source":"contracts/stakingPool.algo.ts:939","pc":[3502,3503]},{"teal":3803,"source":"contracts/stakingPool.algo.ts:939","pc":[3504,3505,3506]},{"teal":3804,"source":"contracts/stakingPool.algo.ts:939","pc":[3507]},{"teal":3805,"source":"contracts/stakingPool.algo.ts:939","pc":[3508]},{"teal":3806,"source":"contracts/stakingPool.algo.ts:939","pc":[3509]},{"teal":3809,"source":"contracts/stakingPool.algo.ts:939","errorMessage":"caller must NOT be pool 1","pc":[3510]},{"teal":3816,"source":"contracts/stakingPool.algo.ts:941","pc":[3511]},{"teal":3817,"source":"contracts/stakingPool.algo.ts:941","pc":[3512]},{"teal":3818,"source":"contracts/stakingPool.algo.ts:941","pc":[3513,3514]},{"teal":3819,"source":"contracts/stakingPool.algo.ts:941","pc":[3515,3516]},{"teal":3820,"source":"contracts/stakingPool.algo.ts:941","pc":[3517,3518]},{"teal":3824,"source":"contracts/stakingPool.algo.ts:942","pc":[3519]},{"teal":3825,"source":"contracts/stakingPool.algo.ts:942","pc":[3520]},{"teal":3826,"source":"contracts/stakingPool.algo.ts:942","pc":[3521,3522]},{"teal":3830,"source":"contracts/stakingPool.algo.ts:943","pc":[3523,3524]},{"teal":3831,"source":"contracts/stakingPool.algo.ts:943","pc":[3525,3526,3527]},{"teal":3832,"source":"contracts/stakingPool.algo.ts:943","pc":[3528]},{"teal":3833,"source":"contracts/stakingPool.algo.ts:943","pc":[3529]},{"teal":3834,"source":"contracts/stakingPool.algo.ts:943","pc":[3530,3531]},{"teal":3835,"source":"contracts/stakingPool.algo.ts:943","pc":[3532,3533]},{"teal":3836,"source":"contracts/stakingPool.algo.ts:943","pc":[3534,3535,3536]},{"teal":3837,"source":"contracts/stakingPool.algo.ts:943","pc":[3537]},{"teal":3838,"source":"contracts/stakingPool.algo.ts:943","pc":[3538]},{"teal":3839,"source":"contracts/stakingPool.algo.ts:943","pc":[3539,3540]},{"teal":3842,"source":"contracts/stakingPool.algo.ts:941","pc":[3541]},{"teal":3843,"source":"contracts/stakingPool.algo.ts:941","pc":[3542,3543]},{"teal":3846,"source":"contracts/stakingPool.algo.ts:941","pc":[3544]},{"teal":3847,"source":"contracts/stakingPool.algo.ts:941","pc":[3545,3546]},{"teal":3848,"source":"contracts/stakingPool.algo.ts:941","pc":[3547]},{"teal":3849,"source":"contracts/stakingPool.algo.ts:941","pc":[3548]},{"teal":3850,"source":"contracts/stakingPool.algo.ts:941","pc":[3549,3550]},{"teal":3851,"source":"contracts/stakingPool.algo.ts:941","pc":[3551,3552,3553]},{"teal":3852,"source":"contracts/stakingPool.algo.ts:941","pc":[3554]},{"teal":3853,"source":"contracts/stakingPool.algo.ts:941","pc":[3555,3556]},{"teal":3857,"source":"contracts/stakingPool.algo.ts:945","pc":[3557,3558]},{"teal":3858,"source":"contracts/stakingPool.algo.ts:945","pc":[3559,3560]},{"teal":3859,"source":"contracts/stakingPool.algo.ts:945","pc":[3561,3562,3563]},{"teal":3860,"source":"contracts/stakingPool.algo.ts:945","pc":[3564]},{"teal":3861,"source":"contracts/stakingPool.algo.ts:945","pc":[3565]},{"teal":3862,"source":"contracts/stakingPool.algo.ts:945","pc":[3566]},{"teal":3866,"source":"contracts/stakingPool.algo.ts:946","pc":[3567,3568]},{"teal":3867,"source":"contracts/stakingPool.algo.ts:946","pc":[3569,3570]},{"teal":3868,"source":"contracts/stakingPool.algo.ts:946","pc":[3571,3572,3573]},{"teal":3869,"source":"contracts/stakingPool.algo.ts:946","pc":[3574]},{"teal":3870,"source":"contracts/stakingPool.algo.ts:946","pc":[3575,3576]},{"teal":3871,"source":"contracts/stakingPool.algo.ts:946","pc":[3577]},{"teal":3872,"source":"contracts/stakingPool.algo.ts:946","pc":[3578]},{"teal":3873,"source":"contracts/stakingPool.algo.ts:946","pc":[3579]},{"teal":3880,"source":"contracts/stakingPool.algo.ts:948","pc":[3580]},{"teal":3881,"source":"contracts/stakingPool.algo.ts:948","pc":[3581]},{"teal":3882,"source":"contracts/stakingPool.algo.ts:948","pc":[3582,3583]},{"teal":3883,"source":"contracts/stakingPool.algo.ts:948","pc":[3584,3585]},{"teal":3884,"source":"contracts/stakingPool.algo.ts:948","pc":[3586,3587]},{"teal":3888,"source":"contracts/stakingPool.algo.ts:949","pc":[3588]},{"teal":3889,"source":"contracts/stakingPool.algo.ts:949","pc":[3589]},{"teal":3890,"source":"contracts/stakingPool.algo.ts:949","pc":[3590,3591]},{"teal":3894,"source":"contracts/stakingPool.algo.ts:950","pc":[3592]},{"teal":3895,"source":"contracts/stakingPool.algo.ts:950","pc":[3593]},{"teal":3896,"source":"contracts/stakingPool.algo.ts:950","pc":[3594]},{"teal":3897,"source":"contracts/stakingPool.algo.ts:950","pc":[3595,3596]},{"teal":3900,"source":"contracts/stakingPool.algo.ts:948","pc":[3597]},{"teal":3901,"source":"contracts/stakingPool.algo.ts:948","pc":[3598,3599]},{"teal":3904,"source":"contracts/stakingPool.algo.ts:948","pc":[3600]},{"teal":3905,"source":"contracts/stakingPool.algo.ts:948","pc":[3601,3602]},{"teal":3906,"source":"contracts/stakingPool.algo.ts:948","pc":[3603]},{"teal":3907,"source":"contracts/stakingPool.algo.ts:948","pc":[3604]},{"teal":3908,"source":"contracts/stakingPool.algo.ts:948","pc":[3605,3606]},{"teal":3909,"source":"contracts/stakingPool.algo.ts:948","pc":[3607,3608,3609]},{"teal":3912,"source":"contracts/stakingPool.algo.ts:936","pc":[3610,3611]},{"teal":3913,"source":"contracts/stakingPool.algo.ts:936","pc":[3612]},{"teal":3917,"source":"contracts/stakingPool.algo.ts:954","pc":[3613,3614,3615]},{"teal":3920,"source":"contracts/stakingPool.algo.ts:954","pc":[3616]},{"teal":3927,"source":"contracts/stakingPool.algo.ts:955","pc":[3617]},{"teal":3928,"source":"contracts/stakingPool.algo.ts:955","pc":[3618]},{"teal":3929,"source":"contracts/stakingPool.algo.ts:955","pc":[3619,3620]},{"teal":3930,"source":"contracts/stakingPool.algo.ts:955","pc":[3621,3622,3623,3624,3625,3626]},{"teal":3931,"source":"contracts/stakingPool.algo.ts:955","pc":[3627,3628]},{"teal":3935,"source":"contracts/stakingPool.algo.ts:956","pc":[3629]},{"teal":3936,"source":"contracts/stakingPool.algo.ts:956","pc":[3630]},{"teal":3937,"source":"contracts/stakingPool.algo.ts:956","pc":[3631,3632]},{"teal":3941,"source":"contracts/stakingPool.algo.ts:957","pc":[3633]},{"teal":3942,"source":"contracts/stakingPool.algo.ts:957","pc":[3634]},{"teal":3943,"source":"contracts/stakingPool.algo.ts:957","pc":[3635]},{"teal":3944,"source":"contracts/stakingPool.algo.ts:957","pc":[3636,3637]},{"teal":3947,"source":"contracts/stakingPool.algo.ts:955","pc":[3638]},{"teal":3948,"source":"contracts/stakingPool.algo.ts:955","pc":[3639,3640]},{"teal":3951,"source":"contracts/stakingPool.algo.ts:955","pc":[3641]},{"teal":3952,"source":"contracts/stakingPool.algo.ts:955","pc":[3642,3643]},{"teal":3953,"source":"contracts/stakingPool.algo.ts:955","pc":[3644]},{"teal":3954,"source":"contracts/stakingPool.algo.ts:955","pc":[3645]},{"teal":3955,"source":"contracts/stakingPool.algo.ts:955","pc":[3646,3647]},{"teal":3956,"source":"contracts/stakingPool.algo.ts:955","pc":[3648,3649,3650]},{"teal":3957,"source":"contracts/stakingPool.algo.ts:955","pc":[3651,3652]},{"teal":3961,"source":"contracts/stakingPool.algo.ts:959","pc":[3653,3654]},{"teal":3962,"source":"contracts/stakingPool.algo.ts:959","pc":[3655,3656]},{"teal":3963,"source":"contracts/stakingPool.algo.ts:959","pc":[3657,3658,3659]},{"teal":3964,"source":"contracts/stakingPool.algo.ts:959","pc":[3660]},{"teal":3965,"source":"contracts/stakingPool.algo.ts:959","pc":[3661]},{"teal":3966,"source":"contracts/stakingPool.algo.ts:959","pc":[3662,3663,3664]},{"teal":3967,"source":"contracts/stakingPool.algo.ts:959","pc":[3665,3666]},{"teal":3968,"source":"contracts/stakingPool.algo.ts:959","pc":[3667,3668]},{"teal":3969,"source":"contracts/stakingPool.algo.ts:959","pc":[3669,3670,3671]},{"teal":3970,"source":"contracts/stakingPool.algo.ts:959","pc":[3672]},{"teal":3971,"source":"contracts/stakingPool.algo.ts:959","pc":[3673]},{"teal":3975,"source":"contracts/stakingPool.algo.ts:954","pc":[3674,3675]},{"teal":3976,"source":"contracts/stakingPool.algo.ts:954","pc":[3676]},{"teal":3983,"source":"contracts/stakingPool.algo.ts:966","pc":[3677,3678,3679]},{"teal":3986,"source":"contracts/stakingPool.algo.ts:966","pc":[3680]},{"teal":3990,"source":"contracts/stakingPool.algo.ts:967","pc":[3681,3682,3683]},{"teal":3991,"source":"contracts/stakingPool.algo.ts:967","pc":[3684,3685]},{"teal":3995,"source":"contracts/stakingPool.algo.ts:969","pc":[3686,3687]},{"teal":3996,"source":"contracts/stakingPool.algo.ts:969","pc":[3688,3689]},{"teal":3997,"source":"contracts/stakingPool.algo.ts:969","pc":[3690]},{"teal":3998,"source":"contracts/stakingPool.algo.ts:969","pc":[3691]},{"teal":3999,"source":"contracts/stakingPool.algo.ts:969","pc":[3692,3693]},{"teal":4000,"source":"contracts/stakingPool.algo.ts:969","pc":[3694]},{"teal":4001,"source":"contracts/stakingPool.algo.ts:969","pc":[3695]},{"teal":4002,"source":"contracts/stakingPool.algo.ts:969","pc":[3696]},{"teal":4003,"source":"contracts/stakingPool.algo.ts:969","pc":[3697]},{"teal":4004,"source":"contracts/stakingPool.algo.ts:969","pc":[3698]},{"teal":4007,"source":"contracts/stakingPool.algo.ts:969","errorMessage":"wideRatio failed","pc":[3699]},{"teal":4010,"source":"contracts/stakingPool.algo.ts:966","pc":[3700,3701]},{"teal":4011,"source":"contracts/stakingPool.algo.ts:966","pc":[3702]},{"teal":4015,"source":"contracts/stakingPool.algo.ts:972","pc":[3703,3704,3705]},{"teal":4020,"source":"contracts/stakingPool.algo.ts:974","pc":[3706,3707]},{"teal":4021,"source":"contracts/stakingPool.algo.ts:974","pc":[3708,3709]},{"teal":4022,"source":"contracts/stakingPool.algo.ts:974","pc":[3710]},{"teal":4023,"source":"contracts/stakingPool.algo.ts:974","pc":[3711]},{"teal":4024,"source":"contracts/stakingPool.algo.ts:974","pc":[3712,3713,3714]},{"teal":4029,"source":"contracts/stakingPool.algo.ts:975","pc":[3715,3716]},{"teal":4030,"source":"contracts/stakingPool.algo.ts:975","pc":[3717]},{"teal":4035,"source":"contracts/stakingPool.algo.ts:977","pc":[3718]},{"teal":4036,"source":"contracts/stakingPool.algo.ts:972","pc":[3719]},{"teal":4040,"source":"contracts/stakingPool.algo.ts:980","pc":[3720,3721,3722]},{"teal":4044,"source":"contracts/stakingPool.algo.ts:981","pc":[3723]},{"teal":4045,"source":"contracts/stakingPool.algo.ts:980","pc":[3724]},{"teal":4051,"source":"contracts/stakingPool.algo.ts:987","pc":[3725,3726,3727]},{"teal":4054,"source":"contracts/stakingPool.algo.ts:987","pc":[3728]},{"teal":4055,"source":"contracts/stakingPool.algo.ts:987","pc":[3729,3730]},{"teal":4059,"source":"contracts/stakingPool.algo.ts:988","pc":[3731,3732]},{"teal":4060,"source":"contracts/stakingPool.algo.ts:988","pc":[3733]},{"teal":4061,"source":"contracts/stakingPool.algo.ts:988","pc":[3734]},{"teal":4062,"source":"contracts/stakingPool.algo.ts:988","pc":[3735,3736]},{"teal":4067,"source":"contracts/stakingPool.algo.ts:989","pc":[3737,3738]},{"teal":4068,"source":"contracts/stakingPool.algo.ts:989","pc":[3739,3740]},{"teal":4069,"source":"contracts/stakingPool.algo.ts:989","pc":[3741]},{"teal":4070,"source":"contracts/stakingPool.algo.ts:989","pc":[3742,3743]},{"teal":4071,"source":"contracts/stakingPool.algo.ts:989","pc":[3744]},{"teal":4072,"source":"contracts/stakingPool.algo.ts:989","pc":[3745]},{"teal":4073,"source":"contracts/stakingPool.algo.ts:989","pc":[3746]},{"teal":4074,"source":"contracts/stakingPool.algo.ts:989","pc":[3747]},{"teal":4077,"source":"contracts/stakingPool.algo.ts:989","errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[3748]},{"teal":4078,"source":"contracts/stakingPool.algo.ts:989","pc":[3749,3750,3751,3752,3753,3754,3755,3756,3757,3758]},{"teal":4079,"source":"contracts/stakingPool.algo.ts:989","pc":[3759]},{"teal":4080,"source":"contracts/stakingPool.algo.ts:989","pc":[3760]},{"teal":4081,"source":"contracts/stakingPool.algo.ts:989","pc":[3761]},{"teal":4082,"source":"contracts/stakingPool.algo.ts:989","pc":[3762]},{"teal":4083,"source":"contracts/stakingPool.algo.ts:989","pc":[3763,3764]},{"teal":4084,"source":"contracts/stakingPool.algo.ts:989","pc":[3765]},{"teal":4085,"source":"contracts/stakingPool.algo.ts:989","pc":[3766]},{"teal":4086,"source":"contracts/stakingPool.algo.ts:989","pc":[3767]},{"teal":4087,"source":"contracts/stakingPool.algo.ts:989","pc":[3768]},{"teal":4088,"source":"contracts/stakingPool.algo.ts:989","pc":[3769]},{"teal":4089,"source":"contracts/stakingPool.algo.ts:989","pc":[3770]},{"teal":4090,"source":"contracts/stakingPool.algo.ts:989","pc":[3771,3772,3773]},{"teal":4096,"source":"contracts/stakingPool.algo.ts:990","pc":[3774,3775]},{"teal":4097,"source":"contracts/stakingPool.algo.ts:990","pc":[3776,3777]},{"teal":4098,"source":"contracts/stakingPool.algo.ts:990","pc":[3778]},{"teal":4099,"source":"contracts/stakingPool.algo.ts:990","pc":[3779,3780,3781]},{"teal":4104,"source":"contracts/stakingPool.algo.ts:991","pc":[3782]},{"teal":4105,"source":"contracts/stakingPool.algo.ts:991","pc":[3783]},{"teal":4106,"source":"contracts/stakingPool.algo.ts:991","pc":[3784,3785]},{"teal":4107,"source":"contracts/stakingPool.algo.ts:991","pc":[3786]},{"teal":4108,"source":"contracts/stakingPool.algo.ts:991","pc":[3787,3788]},{"teal":4109,"source":"contracts/stakingPool.algo.ts:991","pc":[3789,3790]},{"teal":4110,"source":"contracts/stakingPool.algo.ts:991","pc":[3791]},{"teal":4111,"source":"contracts/stakingPool.algo.ts:991","pc":[3792,3793]},{"teal":4112,"source":"contracts/stakingPool.algo.ts:991","pc":[3794,3795]},{"teal":4113,"source":"contracts/stakingPool.algo.ts:991","pc":[3796,3797]},{"teal":4114,"source":"contracts/stakingPool.algo.ts:991","pc":[3798,3799]},{"teal":4115,"source":"contracts/stakingPool.algo.ts:991","pc":[3800]},{"teal":4120,"source":"contracts/stakingPool.algo.ts:993","pc":[3801,3802]},{"teal":4121,"source":"contracts/stakingPool.algo.ts:993","pc":[3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820]},{"teal":4122,"source":"contracts/stakingPool.algo.ts:993","pc":[3821]},{"teal":4123,"source":"contracts/stakingPool.algo.ts:993","pc":[3822]},{"teal":4124,"source":"contracts/stakingPool.algo.ts:993","pc":[3823]},{"teal":4125,"source":"contracts/stakingPool.algo.ts:993","pc":[3824,3825]},{"teal":4126,"source":"contracts/stakingPool.algo.ts:993","pc":[3826]},{"teal":4129,"source":"contracts/stakingPool.algo.ts:993","errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[3827]},{"teal":4130,"source":"contracts/stakingPool.algo.ts:993","pc":[3828,3829]},{"teal":4131,"source":"contracts/stakingPool.algo.ts:993","pc":[3830]},{"teal":4132,"source":"contracts/stakingPool.algo.ts:993","pc":[3831]},{"teal":4133,"source":"contracts/stakingPool.algo.ts:993","pc":[3832]},{"teal":4134,"source":"contracts/stakingPool.algo.ts:993","pc":[3833]},{"teal":4135,"source":"contracts/stakingPool.algo.ts:993","pc":[3834,3835]},{"teal":4136,"source":"contracts/stakingPool.algo.ts:993","pc":[3836]},{"teal":4137,"source":"contracts/stakingPool.algo.ts:993","pc":[3837]},{"teal":4138,"source":"contracts/stakingPool.algo.ts:993","pc":[3838]},{"teal":4139,"source":"contracts/stakingPool.algo.ts:993","pc":[3839,3840]},{"teal":4143,"source":"contracts/stakingPool.algo.ts:994","pc":[3841,3842]},{"teal":4144,"source":"contracts/stakingPool.algo.ts:994","pc":[3843]},{"teal":4145,"source":"contracts/stakingPool.algo.ts:994","pc":[3844,3845]},{"teal":4146,"source":"contracts/stakingPool.algo.ts:994","pc":[3846]},{"teal":4147,"source":"contracts/stakingPool.algo.ts:994","pc":[3847]},{"teal":4148,"source":"contracts/stakingPool.algo.ts:994","pc":[3848]},{"teal":4149,"source":"contracts/stakingPool.algo.ts:994","pc":[3849,3850]},{"teal":4150,"source":"contracts/stakingPool.algo.ts:994","pc":[3851]},{"teal":4153,"source":"contracts/stakingPool.algo.ts:994","errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[3852]},{"teal":4154,"source":"contracts/stakingPool.algo.ts:994","pc":[3853,3854]},{"teal":4155,"source":"contracts/stakingPool.algo.ts:994","pc":[3855]},{"teal":4156,"source":"contracts/stakingPool.algo.ts:994","pc":[3856]},{"teal":4157,"source":"contracts/stakingPool.algo.ts:994","pc":[3857]},{"teal":4158,"source":"contracts/stakingPool.algo.ts:994","pc":[3858]},{"teal":4159,"source":"contracts/stakingPool.algo.ts:994","pc":[3859,3860]},{"teal":4160,"source":"contracts/stakingPool.algo.ts:994","pc":[3861]},{"teal":4161,"source":"contracts/stakingPool.algo.ts:994","pc":[3862]},{"teal":4162,"source":"contracts/stakingPool.algo.ts:994","pc":[3863]},{"teal":4163,"source":"contracts/stakingPool.algo.ts:994","pc":[3864,3865]},{"teal":4168,"source":"contracts/stakingPool.algo.ts:995","pc":[3866,3867]},{"teal":4169,"source":"contracts/stakingPool.algo.ts:995","pc":[3868,3869]},{"teal":4170,"source":"contracts/stakingPool.algo.ts:995","pc":[3870]},{"teal":4171,"source":"contracts/stakingPool.algo.ts:995","pc":[3871,3872,3873]},{"teal":4178,"source":"contracts/stakingPool.algo.ts:1000","pc":[3874,3875]},{"teal":4179,"source":"contracts/stakingPool.algo.ts:1000","pc":[3876]},{"teal":4180,"source":"contracts/stakingPool.algo.ts:1000","pc":[3877]},{"teal":4181,"source":"contracts/stakingPool.algo.ts:1000","pc":[3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895]},{"teal":4182,"source":"contracts/stakingPool.algo.ts:1000","pc":[3896]},{"teal":4183,"source":"contracts/stakingPool.algo.ts:1000","pc":[3897,3898]},{"teal":4184,"source":"contracts/stakingPool.algo.ts:1000","pc":[3899]},{"teal":4185,"source":"contracts/stakingPool.algo.ts:1001","pc":[3900,3901]},{"teal":4186,"source":"contracts/stakingPool.algo.ts:1001","pc":[3902,3903]},{"teal":4187,"source":"contracts/stakingPool.algo.ts:1001","pc":[3904]},{"teal":4188,"source":"contracts/stakingPool.algo.ts:1000","pc":[3905]},{"teal":4189,"source":"contracts/stakingPool.algo.ts:1000","pc":[3906]},{"teal":4190,"source":"contracts/stakingPool.algo.ts:1000","pc":[3907]},{"teal":4191,"source":"contracts/stakingPool.algo.ts:1000","pc":[3908,3909]},{"teal":4192,"source":"contracts/stakingPool.algo.ts:1000","pc":[3910]},{"teal":4195,"source":"contracts/stakingPool.algo.ts:1000","errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[3911]},{"teal":4196,"source":"contracts/stakingPool.algo.ts:1000","pc":[3912,3913]},{"teal":4197,"source":"contracts/stakingPool.algo.ts:1000","pc":[3914]},{"teal":4198,"source":"contracts/stakingPool.algo.ts:1000","pc":[3915]},{"teal":4199,"source":"contracts/stakingPool.algo.ts:1000","pc":[3916]},{"teal":4200,"source":"contracts/stakingPool.algo.ts:1000","pc":[3917]},{"teal":4201,"source":"contracts/stakingPool.algo.ts:1000","pc":[3918,3919]},{"teal":4202,"source":"contracts/stakingPool.algo.ts:1000","pc":[3920]},{"teal":4203,"source":"contracts/stakingPool.algo.ts:1000","pc":[3921]},{"teal":4204,"source":"contracts/stakingPool.algo.ts:1000","pc":[3922]},{"teal":4205,"source":"contracts/stakingPool.algo.ts:999","pc":[3923,3924]},{"teal":4209,"source":"contracts/stakingPool.algo.ts:1003","pc":[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942]},{"teal":4210,"source":"contracts/stakingPool.algo.ts:1003","pc":[3943,3944]},{"teal":4215,"source":"contracts/stakingPool.algo.ts:1005","pc":[3945,3946]},{"teal":4216,"source":"contracts/stakingPool.algo.ts:1005","pc":[3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964]},{"teal":4217,"source":"contracts/stakingPool.algo.ts:1005","pc":[3965]},{"teal":4218,"source":"contracts/stakingPool.algo.ts:1005","pc":[3966,3967,3968]},{"teal":4223,"source":"contracts/stakingPool.algo.ts:1006","pc":[3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986]},{"teal":4224,"source":"contracts/stakingPool.algo.ts:1006","pc":[3987,3988]},{"teal":4231,"source":"contracts/stakingPool.algo.ts:1008","pc":[3989,3990]},{"teal":4232,"source":"contracts/stakingPool.algo.ts:1008","pc":[3991]},{"teal":4233,"source":"contracts/stakingPool.algo.ts:1009","pc":[3992]},{"teal":4234,"source":"contracts/stakingPool.algo.ts:1009","pc":[3993,3994]},{"teal":4235,"source":"contracts/stakingPool.algo.ts:1009","pc":[3995,3996]},{"teal":4236,"source":"contracts/stakingPool.algo.ts:1009","pc":[3997]},{"teal":4237,"source":"contracts/stakingPool.algo.ts:1009","pc":[3998]},{"teal":4238,"source":"contracts/stakingPool.algo.ts:1009","pc":[3999,4000]},{"teal":4239,"source":"contracts/stakingPool.algo.ts:1009","pc":[4001]},{"teal":4240,"source":"contracts/stakingPool.algo.ts:1010","pc":[4002,4003]},{"teal":4241,"source":"contracts/stakingPool.algo.ts:1010","pc":[4004,4005]},{"teal":4242,"source":"contracts/stakingPool.algo.ts:1010","pc":[4006]},{"teal":4243,"source":"contracts/stakingPool.algo.ts:1010","pc":[4007,4008]},{"teal":4244,"source":"contracts/stakingPool.algo.ts:1010","pc":[4009]},{"teal":4245,"source":"contracts/stakingPool.algo.ts:1009","pc":[4010]},{"teal":4246,"source":"contracts/stakingPool.algo.ts:1009","pc":[4011]},{"teal":4247,"source":"contracts/stakingPool.algo.ts:1009","pc":[4012]},{"teal":4248,"source":"contracts/stakingPool.algo.ts:1009","pc":[4013,4014]},{"teal":4249,"source":"contracts/stakingPool.algo.ts:1009","pc":[4015]},{"teal":4252,"source":"contracts/stakingPool.algo.ts:1009","errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4016]},{"teal":4253,"source":"contracts/stakingPool.algo.ts:1009","pc":[4017,4018]},{"teal":4254,"source":"contracts/stakingPool.algo.ts:1009","pc":[4019]},{"teal":4255,"source":"contracts/stakingPool.algo.ts:1009","pc":[4020]},{"teal":4256,"source":"contracts/stakingPool.algo.ts:1009","pc":[4021]},{"teal":4257,"source":"contracts/stakingPool.algo.ts:1009","pc":[4022]},{"teal":4258,"source":"contracts/stakingPool.algo.ts:1009","pc":[4023,4024]},{"teal":4259,"source":"contracts/stakingPool.algo.ts:1009","pc":[4025]},{"teal":4260,"source":"contracts/stakingPool.algo.ts:1009","pc":[4026]},{"teal":4261,"source":"contracts/stakingPool.algo.ts:1009","pc":[4027]},{"teal":4262,"source":"contracts/stakingPool.algo.ts:1008","pc":[4028]},{"teal":4267,"source":"contracts/stakingPool.algo.ts:1014","pc":[4029,4030,4031]},{"teal":4271,"source":"contracts/stakingPool.algo.ts:1015","pc":[4032,4033]},{"teal":4272,"source":"contracts/stakingPool.algo.ts:1015","pc":[4034,4035]},{"teal":4273,"source":"contracts/stakingPool.algo.ts:1015","pc":[4036]},{"teal":4274,"source":"contracts/stakingPool.algo.ts:1015","pc":[4037]},{"teal":4275,"source":"contracts/stakingPool.algo.ts:1015","pc":[4038,4039]},{"teal":4276,"source":"contracts/stakingPool.algo.ts:1015","pc":[4040]},{"teal":4277,"source":"contracts/stakingPool.algo.ts:1015","pc":[4041]},{"teal":4278,"source":"contracts/stakingPool.algo.ts:1015","pc":[4042]},{"teal":4279,"source":"contracts/stakingPool.algo.ts:1015","pc":[4043]},{"teal":4280,"source":"contracts/stakingPool.algo.ts:1015","pc":[4044]},{"teal":4281,"source":"contracts/stakingPool.algo.ts:1015","pc":[4045,4046]},{"teal":4282,"source":"contracts/stakingPool.algo.ts:1015","pc":[4047]},{"teal":4285,"source":"contracts/stakingPool.algo.ts:1015","errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4048]},{"teal":4286,"source":"contracts/stakingPool.algo.ts:1015","pc":[4049,4050]},{"teal":4287,"source":"contracts/stakingPool.algo.ts:1015","pc":[4051]},{"teal":4288,"source":"contracts/stakingPool.algo.ts:1015","pc":[4052]},{"teal":4289,"source":"contracts/stakingPool.algo.ts:1015","pc":[4053]},{"teal":4290,"source":"contracts/stakingPool.algo.ts:1015","pc":[4054]},{"teal":4291,"source":"contracts/stakingPool.algo.ts:1015","pc":[4055,4056]},{"teal":4292,"source":"contracts/stakingPool.algo.ts:1015","pc":[4057]},{"teal":4293,"source":"contracts/stakingPool.algo.ts:1015","pc":[4058]},{"teal":4294,"source":"contracts/stakingPool.algo.ts:1015","pc":[4059]},{"teal":4295,"source":"contracts/stakingPool.algo.ts:1015","pc":[4060]},{"teal":4299,"source":"contracts/stakingPool.algo.ts:1016","pc":[4061,4062]},{"teal":4300,"source":"contracts/stakingPool.algo.ts:1016","pc":[4063]},{"teal":4301,"source":"contracts/stakingPool.algo.ts:1016","pc":[4064]},{"teal":4305,"source":"contracts/stakingPool.algo.ts:1017","pc":[4065,4066]},{"teal":4306,"source":"contracts/stakingPool.algo.ts:1017","pc":[4067,4068]},{"teal":4307,"source":"contracts/stakingPool.algo.ts:1017","pc":[4069,4070]},{"teal":4308,"source":"contracts/stakingPool.algo.ts:1017","pc":[4071,4072]},{"teal":4309,"source":"contracts/stakingPool.algo.ts:1017","pc":[4073]},{"teal":4310,"source":"contracts/stakingPool.algo.ts:1017","pc":[4074]},{"teal":4311,"source":"contracts/stakingPool.algo.ts:1017","pc":[4075]},{"teal":4312,"source":"contracts/stakingPool.algo.ts:1017","pc":[4076]},{"teal":4315,"source":"contracts/stakingPool.algo.ts:987","pc":[4077]},{"teal":4319,"source":"contracts/stakingPool.algo.ts:1021","pc":[4078,4079,4080]},{"teal":4322,"source":"contracts/stakingPool.algo.ts:1021","pc":[4081]},{"teal":4327,"source":"contracts/stakingPool.algo.ts:1026","pc":[4082,4083]},{"teal":4328,"source":"contracts/stakingPool.algo.ts:1026","pc":[4084,4085]},{"teal":4329,"source":"contracts/stakingPool.algo.ts:1026","pc":[4086]},{"teal":4330,"source":"contracts/stakingPool.algo.ts:1026","pc":[4087,4088,4089]},{"teal":4335,"source":"contracts/stakingPool.algo.ts:1028","pc":[4090,4091]},{"teal":4336,"source":"contracts/stakingPool.algo.ts:1028","pc":[4092,4093]},{"teal":4337,"source":"contracts/stakingPool.algo.ts:1028","pc":[4094]},{"teal":4341,"source":"contracts/stakingPool.algo.ts:1029","pc":[4095]},{"teal":4347,"source":"contracts/stakingPool.algo.ts:1033","pc":[4096,4097]},{"teal":4348,"source":"contracts/stakingPool.algo.ts:1033","pc":[4098]},{"teal":4349,"source":"contracts/stakingPool.algo.ts:1033","pc":[4099]},{"teal":4350,"source":"contracts/stakingPool.algo.ts:1033","pc":[4100,4101]},{"teal":4351,"source":"contracts/stakingPool.algo.ts:1033","pc":[4102,4103]},{"teal":4352,"source":"contracts/stakingPool.algo.ts:1033","pc":[4104,4105]},{"teal":4353,"source":"contracts/stakingPool.algo.ts:1033","pc":[4106]},{"teal":4354,"source":"contracts/stakingPool.algo.ts:1033","pc":[4107,4108]},{"teal":4355,"source":"contracts/stakingPool.algo.ts:1033","pc":[4109]},{"teal":4356,"source":"contracts/stakingPool.algo.ts:1032","pc":[4110,4111]},{"teal":4361,"source":"contracts/stakingPool.algo.ts:1034","pc":[4112,4113]},{"teal":4362,"source":"contracts/stakingPool.algo.ts:1034","pc":[4114]},{"teal":4363,"source":"contracts/stakingPool.algo.ts:1034","pc":[4115]},{"teal":4364,"source":"contracts/stakingPool.algo.ts:1034","pc":[4116,4117,4118]},{"teal":4369,"source":"contracts/stakingPool.algo.ts:1036","pc":[4119,4120]},{"teal":4370,"source":"contracts/stakingPool.algo.ts:1036","pc":[4121,4122]},{"teal":4371,"source":"contracts/stakingPool.algo.ts:1036","pc":[4123]},{"teal":4375,"source":"contracts/stakingPool.algo.ts:1037","pc":[4124]},{"teal":4380,"source":"contracts/stakingPool.algo.ts:1042","pc":[4125,4126]},{"teal":4381,"source":"contracts/stakingPool.algo.ts:1042","pc":[4127,4128,4129,4130]},{"teal":4382,"source":"contracts/stakingPool.algo.ts:1042","pc":[4131,4132]},{"teal":4383,"source":"contracts/stakingPool.algo.ts:1042","pc":[4133]},{"teal":4384,"source":"contracts/stakingPool.algo.ts:1042","pc":[4134]},{"teal":4385,"source":"contracts/stakingPool.algo.ts:1021","pc":[4135]},{"teal":4388,"source":"contracts/stakingPool.algo.ts:37","pc":[4136,4137,4138,4139,4140,4141]},{"teal":4389,"source":"contracts/stakingPool.algo.ts:37","pc":[4142,4143,4144]},{"teal":4390,"source":"contracts/stakingPool.algo.ts:37","pc":[4145,4146,4147,4148]},{"teal":4393,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4149]},{"teal":4396,"source":"contracts/stakingPool.algo.ts:37","pc":[4150,4151,4152,4153,4154,4155]},{"teal":4397,"source":"contracts/stakingPool.algo.ts:37","pc":[4156,4157,4158,4159,4160,4161]},{"teal":4398,"source":"contracts/stakingPool.algo.ts:37","pc":[4162,4163,4164,4165,4166,4167]},{"teal":4399,"source":"contracts/stakingPool.algo.ts:37","pc":[4168,4169,4170,4171,4172,4173]},{"teal":4400,"source":"contracts/stakingPool.algo.ts:37","pc":[4174,4175,4176,4177,4178,4179]},{"teal":4401,"source":"contracts/stakingPool.algo.ts:37","pc":[4180,4181,4182,4183,4184,4185]},{"teal":4402,"source":"contracts/stakingPool.algo.ts:37","pc":[4186,4187,4188,4189,4190,4191]},{"teal":4403,"source":"contracts/stakingPool.algo.ts:37","pc":[4192,4193,4194,4195,4196,4197]},{"teal":4404,"source":"contracts/stakingPool.algo.ts:37","pc":[4198,4199,4200,4201,4202,4203]},{"teal":4405,"source":"contracts/stakingPool.algo.ts:37","pc":[4204,4205,4206,4207,4208,4209]},{"teal":4406,"source":"contracts/stakingPool.algo.ts:37","pc":[4210,4211,4212,4213,4214,4215]},{"teal":4407,"source":"contracts/stakingPool.algo.ts:37","pc":[4216,4217,4218,4219,4220,4221]},{"teal":4408,"source":"contracts/stakingPool.algo.ts:37","pc":[4222,4223]},{"teal":4409,"source":"contracts/stakingPool.algo.ts:37","pc":[4224,4225,4226]},{"teal":4410,"source":"contracts/stakingPool.algo.ts:37","pc":[4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254]},{"teal":4413,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4255]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract /** * A state record containing binary data @@ -62,23 +63,14 @@ export type Expand = T extends (...args: infer A) => infer R : never -// Aliases for non-encoded ABI values - -type uint64 = bigint; -type pay = AppMethodCallTransactionArgument; -type address = string; -type byte = number; -type AVMBytes = Uint8Array; -type uint128 = bigint; - // Type definitions for ARC-56 structs export type StakedInfo = { - account: address, - balance: uint64, - totalRewarded: uint64, - rewardTokenBalance: uint64, - entryRound: uint64 + account: string, + balance: bigint, + totalRewarded: bigint, + rewardTokenBalance: bigint, + entryRound: bigint } @@ -90,8 +82,8 @@ export function StakedInfoFromTuple(abiTuple: [string, bigint, bigint, bigint, b } export type PoolTokenPayoutRatio = { - poolPctOfWhole: uint64[], - updatedForPayout: uint64 + poolPctOfWhole: [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint], + updatedForPayout: bigint } @@ -103,9 +95,9 @@ export function PoolTokenPayoutRatioFromTuple(abiTuple: [[bigint, bigint, bigint } export type ValidatorPoolKey = { - id: uint64, - poolId: uint64, - poolAppId: uint64 + id: bigint, + poolId: bigint, + poolAppId: bigint } @@ -120,7 +112,7 @@ export function ValidatorPoolKeyFromTuple(abiTuple: [bigint, bigint, bigint]) { * Deploy-time template variables */ export type TemplateVariables = { - nfdRegistryAppId: uint64, + nfdRegistryAppId: bigint, } /** @@ -1597,6 +1589,16 @@ export class StakingPoolClient { } + /** + * Clone this app client with different params + * + * @param params The params to use for the the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value. + * @returns A new app client with the altered params + */ + public clone(params: CloneAppClientParams) { + return new StakingPoolClient(this.appClient.clone(params)) + } + /** * Makes a readonly (simulated) call to the StakingPool smart contract using the `getStakerInfo(address)(address,uint64,uint64,uint64,uint64)` ABI method. * diff --git a/contracts/contracts/clients/ValidatorRegistryClient.ts b/contracts/contracts/clients/ValidatorRegistryClient.ts index 33d11768..823fe406 100644 --- a/contracts/contracts/clients/ValidatorRegistryClient.ts +++ b/contracts/contracts/clients/ValidatorRegistryClient.ts @@ -16,6 +16,7 @@ import { AppClientCompilationParams, ResolveAppClientByCreatorAndName, ResolveAppClientByNetwork, + CloneAppClientParams, } from '@algorandfoundation/algokit-utils/types/app-client' import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory' import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer' @@ -23,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":[{"teal":1,"source":50,"pc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170]},{"teal":9,"source":50,"pc":[171,172]},{"teal":10,"source":50,"pc":[173]},{"teal":11,"source":50,"pc":[174,175]},{"teal":18,"source":50,"pc":[176,177]},{"teal":19,"source":50,"pc":[178]},{"teal":20,"source":50,"pc":[179,180]},{"teal":21,"source":50,"pc":[181]},{"teal":22,"source":50,"pc":[182,183]},{"teal":23,"source":50,"pc":[184]},{"teal":24,"source":50,"pc":[185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210]},{"teal":28,"source":50,"errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[211]},{"teal":33,"source":81,"pc":[212,213,214]},{"teal":34,"source":81,"pc":[215]},{"teal":35,"source":81,"pc":[216]},{"teal":39,"source":81,"pc":[217,218,219]},{"teal":43,"source":82,"pc":[220,221]},{"teal":44,"source":82,"pc":[222]},{"teal":45,"source":82,"pc":[223,224]},{"teal":46,"source":82,"pc":[225]},{"teal":47,"source":82,"pc":[226,227]},{"teal":48,"source":82,"pc":[228]},{"teal":49,"source":82,"pc":[229]},{"teal":53,"source":83,"pc":[230,231]},{"teal":54,"source":83,"pc":[232]},{"teal":55,"source":83,"pc":[233]},{"teal":59,"source":84,"pc":[234,235]},{"teal":60,"source":84,"pc":[236]},{"teal":61,"source":84,"pc":[237]},{"teal":65,"source":85,"pc":[238,239]},{"teal":66,"source":85,"pc":[240]},{"teal":67,"source":85,"pc":[241]},{"teal":68,"source":81,"pc":[242]},{"teal":73,"source":88,"pc":[243,244,245]},{"teal":74,"source":88,"pc":[246]},{"teal":77,"source":88,"pc":[247,248,249]},{"teal":78,"source":88,"pc":[250]},{"teal":79,"source":88,"pc":[251]},{"teal":83,"source":88,"pc":[252,253,254]},{"teal":87,"source":90,"pc":[255,256]},{"teal":88,"source":90,"pc":[257,258]},{"teal":89,"source":90,"pc":[259]},{"teal":90,"source":90,"pc":[260]},{"teal":91,"source":88,"pc":[261]},{"teal":96,"source":93,"pc":[262,263,264]},{"teal":97,"source":93,"pc":[265,266,267]},{"teal":100,"source":93,"pc":[268,269,270]},{"teal":101,"source":93,"pc":[271]},{"teal":104,"source":93,"pc":[272,273,274]},{"teal":105,"source":93,"pc":[275]},{"teal":106,"source":93,"pc":[276]},{"teal":110,"source":93,"pc":[277,278,279]},{"teal":114,"source":94,"pc":[280,281]},{"teal":115,"source":94,"pc":[282]},{"teal":116,"source":94,"pc":[283]},{"teal":117,"source":94,"pc":[284]},{"teal":118,"source":94,"pc":[285]},{"teal":119,"source":94,"pc":[286]},{"teal":123,"source":95,"pc":[287,288]},{"teal":124,"source":95,"pc":[289,290]},{"teal":125,"source":95,"pc":[291,292]},{"teal":126,"source":95,"pc":[293]},{"teal":127,"source":93,"pc":[294]},{"teal":132,"source":98,"pc":[295,296,297]},{"teal":133,"source":98,"pc":[298]},{"teal":134,"source":98,"pc":[299]},{"teal":138,"source":98,"pc":[300,301,302]},{"teal":142,"source":99,"pc":[303,304]},{"teal":143,"source":99,"pc":[305]},{"teal":144,"source":99,"pc":[306,307]},{"teal":145,"source":99,"pc":[308]},{"teal":146,"source":99,"pc":[309,310]},{"teal":147,"source":99,"pc":[311]},{"teal":148,"source":99,"pc":[312]},{"teal":149,"source":98,"pc":[313]},{"teal":154,"source":105,"pc":[314,315,316]},{"teal":155,"source":105,"pc":[317]},{"teal":156,"source":105,"pc":[318]},{"teal":162,"source":105,"pc":[319,320,321]},{"teal":163,"source":105,"pc":[322]},{"teal":168,"source":116,"pc":[323]},{"teal":171,"source":116,"pc":[324,325,326]},{"teal":172,"source":116,"pc":[327]},{"teal":173,"source":116,"pc":[328]},{"teal":174,"source":116,"pc":[329]},{"teal":175,"source":116,"pc":[330]},{"teal":187,"source":116,"pc":[331,332,333]},{"teal":212,"source":121,"pc":[334,335,336]},{"teal":213,"source":121,"pc":[337,338,339]},{"teal":214,"source":121,"pc":[340]},{"teal":215,"source":131,"pc":[341,342]},{"teal":216,"source":130,"pc":[343,344]},{"teal":217,"source":129,"pc":[345]},{"teal":218,"source":129,"pc":[346,347]},{"teal":219,"source":126,"pc":[348,349]},{"teal":220,"source":123,"pc":[350]},{"teal":221,"source":122,"pc":[351,352,353]},{"teal":222,"source":122,"pc":[354]},{"teal":223,"source":122,"pc":[355]},{"teal":224,"source":134,"pc":[356,357]},{"teal":225,"source":135,"pc":[358,359,360]},{"teal":226,"source":135,"pc":[361,362,363]},{"teal":227,"source":134,"pc":[364]},{"teal":228,"source":134,"pc":[365]},{"teal":229,"source":134,"pc":[366]},{"teal":230,"source":139,"pc":[367,368,369]},{"teal":231,"source":138,"pc":[370,371,372]},{"teal":232,"source":138,"pc":[373]},{"teal":233,"source":138,"pc":[374]},{"teal":234,"source":116,"pc":[375]},{"teal":239,"source":147,"pc":[376]},{"teal":242,"source":147,"pc":[377,378,379]},{"teal":243,"source":147,"pc":[380]},{"teal":244,"source":147,"pc":[381]},{"teal":245,"source":147,"pc":[382]},{"teal":246,"source":147,"pc":[383]},{"teal":252,"source":147,"pc":[384,385,386]},{"teal":268,"source":154,"pc":[387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428]},{"teal":269,"source":155,"pc":[429,430,431]},{"teal":270,"source":155,"pc":[432]},{"teal":271,"source":155,"pc":[433]},{"teal":272,"source":156,"pc":[434,435,436]},{"teal":273,"source":156,"pc":[437]},{"teal":274,"source":156,"pc":[438]},{"teal":275,"source":157,"pc":[439,440,441]},{"teal":276,"source":157,"pc":[442]},{"teal":277,"source":157,"pc":[443]},{"teal":278,"source":158,"pc":[444,445,446,447,448,449,450,451,452,453]},{"teal":279,"source":158,"pc":[454]},{"teal":280,"source":159,"pc":[455,456,457,458,459,460,461,462,463,464]},{"teal":281,"source":159,"pc":[465]},{"teal":282,"source":160,"pc":[466,467,468,469,470,471,472,473,474,475]},{"teal":283,"source":160,"pc":[476]},{"teal":284,"source":147,"pc":[477]},{"teal":289,"source":167,"pc":[478]},{"teal":292,"source":167,"pc":[479,480,481]},{"teal":293,"source":167,"pc":[482]},{"teal":294,"source":167,"pc":[483]},{"teal":295,"source":167,"pc":[484]},{"teal":296,"source":167,"pc":[485]},{"teal":297,"source":167,"pc":[486]},{"teal":303,"source":167,"pc":[487,488,489]},{"teal":307,"source":169,"pc":[490,491]},{"teal":308,"source":169,"pc":[492]},{"teal":309,"source":167,"pc":[493]},{"teal":314,"source":172,"pc":[494]},{"teal":317,"source":173,"pc":[495,496,497]},{"teal":318,"source":173,"pc":[498]},{"teal":321,"source":172,"pc":[499,500,501]},{"teal":322,"source":172,"pc":[502]},{"teal":323,"source":172,"pc":[503]},{"teal":324,"source":172,"pc":[504]},{"teal":325,"source":172,"pc":[505]},{"teal":329,"source":172,"pc":[506,507,508]},{"teal":333,"source":174,"pc":[509]},{"teal":334,"source":174,"pc":[510,511]},{"teal":335,"source":174,"pc":[512]},{"teal":336,"source":174,"pc":[513,514]},{"teal":337,"source":174,"pc":[515]},{"teal":338,"source":174,"pc":[516]},{"teal":339,"source":174,"pc":[517,518]},{"teal":340,"source":174,"pc":[519]},{"teal":341,"source":172,"pc":[520]},{"teal":346,"source":177,"pc":[521]},{"teal":349,"source":178,"pc":[522,523,524]},{"teal":350,"source":178,"pc":[525]},{"teal":353,"source":177,"pc":[526,527,528]},{"teal":354,"source":177,"pc":[529]},{"teal":355,"source":177,"pc":[530]},{"teal":356,"source":177,"pc":[531]},{"teal":357,"source":177,"pc":[532]},{"teal":361,"source":177,"pc":[533,534,535]},{"teal":365,"source":179,"pc":[536,537]},{"teal":366,"source":179,"pc":[538,539]},{"teal":367,"source":179,"pc":[540]},{"teal":368,"source":179,"pc":[541,542]},{"teal":369,"source":179,"pc":[543]},{"teal":370,"source":179,"pc":[544]},{"teal":371,"source":179,"pc":[545,546]},{"teal":372,"source":179,"pc":[547]},{"teal":373,"source":177,"pc":[548]},{"teal":378,"source":182,"pc":[549]},{"teal":381,"source":183,"pc":[550,551,552]},{"teal":382,"source":183,"pc":[553]},{"teal":385,"source":182,"pc":[554,555,556]},{"teal":386,"source":182,"pc":[557]},{"teal":387,"source":182,"pc":[558]},{"teal":388,"source":182,"pc":[559]},{"teal":389,"source":182,"pc":[560]},{"teal":393,"source":182,"pc":[561,562,563]},{"teal":400,"source":185,"pc":[564]},{"teal":401,"source":185,"pc":[565,566]},{"teal":402,"source":185,"pc":[567]},{"teal":403,"source":185,"pc":[568,569]},{"teal":404,"source":185,"pc":[570]},{"teal":405,"source":185,"pc":[571]},{"teal":406,"source":185,"pc":[572,573]},{"teal":407,"source":185,"pc":[574]},{"teal":408,"source":186,"pc":[575,576]},{"teal":409,"source":186,"pc":[577,578]},{"teal":410,"source":186,"pc":[579]},{"teal":411,"source":186,"pc":[580,581]},{"teal":412,"source":186,"pc":[582]},{"teal":413,"source":186,"pc":[583]},{"teal":414,"source":186,"pc":[584,585]},{"teal":415,"source":186,"pc":[586]},{"teal":416,"source":186,"pc":[587]},{"teal":417,"source":182,"pc":[588]},{"teal":422,"source":196,"pc":[589]},{"teal":425,"source":197,"pc":[590,591,592]},{"teal":426,"source":197,"pc":[593]},{"teal":429,"source":196,"pc":[594,595,596]},{"teal":430,"source":196,"pc":[597]},{"teal":431,"source":196,"pc":[598]},{"teal":432,"source":196,"pc":[599,600]},{"teal":433,"source":196,"pc":[601]},{"teal":434,"source":196,"pc":[602]},{"teal":435,"source":196,"pc":[603,604,605]},{"teal":436,"source":196,"pc":[606]},{"teal":437,"source":196,"pc":[607]},{"teal":438,"source":196,"pc":[608]},{"teal":439,"source":196,"pc":[609]},{"teal":440,"source":196,"pc":[610]},{"teal":441,"source":196,"pc":[611]},{"teal":450,"source":196,"pc":[612,613,614]},{"teal":453,"source":196,"pc":[615]},{"teal":454,"source":196,"pc":[616,617]},{"teal":458,"source":198,"pc":[618]},{"teal":459,"source":198,"pc":[619,620]},{"teal":463,"source":199,"pc":[621,622]},{"teal":464,"source":199,"pc":[623,624]},{"teal":465,"source":199,"pc":[625]},{"teal":466,"source":199,"pc":[626,627]},{"teal":467,"source":199,"pc":[628]},{"teal":468,"source":199,"pc":[629]},{"teal":469,"source":199,"pc":[630,631]},{"teal":470,"source":199,"pc":[632]},{"teal":471,"source":199,"pc":[633,634]},{"teal":475,"source":200,"pc":[635]},{"teal":476,"source":200,"pc":[636,637]},{"teal":481,"source":200,"pc":[638,639]},{"teal":482,"source":200,"pc":[640]},{"teal":483,"source":200,"pc":[641]},{"teal":484,"source":200,"pc":[642,643,644]},{"teal":489,"source":201,"pc":[645,646]},{"teal":490,"source":201,"pc":[647,648]},{"teal":491,"source":201,"pc":[649,650]},{"teal":492,"source":201,"pc":[651]},{"teal":493,"source":201,"pc":[652]},{"teal":494,"source":201,"pc":[653]},{"teal":495,"source":201,"pc":[654]},{"teal":496,"source":201,"pc":[655]},{"teal":497,"source":201,"pc":[656]},{"teal":498,"source":201,"pc":[657]},{"teal":499,"source":201,"pc":[658]},{"teal":500,"source":201,"pc":[659,660,661]},{"teal":503,"source":203,"pc":[662,663,664]},{"teal":508,"source":205,"pc":[665,666]},{"teal":509,"source":205,"pc":[667,668]},{"teal":510,"source":205,"pc":[669,670]},{"teal":511,"source":205,"pc":[671,672]},{"teal":512,"source":205,"pc":[673]},{"teal":513,"source":205,"pc":[674,675]},{"teal":514,"source":205,"pc":[676]},{"teal":515,"source":205,"pc":[677]},{"teal":516,"source":205,"pc":[678,679]},{"teal":521,"source":200,"pc":[680,681]},{"teal":522,"source":200,"pc":[682]},{"teal":523,"source":200,"pc":[683]},{"teal":524,"source":200,"pc":[684,685]},{"teal":525,"source":200,"pc":[686,687,688]},{"teal":530,"source":207,"pc":[689,690]},{"teal":533,"source":196,"pc":[691,692]},{"teal":536,"source":196,"pc":[693,694]},{"teal":537,"source":196,"pc":[695]},{"teal":542,"source":215,"pc":[696]},{"teal":545,"source":216,"pc":[697,698,699]},{"teal":546,"source":216,"pc":[700]},{"teal":549,"source":216,"pc":[701,702,703]},{"teal":550,"source":216,"pc":[704]},{"teal":553,"source":215,"pc":[705,706,707]},{"teal":554,"source":215,"pc":[708]},{"teal":555,"source":215,"pc":[709]},{"teal":556,"source":215,"pc":[710]},{"teal":557,"source":215,"pc":[711]},{"teal":558,"source":215,"pc":[712]},{"teal":566,"source":215,"pc":[713,714,715]},{"teal":573,"source":218,"pc":[716,717]},{"teal":574,"source":218,"pc":[718]},{"teal":575,"source":218,"pc":[719]},{"teal":576,"source":218,"pc":[720]},{"teal":577,"source":218,"pc":[721,722,723]},{"teal":578,"source":218,"pc":[724,725]},{"teal":579,"source":218,"pc":[726]},{"teal":580,"source":218,"pc":[727]},{"teal":581,"source":218,"pc":[728]},{"teal":585,"source":217,"errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[729]},{"teal":589,"source":221,"pc":[730,731]},{"teal":590,"source":221,"pc":[732,733]},{"teal":591,"source":221,"pc":[734]},{"teal":592,"source":221,"pc":[735]},{"teal":593,"source":221,"pc":[736,737]},{"teal":594,"source":221,"pc":[738]},{"teal":595,"source":221,"pc":[739]},{"teal":596,"source":221,"pc":[740]},{"teal":597,"source":221,"pc":[741]},{"teal":598,"source":221,"pc":[742]},{"teal":599,"source":221,"pc":[743]},{"teal":600,"source":221,"pc":[744,745]},{"teal":601,"source":221,"pc":[746]},{"teal":602,"source":221,"pc":[747]},{"teal":603,"source":221,"pc":[748,749]},{"teal":604,"source":221,"pc":[750]},{"teal":605,"source":221,"pc":[751]},{"teal":606,"source":215,"pc":[752]},{"teal":611,"source":224,"pc":[753]},{"teal":614,"source":225,"pc":[754,755,756]},{"teal":615,"source":225,"pc":[757]},{"teal":616,"source":225,"pc":[758]},{"teal":617,"source":225,"pc":[759]},{"teal":618,"source":225,"pc":[760]},{"teal":621,"source":225,"errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[761]},{"teal":624,"source":224,"pc":[762,763,764]},{"teal":625,"source":224,"pc":[765]},{"teal":626,"source":224,"pc":[766]},{"teal":627,"source":224,"pc":[767]},{"teal":628,"source":224,"pc":[768]},{"teal":632,"source":224,"pc":[769,770,771]},{"teal":636,"source":226,"pc":[772,773]},{"teal":637,"source":226,"pc":[774,775]},{"teal":638,"source":226,"pc":[776,777,778]},{"teal":639,"source":226,"pc":[779]},{"teal":640,"source":226,"pc":[780]},{"teal":641,"source":226,"pc":[781]},{"teal":642,"source":226,"pc":[782,783]},{"teal":643,"source":226,"pc":[784]},{"teal":644,"source":226,"pc":[785]},{"teal":645,"source":226,"pc":[786,787]},{"teal":646,"source":226,"pc":[788]},{"teal":647,"source":226,"pc":[789,790]},{"teal":648,"source":226,"pc":[791,792,793]},{"teal":649,"source":226,"pc":[794]},{"teal":650,"source":226,"pc":[795]},{"teal":651,"source":226,"pc":[796]},{"teal":652,"source":226,"pc":[797,798]},{"teal":653,"source":226,"pc":[799]},{"teal":654,"source":224,"pc":[800]},{"teal":659,"source":236,"pc":[801]},{"teal":662,"source":237,"pc":[802,803,804]},{"teal":663,"source":237,"pc":[805]},{"teal":666,"source":236,"pc":[806,807,808]},{"teal":667,"source":236,"pc":[809]},{"teal":668,"source":236,"pc":[810]},{"teal":669,"source":236,"pc":[811]},{"teal":670,"source":236,"pc":[812]},{"teal":671,"source":236,"pc":[813]},{"teal":681,"source":236,"pc":[814,815,816]},{"teal":684,"source":236,"pc":[817]},{"teal":685,"source":236,"pc":[818,819]},{"teal":689,"source":238,"pc":[820,821]},{"teal":690,"source":238,"pc":[822,823]},{"teal":691,"source":238,"pc":[824]},{"teal":692,"source":238,"pc":[825,826]},{"teal":693,"source":238,"pc":[827]},{"teal":694,"source":238,"pc":[828]},{"teal":695,"source":238,"pc":[829,830]},{"teal":696,"source":238,"pc":[831]},{"teal":697,"source":238,"pc":[832]},{"teal":698,"source":238,"pc":[833,834]},{"teal":702,"source":239,"pc":[835,836,837]},{"teal":703,"source":239,"pc":[838,839]},{"teal":704,"source":239,"pc":[840]},{"teal":705,"source":239,"pc":[841,842]},{"teal":709,"source":240,"pc":[843,844,845]},{"teal":710,"source":240,"pc":[846]},{"teal":711,"source":240,"pc":[847]},{"teal":712,"source":240,"pc":[848,849]},{"teal":713,"source":240,"pc":[850]},{"teal":714,"source":240,"pc":[851]},{"teal":715,"source":240,"pc":[852,853]},{"teal":716,"source":240,"pc":[854]},{"teal":717,"source":240,"pc":[855]},{"teal":718,"source":240,"pc":[856,857]},{"teal":723,"source":241,"pc":[858,859]},{"teal":724,"source":241,"pc":[860]},{"teal":725,"source":241,"pc":[861]},{"teal":726,"source":241,"pc":[862,863,864]},{"teal":731,"source":242,"pc":[865,866,867]},{"teal":732,"source":242,"pc":[868,869]},{"teal":738,"source":244,"pc":[870,871]},{"teal":739,"source":244,"pc":[872,873]},{"teal":740,"source":244,"pc":[874]},{"teal":741,"source":244,"pc":[875,876,877]},{"teal":746,"source":245,"pc":[878,879]},{"teal":747,"source":245,"pc":[880,881]},{"teal":752,"source":247,"pc":[882,883]},{"teal":755,"source":236,"pc":[884,885]},{"teal":758,"source":236,"pc":[886,887]},{"teal":759,"source":236,"pc":[888]},{"teal":764,"source":254,"pc":[889]},{"teal":767,"source":255,"pc":[890,891,892]},{"teal":768,"source":255,"pc":[893]},{"teal":769,"source":255,"pc":[894]},{"teal":770,"source":255,"pc":[895,896]},{"teal":771,"source":255,"pc":[897]},{"teal":774,"source":255,"errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[898]},{"teal":777,"source":254,"pc":[899,900,901]},{"teal":778,"source":254,"pc":[902,903]},{"teal":779,"source":254,"pc":[904]},{"teal":780,"source":254,"pc":[905,906]},{"teal":781,"source":254,"pc":[907]},{"teal":782,"source":254,"pc":[908]},{"teal":783,"source":254,"pc":[909]},{"teal":784,"source":254,"pc":[910]},{"teal":785,"source":254,"pc":[911]},{"teal":792,"source":254,"pc":[912,913,914]},{"teal":796,"source":256,"pc":[915]},{"teal":797,"source":256,"pc":[916,917]},{"teal":798,"source":256,"pc":[918]},{"teal":799,"source":256,"pc":[919]},{"teal":800,"source":256,"pc":[920]},{"teal":801,"source":256,"pc":[921]},{"teal":802,"source":256,"pc":[922]},{"teal":803,"source":254,"pc":[923]},{"teal":808,"source":265,"pc":[924]},{"teal":811,"source":266,"pc":[925,926,927]},{"teal":812,"source":266,"pc":[928]},{"teal":813,"source":266,"pc":[929]},{"teal":814,"source":266,"pc":[930,931]},{"teal":815,"source":266,"pc":[932]},{"teal":818,"source":266,"errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[933]},{"teal":821,"source":265,"pc":[934,935,936]},{"teal":822,"source":265,"pc":[937]},{"teal":823,"source":265,"pc":[938]},{"teal":824,"source":265,"pc":[939]},{"teal":825,"source":265,"pc":[940]},{"teal":826,"source":265,"pc":[941]},{"teal":827,"source":265,"pc":[942,943,944]},{"teal":828,"source":265,"pc":[945]},{"teal":829,"source":265,"pc":[946]},{"teal":830,"source":265,"pc":[947]},{"teal":831,"source":265,"pc":[948]},{"teal":832,"source":265,"pc":[949]},{"teal":833,"source":265,"pc":[950]},{"teal":842,"source":265,"pc":[951,952,953]},{"teal":845,"source":265,"pc":[954]},{"teal":846,"source":265,"pc":[955,956]},{"teal":851,"source":267,"pc":[957]},{"teal":852,"source":267,"pc":[958,959]},{"teal":853,"source":267,"pc":[960]},{"teal":854,"source":267,"pc":[961]},{"teal":855,"source":267,"pc":[962]},{"teal":856,"source":267,"pc":[963]},{"teal":857,"source":267,"pc":[964]},{"teal":858,"source":267,"pc":[965,966,967]},{"teal":863,"source":268,"pc":[968]},{"teal":864,"source":268,"pc":[969,970,971]},{"teal":869,"source":270,"pc":[972]},{"teal":870,"source":270,"pc":[973,974]},{"teal":874,"source":271,"pc":[975]},{"teal":875,"source":271,"pc":[976,977]},{"teal":876,"source":271,"pc":[978]},{"teal":877,"source":271,"pc":[979]},{"teal":880,"source":271,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[980]},{"teal":881,"source":271,"pc":[981,982]},{"teal":885,"source":272,"pc":[983]},{"teal":886,"source":272,"pc":[984,985]},{"teal":891,"source":272,"pc":[986,987]},{"teal":892,"source":272,"pc":[988,989]},{"teal":893,"source":272,"pc":[990]},{"teal":894,"source":272,"pc":[991,992,993]},{"teal":899,"source":273,"pc":[994,995]},{"teal":900,"source":273,"pc":[996,997]},{"teal":901,"source":273,"pc":[998]},{"teal":902,"source":273,"pc":[999]},{"teal":903,"source":273,"pc":[1000]},{"teal":904,"source":273,"pc":[1001]},{"teal":905,"source":273,"pc":[1002]},{"teal":906,"source":273,"pc":[1003]},{"teal":907,"source":273,"pc":[1004]},{"teal":908,"source":273,"pc":[1005]},{"teal":909,"source":273,"pc":[1006]},{"teal":910,"source":273,"pc":[1007,1008,1009]},{"teal":915,"source":274,"pc":[1010,1011]},{"teal":916,"source":274,"pc":[1012,1013]},{"teal":917,"source":274,"pc":[1014,1015]},{"teal":918,"source":274,"pc":[1016]},{"teal":919,"source":274,"pc":[1017]},{"teal":920,"source":274,"pc":[1018]},{"teal":921,"source":274,"pc":[1019]},{"teal":922,"source":274,"pc":[1020]},{"teal":923,"source":274,"pc":[1021,1022]},{"teal":930,"source":272,"pc":[1023,1024]},{"teal":931,"source":272,"pc":[1025]},{"teal":932,"source":272,"pc":[1026]},{"teal":933,"source":272,"pc":[1027,1028]},{"teal":934,"source":272,"pc":[1029,1030,1031]},{"teal":939,"source":277,"pc":[1032,1033]},{"teal":943,"source":265,"pc":[1034,1035]},{"teal":946,"source":265,"pc":[1036,1037]},{"teal":947,"source":265,"pc":[1038]},{"teal":952,"source":287,"pc":[1039]},{"teal":955,"source":288,"pc":[1040,1041,1042]},{"teal":956,"source":288,"pc":[1043]},{"teal":959,"source":287,"pc":[1044,1045,1046]},{"teal":960,"source":287,"pc":[1047]},{"teal":961,"source":287,"pc":[1048]},{"teal":962,"source":287,"pc":[1049]},{"teal":963,"source":287,"pc":[1050]},{"teal":973,"source":287,"pc":[1051,1052,1053]},{"teal":977,"source":289,"pc":[1054,1055]},{"teal":978,"source":289,"pc":[1056,1057]},{"teal":979,"source":289,"pc":[1058]},{"teal":980,"source":289,"pc":[1059,1060]},{"teal":981,"source":289,"pc":[1061]},{"teal":982,"source":289,"pc":[1062]},{"teal":983,"source":289,"pc":[1063,1064]},{"teal":984,"source":289,"pc":[1065]},{"teal":985,"source":287,"pc":[1066]},{"teal":990,"source":292,"pc":[1067]},{"teal":993,"source":293,"pc":[1068,1069,1070]},{"teal":994,"source":293,"pc":[1071]},{"teal":997,"source":292,"pc":[1072,1073,1074]},{"teal":998,"source":292,"pc":[1075]},{"teal":999,"source":292,"pc":[1076]},{"teal":1000,"source":292,"pc":[1077]},{"teal":1001,"source":292,"pc":[1078]},{"teal":1005,"source":292,"pc":[1079,1080,1081]},{"teal":1009,"source":294,"pc":[1082]},{"teal":1010,"source":294,"pc":[1083,1084]},{"teal":1011,"source":294,"pc":[1085]},{"teal":1012,"source":294,"pc":[1086]},{"teal":1013,"source":294,"pc":[1087]},{"teal":1014,"source":294,"pc":[1088]},{"teal":1015,"source":294,"pc":[1089]},{"teal":1018,"source":294,"errorMessage":"the specified validator id doesn't exist","pc":[1090]},{"teal":1022,"source":296,"pc":[1091,1092]},{"teal":1023,"source":296,"pc":[1093,1094]},{"teal":1024,"source":296,"pc":[1095]},{"teal":1025,"source":296,"pc":[1096,1097]},{"teal":1026,"source":296,"pc":[1098]},{"teal":1027,"source":296,"pc":[1099]},{"teal":1028,"source":296,"pc":[1100,1101]},{"teal":1029,"source":296,"pc":[1102]},{"teal":1030,"source":292,"pc":[1103]},{"teal":1035,"source":299,"pc":[1104]},{"teal":1038,"source":299,"pc":[1105,1106,1107]},{"teal":1039,"source":299,"pc":[1108]},{"teal":1040,"source":299,"pc":[1109]},{"teal":1041,"source":299,"pc":[1110]},{"teal":1042,"source":299,"pc":[1111]},{"teal":1043,"source":299,"pc":[1112]},{"teal":1047,"source":299,"pc":[1113,1114,1115]},{"teal":1051,"source":301,"pc":[1116,1117]},{"teal":1052,"source":299,"pc":[1118]},{"teal":1057,"source":312,"pc":[1119]},{"teal":1060,"source":312,"pc":[1120,1121,1122]},{"teal":1061,"source":312,"pc":[1123]},{"teal":1062,"source":312,"pc":[1124]},{"teal":1063,"source":312,"pc":[1125,1126]},{"teal":1064,"source":312,"pc":[1127]},{"teal":1067,"source":312,"errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[1128]},{"teal":1070,"source":312,"pc":[1129,1130,1131]},{"teal":1071,"source":312,"pc":[1132,1133,1134]},{"teal":1074,"source":312,"pc":[1135,1136]},{"teal":1075,"source":312,"pc":[1137]},{"teal":1076,"source":312,"pc":[1138]},{"teal":1077,"source":312,"pc":[1139]},{"teal":1078,"source":312,"pc":[1140,1141]},{"teal":1079,"source":312,"pc":[1142]},{"teal":1080,"source":312,"pc":[1143]},{"teal":1083,"source":312,"errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[1144]},{"teal":1086,"source":312,"pc":[1145,1146,1147]},{"teal":1087,"source":312,"pc":[1148]},{"teal":1088,"source":312,"pc":[1149]},{"teal":1089,"source":312,"pc":[1150]},{"teal":1090,"source":312,"pc":[1151]},{"teal":1091,"source":312,"pc":[1152]},{"teal":1103,"source":312,"pc":[1153,1154,1155]},{"teal":1106,"source":312,"pc":[1156]},{"teal":1110,"source":313,"pc":[1157,1158]},{"teal":1111,"source":313,"pc":[1159,1160,1161]},{"teal":1116,"source":315,"pc":[1162,1163]},{"teal":1117,"source":315,"pc":[1164,1165]},{"teal":1118,"source":315,"pc":[1166,1167]},{"teal":1119,"source":315,"pc":[1168]},{"teal":1122,"source":315,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1169]},{"teal":1125,"source":315,"pc":[1170,1171]},{"teal":1126,"source":315,"pc":[1172,1173]},{"teal":1127,"source":315,"pc":[1174,1175,1176]},{"teal":1128,"source":315,"pc":[1177,1178,1179]},{"teal":1129,"source":315,"pc":[1180]},{"teal":1130,"source":315,"pc":[1181]},{"teal":1133,"source":315,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1182]},{"teal":1137,"source":317,"pc":[1183,1184]},{"teal":1138,"source":317,"pc":[1185,1186]},{"teal":1139,"source":317,"pc":[1187,1188,1189,1190,1191]},{"teal":1140,"source":317,"pc":[1192]},{"teal":1143,"source":317,"errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1193]},{"teal":1147,"source":320,"pc":[1194,1195]},{"teal":1148,"source":320,"pc":[1196]},{"teal":1149,"source":320,"pc":[1197]},{"teal":1150,"source":320,"pc":[1198]},{"teal":1151,"source":320,"pc":[1199,1200]},{"teal":1155,"source":321,"pc":[1201,1202]},{"teal":1156,"source":321,"pc":[1203,1204]},{"teal":1157,"source":321,"pc":[1205]},{"teal":1161,"source":323,"pc":[1206]},{"teal":1162,"source":323,"pc":[1207,1208]},{"teal":1163,"source":323,"pc":[1209]},{"teal":1164,"source":323,"pc":[1210]},{"teal":1165,"source":323,"pc":[1211,1212,1213]},{"teal":1166,"source":323,"pc":[1214]},{"teal":1167,"source":323,"pc":[1215]},{"teal":1171,"source":324,"pc":[1216]},{"teal":1172,"source":324,"pc":[1217,1218]},{"teal":1173,"source":324,"pc":[1219]},{"teal":1174,"source":324,"pc":[1220,1221]},{"teal":1175,"source":324,"pc":[1222]},{"teal":1176,"source":324,"pc":[1223]},{"teal":1177,"source":324,"pc":[1224,1225]},{"teal":1178,"source":324,"pc":[1226]},{"teal":1182,"source":325,"pc":[1227]},{"teal":1183,"source":325,"pc":[1228,1229]},{"teal":1184,"source":325,"pc":[1230]},{"teal":1185,"source":325,"pc":[1231]},{"teal":1186,"source":325,"pc":[1232,1233]},{"teal":1187,"source":325,"pc":[1234]},{"teal":1188,"source":325,"pc":[1235]},{"teal":1189,"source":325,"pc":[1236,1237]},{"teal":1190,"source":325,"pc":[1238]},{"teal":1195,"source":328,"pc":[1239,1240]},{"teal":1196,"source":328,"pc":[1241,1242,1243]},{"teal":1197,"source":328,"pc":[1244]},{"teal":1198,"source":328,"pc":[1245]},{"teal":1199,"source":328,"pc":[1246]},{"teal":1200,"source":328,"pc":[1247,1248,1249]},{"teal":1205,"source":330,"pc":[1250,1251]},{"teal":1206,"source":330,"pc":[1252,1253,1254]},{"teal":1207,"source":330,"pc":[1255]},{"teal":1208,"source":330,"pc":[1256,1257,1258]},{"teal":1211,"source":330,"errorMessage":"provided NFD must be valid","pc":[1259]},{"teal":1218,"source":333,"pc":[1260,1261]},{"teal":1219,"source":333,"pc":[1262,1263]},{"teal":1220,"source":333,"pc":[1264,1265,1266]},{"teal":1221,"source":333,"pc":[1267]},{"teal":1222,"source":333,"pc":[1268,1269]},{"teal":1223,"source":333,"pc":[1270]},{"teal":1226,"source":333,"errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1271]},{"teal":1227,"source":333,"pc":[1272]},{"teal":1230,"source":332,"errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1273]},{"teal":1237,"source":338,"pc":[1274,1275]},{"teal":1238,"source":338,"pc":[1276,1277,1278]},{"teal":1239,"source":338,"pc":[1279]},{"teal":1240,"source":338,"pc":[1280,1281]},{"teal":1241,"source":338,"pc":[1282]},{"teal":1242,"source":338,"pc":[1283]},{"teal":1243,"source":338,"pc":[1284,1285,1286]},{"teal":1244,"source":339,"pc":[1287,1288]},{"teal":1245,"source":339,"pc":[1289,1290,1291]},{"teal":1246,"source":339,"pc":[1292]},{"teal":1247,"source":339,"pc":[1293,1294]},{"teal":1248,"source":339,"pc":[1295]},{"teal":1249,"source":338,"pc":[1296]},{"teal":1252,"source":337,"pc":[1297,1298,1299]},{"teal":1260,"source":343,"pc":[1300,1301]},{"teal":1261,"source":343,"pc":[1302,1303,1304]},{"teal":1262,"source":343,"pc":[1305]},{"teal":1263,"source":343,"pc":[1306,1307,1308]},{"teal":1266,"source":342,"errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1309]},{"teal":1271,"source":347,"pc":[1310,1311,1312,1313,1314,1315]},{"teal":1272,"source":347,"pc":[1316,1317]},{"teal":1273,"source":347,"pc":[1318]},{"teal":1274,"source":347,"pc":[1319,1320]},{"teal":1275,"source":347,"pc":[1321,1322,1323]},{"teal":1276,"source":347,"pc":[1324]},{"teal":1277,"source":347,"pc":[1325,1326]},{"teal":1278,"source":347,"pc":[1327,1328,1329]},{"teal":1279,"source":347,"pc":[1330]},{"teal":1280,"source":347,"pc":[1331]},{"teal":1281,"source":347,"pc":[1332]},{"teal":1285,"source":348,"pc":[1333,1334]},{"teal":1288,"source":312,"pc":[1335,1336]},{"teal":1289,"source":312,"pc":[1337]},{"teal":1294,"source":358,"pc":[1338,1339,1340]},{"teal":1295,"source":358,"pc":[1341]},{"teal":1296,"source":358,"pc":[1342]},{"teal":1297,"source":358,"pc":[1343,1344]},{"teal":1298,"source":358,"pc":[1345]},{"teal":1301,"source":358,"errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1346]},{"teal":1304,"source":358,"pc":[1347,1348,1349]},{"teal":1305,"source":358,"pc":[1350]},{"teal":1308,"source":358,"pc":[1351,1352,1353]},{"teal":1309,"source":358,"pc":[1354]},{"teal":1310,"source":358,"pc":[1355]},{"teal":1320,"source":358,"pc":[1356,1357,1358]},{"teal":1324,"source":359,"pc":[1359,1360]},{"teal":1325,"source":359,"pc":[1361,1362,1363]},{"teal":1329,"source":360,"pc":[1364,1365]},{"teal":1330,"source":360,"pc":[1366,1367]},{"teal":1331,"source":360,"pc":[1368]},{"teal":1334,"source":360,"errorMessage":"needs to at least be valid address","pc":[1369]},{"teal":1338,"source":361,"pc":[1370,1371]},{"teal":1339,"source":361,"pc":[1372,1373]},{"teal":1340,"source":361,"pc":[1374]},{"teal":1341,"source":361,"pc":[1375,1376]},{"teal":1342,"source":361,"pc":[1377]},{"teal":1343,"source":361,"pc":[1378]},{"teal":1344,"source":361,"pc":[1379,1380]},{"teal":1345,"source":361,"pc":[1381]},{"teal":1346,"source":358,"pc":[1382]},{"teal":1351,"source":372,"pc":[1383,1384,1385]},{"teal":1352,"source":372,"pc":[1386]},{"teal":1355,"source":372,"pc":[1387,1388,1389]},{"teal":1356,"source":372,"pc":[1390]},{"teal":1359,"source":372,"pc":[1391,1392,1393]},{"teal":1360,"source":372,"pc":[1394]},{"teal":1363,"source":372,"pc":[1395,1396,1397]},{"teal":1364,"source":372,"pc":[1398]},{"teal":1365,"source":372,"pc":[1399]},{"teal":1376,"source":372,"pc":[1400,1401,1402]},{"teal":1380,"source":373,"pc":[1403,1404]},{"teal":1381,"source":373,"pc":[1405,1406,1407]},{"teal":1385,"source":374,"pc":[1408,1409]},{"teal":1386,"source":374,"pc":[1410,1411]},{"teal":1387,"source":374,"pc":[1412]},{"teal":1388,"source":374,"pc":[1413]},{"teal":1389,"source":374,"pc":[1414,1415]},{"teal":1390,"source":374,"pc":[1416]},{"teal":1391,"source":374,"pc":[1417]},{"teal":1392,"source":374,"pc":[1418,1419]},{"teal":1393,"source":374,"pc":[1420]},{"teal":1397,"source":375,"pc":[1421,1422,1423]},{"teal":1398,"source":375,"pc":[1424,1425]},{"teal":1399,"source":375,"pc":[1426]},{"teal":1400,"source":375,"pc":[1427]},{"teal":1401,"source":375,"pc":[1428,1429]},{"teal":1402,"source":375,"pc":[1430]},{"teal":1403,"source":375,"pc":[1431]},{"teal":1404,"source":375,"pc":[1432,1433]},{"teal":1405,"source":375,"pc":[1434]},{"teal":1406,"source":372,"pc":[1435]},{"teal":1411,"source":386,"pc":[1436,1437,1438]},{"teal":1412,"source":386,"pc":[1439,1440,1441]},{"teal":1415,"source":386,"pc":[1442,1443,1444]},{"teal":1416,"source":386,"pc":[1445]},{"teal":1419,"source":386,"pc":[1446,1447,1448]},{"teal":1420,"source":386,"pc":[1449]},{"teal":1423,"source":386,"pc":[1450,1451,1452]},{"teal":1424,"source":386,"pc":[1453]},{"teal":1425,"source":386,"pc":[1454]},{"teal":1436,"source":386,"pc":[1455,1456,1457]},{"teal":1440,"source":387,"pc":[1458,1459]},{"teal":1441,"source":387,"pc":[1460,1461,1462]},{"teal":1445,"source":389,"pc":[1463,1464]},{"teal":1446,"source":389,"pc":[1465,1466,1467]},{"teal":1449,"source":389,"errorMessage":"provided NFD must be valid","pc":[1468]},{"teal":1456,"source":392,"pc":[1469,1470]},{"teal":1457,"source":392,"pc":[1471,1472]},{"teal":1458,"source":392,"pc":[1473,1474]},{"teal":1459,"source":392,"pc":[1475]},{"teal":1462,"source":392,"errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1476]},{"teal":1463,"source":392,"pc":[1477]},{"teal":1466,"source":391,"errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1478]},{"teal":1470,"source":395,"pc":[1479,1480]},{"teal":1471,"source":395,"pc":[1481,1482]},{"teal":1472,"source":395,"pc":[1483]},{"teal":1473,"source":395,"pc":[1484]},{"teal":1474,"source":395,"pc":[1485,1486]},{"teal":1475,"source":395,"pc":[1487]},{"teal":1476,"source":395,"pc":[1488]},{"teal":1477,"source":395,"pc":[1489,1490]},{"teal":1478,"source":395,"pc":[1491]},{"teal":1479,"source":386,"pc":[1492]},{"teal":1484,"source":402,"pc":[1493,1494,1495]},{"teal":1485,"source":402,"pc":[1496]},{"teal":1486,"source":402,"pc":[1497]},{"teal":1487,"source":402,"pc":[1498,1499]},{"teal":1488,"source":402,"pc":[1500]},{"teal":1491,"source":402,"errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1501]},{"teal":1494,"source":402,"pc":[1502,1503,1504]},{"teal":1495,"source":402,"pc":[1505]},{"teal":1498,"source":402,"pc":[1506,1507,1508]},{"teal":1499,"source":402,"pc":[1509]},{"teal":1500,"source":402,"pc":[1510]},{"teal":1507,"source":402,"pc":[1511,1512,1513]},{"teal":1511,"source":403,"pc":[1514,1515]},{"teal":1512,"source":403,"pc":[1516,1517,1518]},{"teal":1516,"source":404,"pc":[1519,1520]},{"teal":1517,"source":404,"pc":[1521,1522]},{"teal":1518,"source":404,"pc":[1523]},{"teal":1519,"source":404,"pc":[1524]},{"teal":1523,"source":405,"pc":[1525,1526,1527]},{"teal":1524,"source":405,"pc":[1528,1529]},{"teal":1525,"source":405,"pc":[1530]},{"teal":1526,"source":405,"pc":[1531,1532]},{"teal":1527,"source":405,"pc":[1533]},{"teal":1528,"source":405,"pc":[1534]},{"teal":1529,"source":405,"pc":[1535,1536]},{"teal":1530,"source":405,"pc":[1537]},{"teal":1531,"source":402,"pc":[1538]},{"teal":1536,"source":418,"pc":[1539,1540,1541]},{"teal":1537,"source":418,"pc":[1542]},{"teal":1540,"source":417,"pc":[1543,1544,1545]},{"teal":1541,"source":417,"pc":[1546]},{"teal":1544,"source":416,"pc":[1547,1548,1549]},{"teal":1545,"source":416,"pc":[1550]},{"teal":1546,"source":416,"pc":[1551]},{"teal":1547,"source":416,"pc":[1552,1553]},{"teal":1548,"source":416,"pc":[1554]},{"teal":1551,"source":416,"errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1555]},{"teal":1554,"source":415,"pc":[1556,1557,1558]},{"teal":1555,"source":415,"pc":[1559]},{"teal":1556,"source":415,"pc":[1560]},{"teal":1557,"source":415,"pc":[1561,1562]},{"teal":1558,"source":415,"pc":[1563]},{"teal":1561,"source":415,"errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1564]},{"teal":1564,"source":414,"pc":[1565,1566,1567]},{"teal":1565,"source":414,"pc":[1568]},{"teal":1566,"source":414,"pc":[1569]},{"teal":1567,"source":414,"pc":[1570]},{"teal":1568,"source":414,"pc":[1571]},{"teal":1571,"source":414,"errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1572]},{"teal":1572,"source":414,"pc":[1573]},{"teal":1575,"source":413,"pc":[1574,1575,1576]},{"teal":1576,"source":413,"pc":[1577]},{"teal":1579,"source":412,"pc":[1578,1579,1580]},{"teal":1580,"source":412,"pc":[1581]},{"teal":1581,"source":412,"pc":[1582]},{"teal":1588,"source":412,"pc":[1583,1584,1585]},{"teal":1592,"source":420,"pc":[1586,1587]},{"teal":1593,"source":420,"pc":[1588,1589,1590]},{"teal":1600,"source":423,"pc":[1591,1592]},{"teal":1601,"source":423,"pc":[1593]},{"teal":1602,"source":423,"pc":[1594]},{"teal":1603,"source":423,"pc":[1595]},{"teal":1604,"source":423,"pc":[1596,1597,1598]},{"teal":1605,"source":423,"pc":[1599,1600]},{"teal":1606,"source":423,"pc":[1601,1602]},{"teal":1607,"source":423,"pc":[1603]},{"teal":1608,"source":423,"pc":[1604]},{"teal":1612,"source":422,"errorMessage":"invalid Entry gating type","pc":[1605]},{"teal":1617,"source":426,"pc":[1606,1607]},{"teal":1618,"source":426,"pc":[1608]},{"teal":1619,"source":426,"pc":[1609]},{"teal":1620,"source":426,"pc":[1610,1611,1612]},{"teal":1625,"source":427,"pc":[1613,1614]},{"teal":1626,"source":427,"pc":[1615,1616]},{"teal":1627,"source":427,"pc":[1617]},{"teal":1628,"source":427,"pc":[1618]},{"teal":1635,"source":430,"pc":[1619,1620]},{"teal":1636,"source":430,"pc":[1621,1622]},{"teal":1637,"source":430,"pc":[1623]},{"teal":1638,"source":430,"pc":[1624]},{"teal":1639,"source":430,"pc":[1625,1626,1627]},{"teal":1640,"source":431,"pc":[1628,1629]},{"teal":1641,"source":431,"pc":[1630,1631]},{"teal":1642,"source":431,"pc":[1632]},{"teal":1643,"source":430,"pc":[1633]},{"teal":1646,"source":429,"pc":[1634,1635,1636]},{"teal":1651,"source":433,"pc":[1637,1638]},{"teal":1652,"source":433,"pc":[1639,1640,1641]},{"teal":1653,"source":433,"pc":[1642]},{"teal":1654,"source":433,"pc":[1643,1644,1645]},{"teal":1657,"source":433,"errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1646]},{"teal":1662,"source":435,"pc":[1647,1648]},{"teal":1663,"source":435,"pc":[1649,1650]},{"teal":1664,"source":435,"pc":[1651]},{"teal":1665,"source":435,"pc":[1652,1653,1654]},{"teal":1666,"source":435,"pc":[1655]},{"teal":1667,"source":435,"pc":[1656,1657]},{"teal":1668,"source":435,"pc":[1658]},{"teal":1669,"source":435,"pc":[1659]},{"teal":1670,"source":435,"pc":[1660,1661]},{"teal":1671,"source":435,"pc":[1662]},{"teal":1675,"source":436,"pc":[1663,1664]},{"teal":1676,"source":436,"pc":[1665,1666]},{"teal":1677,"source":436,"pc":[1667]},{"teal":1678,"source":436,"pc":[1668,1669]},{"teal":1679,"source":436,"pc":[1670]},{"teal":1680,"source":436,"pc":[1671]},{"teal":1681,"source":436,"pc":[1672,1673]},{"teal":1682,"source":436,"pc":[1674]},{"teal":1686,"source":437,"pc":[1675,1676]},{"teal":1687,"source":437,"pc":[1677,1678]},{"teal":1688,"source":437,"pc":[1679]},{"teal":1689,"source":437,"pc":[1680,1681]},{"teal":1690,"source":437,"pc":[1682]},{"teal":1691,"source":437,"pc":[1683]},{"teal":1692,"source":437,"pc":[1684,1685]},{"teal":1693,"source":437,"pc":[1686]},{"teal":1697,"source":438,"pc":[1687,1688]},{"teal":1698,"source":438,"pc":[1689,1690]},{"teal":1699,"source":438,"pc":[1691]},{"teal":1700,"source":438,"pc":[1692]},{"teal":1701,"source":438,"pc":[1693,1694]},{"teal":1702,"source":438,"pc":[1695]},{"teal":1703,"source":438,"pc":[1696]},{"teal":1704,"source":438,"pc":[1697,1698]},{"teal":1705,"source":438,"pc":[1699]},{"teal":1709,"source":439,"pc":[1700,1701,1702]},{"teal":1710,"source":439,"pc":[1703,1704]},{"teal":1711,"source":439,"pc":[1705]},{"teal":1712,"source":439,"pc":[1706]},{"teal":1713,"source":439,"pc":[1707,1708]},{"teal":1714,"source":439,"pc":[1709]},{"teal":1715,"source":439,"pc":[1710]},{"teal":1716,"source":439,"pc":[1711,1712]},{"teal":1717,"source":439,"pc":[1713]},{"teal":1718,"source":412,"pc":[1714]},{"teal":1723,"source":453,"pc":[1715]},{"teal":1726,"source":453,"pc":[1716,1717,1718]},{"teal":1727,"source":453,"pc":[1719]},{"teal":1730,"source":453,"pc":[1720,1721,1722]},{"teal":1731,"source":453,"pc":[1723]},{"teal":1734,"source":453,"pc":[1724,1725]},{"teal":1735,"source":453,"pc":[1726]},{"teal":1736,"source":453,"pc":[1727]},{"teal":1737,"source":453,"pc":[1728]},{"teal":1738,"source":453,"pc":[1729,1730]},{"teal":1739,"source":453,"pc":[1731]},{"teal":1740,"source":453,"pc":[1732]},{"teal":1743,"source":453,"errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1733]},{"teal":1746,"source":453,"pc":[1734,1735,1736]},{"teal":1747,"source":453,"pc":[1737]},{"teal":1748,"source":453,"pc":[1738]},{"teal":1749,"source":453,"pc":[1739]},{"teal":1750,"source":453,"pc":[1740]},{"teal":1763,"source":453,"pc":[1741,1742,1743]},{"teal":1766,"source":453,"pc":[1744]},{"teal":1767,"source":453,"pc":[1745]},{"teal":1771,"source":454,"pc":[1746,1747]},{"teal":1772,"source":454,"pc":[1748,1749,1750]},{"teal":1777,"source":457,"pc":[1751,1752]},{"teal":1778,"source":457,"pc":[1753,1754]},{"teal":1779,"source":457,"pc":[1755,1756]},{"teal":1780,"source":457,"pc":[1757]},{"teal":1783,"source":457,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1758]},{"teal":1786,"source":457,"pc":[1759,1760]},{"teal":1787,"source":457,"pc":[1761,1762]},{"teal":1788,"source":457,"pc":[1763,1764,1765]},{"teal":1789,"source":457,"pc":[1766,1767,1768]},{"teal":1790,"source":457,"pc":[1769]},{"teal":1791,"source":457,"pc":[1770]},{"teal":1794,"source":457,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1771]},{"teal":1798,"source":459,"pc":[1772]},{"teal":1799,"source":459,"pc":[1773,1774]},{"teal":1800,"source":459,"pc":[1775]},{"teal":1801,"source":459,"pc":[1776]},{"teal":1802,"source":459,"pc":[1777]},{"teal":1803,"source":459,"pc":[1778]},{"teal":1804,"source":459,"pc":[1779]},{"teal":1807,"source":459,"errorMessage":"specified validator id isn't valid","pc":[1780]},{"teal":1811,"source":461,"pc":[1781,1782]},{"teal":1812,"source":461,"pc":[1783,1784]},{"teal":1813,"source":461,"pc":[1785]},{"teal":1814,"source":461,"pc":[1786,1787]},{"teal":1815,"source":461,"pc":[1788]},{"teal":1816,"source":461,"pc":[1789]},{"teal":1817,"source":461,"pc":[1790,1791]},{"teal":1818,"source":461,"pc":[1792]},{"teal":1819,"source":461,"pc":[1793]},{"teal":1820,"source":461,"pc":[1794,1795]},{"teal":1825,"source":462,"pc":[1796,1797]},{"teal":1826,"source":58,"pc":[1798]},{"teal":1827,"source":462,"pc":[1799]},{"teal":1828,"source":462,"pc":[1800,1801,1802]},{"teal":1832,"source":463,"errorMessage":"already at max pool size","pc":[1803]},{"teal":1837,"source":465,"pc":[1804,1805]},{"teal":1838,"source":465,"pc":[1806]},{"teal":1839,"source":465,"pc":[1807]},{"teal":1840,"source":465,"pc":[1808,1809]},{"teal":1862,"source":468,"pc":[1810]},{"teal":1863,"source":468,"pc":[1811,1812]},{"teal":1864,"source":468,"pc":[1813,1814]},{"teal":1868,"source":469,"pc":[1815]},{"teal":1869,"source":469,"pc":[1816,1817]},{"teal":1876,"source":471,"pc":[1818,1819]},{"teal":1877,"source":471,"pc":[1820]},{"teal":1878,"source":471,"pc":[1821,1822]},{"teal":1879,"source":471,"pc":[1823]},{"teal":1880,"source":471,"pc":[1824,1825]},{"teal":1881,"source":472,"pc":[1826,1827]},{"teal":1882,"source":472,"pc":[1828,1829]},{"teal":1883,"source":472,"pc":[1830,1831]},{"teal":1884,"source":472,"pc":[1832]},{"teal":1887,"source":472,"errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1833]},{"teal":1888,"source":472,"pc":[1834,1835]},{"teal":1889,"source":472,"pc":[1836]},{"teal":1890,"source":472,"pc":[1837]},{"teal":1891,"source":472,"pc":[1838,1839]},{"teal":1895,"source":474,"pc":[1840,1841,1842]},{"teal":1896,"source":474,"pc":[1843,1844]},{"teal":1900,"source":475,"pc":[1845,1846]},{"teal":1901,"source":475,"pc":[1847,1848]},{"teal":1905,"source":476,"pc":[1849,1850]},{"teal":1906,"source":476,"pc":[1851,1852]},{"teal":1910,"source":477,"pc":[1853,1854]},{"teal":1911,"source":477,"pc":[1855,1856]},{"teal":1922,"source":480,"pc":[1857,1858,1859,1860,1861,1862]},{"teal":1923,"source":480,"pc":[1863,1864]},{"teal":1924,"source":481,"pc":[1865,1866,1867]},{"teal":1925,"source":481,"pc":[1868]},{"teal":1926,"source":481,"pc":[1869,1870]},{"teal":1927,"source":482,"pc":[1871,1872]},{"teal":1928,"source":482,"pc":[1873]},{"teal":1929,"source":482,"pc":[1874,1875]},{"teal":1930,"source":483,"pc":[1876,1877]},{"teal":1931,"source":483,"pc":[1878]},{"teal":1932,"source":483,"pc":[1879,1880]},{"teal":1933,"source":484,"pc":[1881,1882]},{"teal":1934,"source":484,"pc":[1883]},{"teal":1935,"source":484,"pc":[1884]},{"teal":1936,"source":484,"pc":[1885,1886]},{"teal":1937,"source":484,"pc":[1887]},{"teal":1938,"source":484,"pc":[1888]},{"teal":1939,"source":484,"pc":[1889,1890]},{"teal":1940,"source":484,"pc":[1891]},{"teal":1941,"source":484,"pc":[1892]},{"teal":1942,"source":484,"pc":[1893]},{"teal":1943,"source":484,"pc":[1894,1895]},{"teal":1946,"source":468,"pc":[1896]},{"teal":1947,"source":468,"pc":[1897,1898]},{"teal":1950,"source":468,"pc":[1899]},{"teal":1954,"source":488,"pc":[1900,1901]},{"teal":1955,"source":488,"pc":[1902,1903]},{"teal":1956,"source":488,"pc":[1904]},{"teal":1957,"source":488,"pc":[1905,1906,1907]},{"teal":1958,"source":488,"pc":[1908]},{"teal":1959,"source":488,"pc":[1909,1910]},{"teal":1960,"source":488,"pc":[1911]},{"teal":1961,"source":488,"pc":[1912]},{"teal":1962,"source":488,"pc":[1913,1914]},{"teal":1963,"source":488,"pc":[1915]},{"teal":1967,"source":491,"pc":[1916,1917]},{"teal":1968,"source":491,"pc":[1918,1919]},{"teal":1972,"source":492,"pc":[1920,1921]},{"teal":1973,"source":492,"pc":[1922,1923]},{"teal":1974,"source":492,"pc":[1924]},{"teal":1975,"source":492,"pc":[1925]},{"teal":1976,"source":492,"pc":[1926,1927]},{"teal":1977,"source":492,"pc":[1928]},{"teal":1978,"source":492,"pc":[1929]},{"teal":1979,"source":492,"pc":[1930]},{"teal":1980,"source":492,"pc":[1931]},{"teal":1981,"source":492,"pc":[1932,1933]},{"teal":1982,"source":492,"pc":[1934]},{"teal":1983,"source":492,"pc":[1935]},{"teal":1984,"source":492,"pc":[1936,1937]},{"teal":1985,"source":492,"pc":[1938]},{"teal":1986,"source":492,"pc":[1939]},{"teal":1987,"source":492,"pc":[1940,1941]},{"teal":1988,"source":492,"pc":[1942]},{"teal":1992,"source":493,"pc":[1943,1944]},{"teal":1993,"source":493,"pc":[1945,1946]},{"teal":1994,"source":493,"pc":[1947,1948]},{"teal":1995,"source":493,"pc":[1949,1950,1951]},{"teal":2003,"source":495,"pc":[1952,1953,1954,1955,1956,1957]},{"teal":2004,"source":496,"pc":[1958,1959]},{"teal":2005,"source":496,"pc":[1960]},{"teal":2006,"source":497,"pc":[1961,1962]},{"teal":2007,"source":497,"pc":[1963]},{"teal":2008,"source":497,"pc":[1964]},{"teal":2009,"source":497,"pc":[1965]},{"teal":2010,"source":497,"pc":[1966,1967]},{"teal":2011,"source":497,"pc":[1968]},{"teal":2014,"source":497,"errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1969]},{"teal":2015,"source":497,"pc":[1970,1971,1972]},{"teal":2016,"source":497,"pc":[1973]},{"teal":2017,"source":498,"pc":[1974,1975]},{"teal":2018,"source":498,"pc":[1976]},{"teal":2019,"source":498,"pc":[1977]},{"teal":2020,"source":495,"pc":[1978]},{"teal":2021,"source":495,"pc":[1979]},{"teal":2025,"source":501,"pc":[1980,1981]},{"teal":2026,"source":501,"pc":[1982]},{"teal":2027,"source":501,"pc":[1983,1984]},{"teal":2028,"source":501,"pc":[1985]},{"teal":2029,"source":501,"pc":[1986]},{"teal":2030,"source":501,"pc":[1987,1988]},{"teal":2031,"source":501,"pc":[1989]},{"teal":2032,"source":501,"pc":[1990]},{"teal":2035,"source":453,"pc":[1991,1992]},{"teal":2038,"source":453,"pc":[1993,1994]},{"teal":2039,"source":453,"pc":[1995]},{"teal":2044,"source":513,"pc":[1996]},{"teal":2047,"source":513,"pc":[1997,1998,1999]},{"teal":2048,"source":513,"pc":[2000]},{"teal":2051,"source":513,"pc":[2001,2002,2003]},{"teal":2052,"source":513,"pc":[2004]},{"teal":2055,"source":513,"pc":[2005,2006]},{"teal":2056,"source":513,"pc":[2007]},{"teal":2057,"source":513,"pc":[2008]},{"teal":2058,"source":513,"pc":[2009]},{"teal":2059,"source":513,"pc":[2010,2011]},{"teal":2060,"source":513,"pc":[2012]},{"teal":2061,"source":513,"pc":[2013]},{"teal":2064,"source":513,"errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[2014]},{"teal":2067,"source":513,"pc":[2015,2016,2017]},{"teal":2068,"source":513,"pc":[2018]},{"teal":2069,"source":513,"pc":[2019]},{"teal":2070,"source":513,"pc":[2020]},{"teal":2071,"source":513,"pc":[2021]},{"teal":2083,"source":513,"pc":[2022,2023,2024]},{"teal":2086,"source":513,"pc":[2025]},{"teal":2087,"source":513,"pc":[2026,2027]},{"teal":2091,"source":514,"pc":[2028]},{"teal":2092,"source":514,"pc":[2029,2030]},{"teal":2093,"source":514,"pc":[2031]},{"teal":2094,"source":514,"pc":[2032]},{"teal":2095,"source":514,"pc":[2033]},{"teal":2096,"source":514,"pc":[2034]},{"teal":2097,"source":514,"pc":[2035]},{"teal":2100,"source":514,"errorMessage":"specified validator id isn't valid","pc":[2036]},{"teal":2105,"source":517,"pc":[2037,2038]},{"teal":2106,"source":517,"pc":[2039]},{"teal":2107,"source":517,"pc":[2040]},{"teal":2108,"source":517,"pc":[2041,2042]},{"teal":2109,"source":517,"pc":[2043]},{"teal":2110,"source":517,"pc":[2044]},{"teal":2111,"source":517,"pc":[2045,2046]},{"teal":2112,"source":517,"pc":[2047]},{"teal":2113,"source":517,"pc":[2048]},{"teal":2114,"source":517,"pc":[2049]},{"teal":2115,"source":517,"pc":[2050]},{"teal":2116,"source":517,"pc":[2051,2052,2053]},{"teal":2124,"source":520,"pc":[2054,2055]},{"teal":2125,"source":520,"pc":[2056]},{"teal":2126,"source":520,"pc":[2057]},{"teal":2127,"source":520,"pc":[2058,2059]},{"teal":2128,"source":520,"pc":[2060]},{"teal":2129,"source":520,"pc":[2061]},{"teal":2130,"source":520,"pc":[2062,2063]},{"teal":2131,"source":520,"pc":[2064]},{"teal":2132,"source":520,"pc":[2065]},{"teal":2133,"source":520,"pc":[2066,2067]},{"teal":2134,"source":520,"pc":[2068]},{"teal":2137,"source":519,"errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[2069]},{"teal":2142,"source":525,"pc":[2070,2071]},{"teal":2143,"source":525,"pc":[2072,2073]},{"teal":2151,"source":529,"pc":[2074,2075]},{"teal":2152,"source":530,"pc":[2076,2077]},{"teal":2153,"source":530,"pc":[2078,2079]},{"teal":2154,"source":530,"pc":[2080]},{"teal":2157,"source":530,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[2081]},{"teal":2160,"source":529,"pc":[2082,2083]},{"teal":2161,"source":531,"pc":[2084,2085]},{"teal":2162,"source":531,"pc":[2086,2087]},{"teal":2163,"source":531,"pc":[2088]},{"teal":2166,"source":531,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[2089]},{"teal":2170,"source":537,"pc":[2090,2091]},{"teal":2171,"source":537,"pc":[2092,2093]},{"teal":2172,"source":537,"pc":[2094,2095,2096]},{"teal":2176,"source":539,"pc":[2097,2098]},{"teal":2177,"source":539,"pc":[2099,2100]},{"teal":2178,"source":539,"pc":[2101,2102]},{"teal":2182,"source":540,"pc":[2103]},{"teal":2183,"source":540,"pc":[2104,2105]},{"teal":2188,"source":542,"pc":[2106,2107]},{"teal":2189,"source":542,"pc":[2108,2109,2110]},{"teal":2190,"source":542,"pc":[2111,2112,2113]},{"teal":2195,"source":545,"pc":[2114,2115,2116]},{"teal":2196,"source":545,"pc":[2117,2118,2119]},{"teal":2197,"source":545,"pc":[2120]},{"teal":2198,"source":545,"pc":[2121,2122]},{"teal":2202,"source":546,"pc":[2123,2124]},{"teal":2203,"source":546,"pc":[2125,2126]},{"teal":2204,"source":546,"pc":[2127]},{"teal":2205,"source":546,"pc":[2128,2129]},{"teal":2209,"source":547,"pc":[2130]},{"teal":2210,"source":547,"pc":[2131,2132]},{"teal":2211,"source":547,"pc":[2133]},{"teal":2212,"source":547,"pc":[2134,2135,2136]},{"teal":2213,"source":547,"pc":[2137]},{"teal":2214,"source":547,"pc":[2138]},{"teal":2222,"source":552,"pc":[2139,2140]},{"teal":2223,"source":552,"pc":[2141]},{"teal":2224,"source":552,"pc":[2142]},{"teal":2225,"source":552,"pc":[2143,2144]},{"teal":2226,"source":552,"pc":[2145]},{"teal":2227,"source":552,"pc":[2146]},{"teal":2228,"source":552,"pc":[2147,2148]},{"teal":2229,"source":552,"pc":[2149]},{"teal":2230,"source":552,"pc":[2150]},{"teal":2231,"source":552,"pc":[2151,2152]},{"teal":2232,"source":552,"pc":[2153]},{"teal":2233,"source":552,"pc":[2154,2155,2156]},{"teal":2234,"source":552,"pc":[2157]},{"teal":2237,"source":551,"errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[2158]},{"teal":2241,"source":558,"pc":[2159,2160]},{"teal":2242,"source":558,"pc":[2161,2162]},{"teal":2243,"source":558,"pc":[2163,2164]},{"teal":2244,"source":558,"pc":[2165,2166,2167]},{"teal":2245,"source":558,"pc":[2168,2169]},{"teal":2251,"source":560,"pc":[2170,2171]},{"teal":2252,"source":560,"pc":[2172,2173]},{"teal":2253,"source":560,"pc":[2174,2175]},{"teal":2254,"source":560,"pc":[2176,2177]},{"teal":2255,"source":560,"pc":[2178]},{"teal":2256,"source":560,"pc":[2179,2180]},{"teal":2260,"source":561,"pc":[2181,2182]},{"teal":2261,"source":561,"pc":[2183,2184]},{"teal":2262,"source":561,"pc":[2185,2186]},{"teal":2263,"source":561,"pc":[2187,2188,2189]},{"teal":2264,"source":561,"pc":[2190]},{"teal":2265,"source":561,"pc":[2191,2192]},{"teal":2270,"source":562,"pc":[2193,2194]},{"teal":2271,"source":562,"pc":[2195,2196]},{"teal":2272,"source":562,"pc":[2197,2198]},{"teal":2273,"source":562,"pc":[2199,2200,2201]},{"teal":2274,"source":562,"pc":[2202]},{"teal":2275,"source":562,"pc":[2203]},{"teal":2276,"source":562,"pc":[2204]},{"teal":2277,"source":562,"pc":[2205,2206,2207]},{"teal":2281,"source":563,"errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2208]},{"teal":2286,"source":567,"pc":[2209,2210]},{"teal":2287,"source":567,"pc":[2211,2212]},{"teal":2288,"source":567,"pc":[2213,2214]},{"teal":2289,"source":567,"pc":[2215,2216,2217]},{"teal":2290,"source":567,"pc":[2218,2219]},{"teal":2291,"source":567,"pc":[2220,2221,2222]},{"teal":2301,"source":575,"pc":[2223,2224]},{"teal":2302,"source":574,"pc":[2225,2226]},{"teal":2303,"source":573,"pc":[2227,2228]},{"teal":2304,"source":572,"pc":[2229,2230]},{"teal":2305,"source":572,"pc":[2231,2232]},{"teal":2306,"source":572,"pc":[2233,2234]},{"teal":2307,"source":572,"pc":[2235,2236,2237]},{"teal":2308,"source":571,"pc":[2238,2239]},{"teal":2309,"source":570,"pc":[2240,2241,2242]},{"teal":2319,"source":577,"pc":[2243,2244,2245,2246,2247,2248]},{"teal":2320,"source":578,"pc":[2249,2250]},{"teal":2321,"source":578,"pc":[2251]},{"teal":2322,"source":579,"pc":[2252,2253]},{"teal":2323,"source":579,"pc":[2254,2255]},{"teal":2324,"source":579,"pc":[2256,2257]},{"teal":2325,"source":579,"pc":[2258,2259,2260]},{"teal":2326,"source":579,"pc":[2261]},{"teal":2327,"source":579,"pc":[2262]},{"teal":2328,"source":579,"pc":[2263]},{"teal":2329,"source":579,"pc":[2264]},{"teal":2330,"source":579,"pc":[2265,2266]},{"teal":2331,"source":579,"pc":[2267]},{"teal":2334,"source":579,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2268]},{"teal":2335,"source":579,"pc":[2269,2270,2271]},{"teal":2336,"source":579,"pc":[2272]},{"teal":2337,"source":580,"pc":[2273,2274]},{"teal":2338,"source":580,"pc":[2275,2276]},{"teal":2339,"source":580,"pc":[2277,2278]},{"teal":2340,"source":580,"pc":[2279,2280,2281]},{"teal":2341,"source":580,"pc":[2282]},{"teal":2342,"source":580,"pc":[2283]},{"teal":2343,"source":580,"pc":[2284]},{"teal":2344,"source":582,"pc":[2285,2286]},{"teal":2345,"source":582,"pc":[2287]},{"teal":2346,"source":581,"pc":[2288,2289]},{"teal":2347,"source":581,"pc":[2290]},{"teal":2348,"source":581,"pc":[2291]},{"teal":2349,"source":577,"pc":[2292]},{"teal":2350,"source":577,"pc":[2293]},{"teal":2354,"source":585,"pc":[2294,2295]},{"teal":2355,"source":585,"pc":[2296,2297]},{"teal":2356,"source":585,"pc":[2298,2299]},{"teal":2357,"source":585,"pc":[2300,2301,2302]},{"teal":2360,"source":513,"pc":[2303,2304]},{"teal":2363,"source":513,"pc":[2305,2306]},{"teal":2364,"source":513,"pc":[2307]},{"teal":2369,"source":603,"pc":[2308]},{"teal":2372,"source":603,"pc":[2309,2310,2311]},{"teal":2373,"source":603,"pc":[2312]},{"teal":2376,"source":603,"pc":[2313,2314,2315]},{"teal":2377,"source":603,"pc":[2316]},{"teal":2378,"source":603,"pc":[2317]},{"teal":2379,"source":603,"pc":[2318]},{"teal":2380,"source":603,"pc":[2319]},{"teal":2398,"source":603,"pc":[2320,2321,2322]},{"teal":2401,"source":603,"pc":[2323]},{"teal":2402,"source":603,"pc":[2324,2325]},{"teal":2406,"source":605,"pc":[2326,2327]},{"teal":2407,"source":605,"pc":[2328]},{"teal":2408,"source":605,"pc":[2329]},{"teal":2409,"source":605,"pc":[2330,2331]},{"teal":2410,"source":605,"pc":[2332]},{"teal":2411,"source":605,"pc":[2333]},{"teal":2412,"source":605,"pc":[2334,2335]},{"teal":2413,"source":605,"pc":[2336]},{"teal":2414,"source":605,"pc":[2337]},{"teal":2415,"source":605,"pc":[2338,2339]},{"teal":2419,"source":606,"pc":[2340,2341]},{"teal":2420,"source":606,"pc":[2342]},{"teal":2421,"source":606,"pc":[2343]},{"teal":2422,"source":606,"pc":[2344]},{"teal":2427,"source":608,"pc":[2345,2346]},{"teal":2428,"source":608,"pc":[2347,2348]},{"teal":2429,"source":608,"pc":[2349,2350]},{"teal":2430,"source":608,"pc":[2351]},{"teal":2431,"source":608,"pc":[2352]},{"teal":2432,"source":608,"pc":[2353,2354,2355]},{"teal":2437,"source":609,"pc":[2356,2357]},{"teal":2438,"source":609,"pc":[2358,2359]},{"teal":2439,"source":609,"pc":[2360]},{"teal":2440,"source":609,"pc":[2361,2362]},{"teal":2441,"source":609,"pc":[2363]},{"teal":2442,"source":609,"pc":[2364]},{"teal":2443,"source":609,"pc":[2365,2366]},{"teal":2444,"source":609,"pc":[2367]},{"teal":2445,"source":609,"pc":[2368,2369,2370]},{"teal":2450,"source":615,"pc":[2371,2372]},{"teal":2451,"source":615,"pc":[2373,2374]},{"teal":2455,"source":616,"pc":[2375,2376]},{"teal":2456,"source":616,"pc":[2377]},{"teal":2457,"source":616,"pc":[2378]},{"teal":2458,"source":616,"pc":[2379,2380]},{"teal":2459,"source":616,"pc":[2381]},{"teal":2460,"source":616,"pc":[2382]},{"teal":2461,"source":616,"pc":[2383,2384]},{"teal":2462,"source":616,"pc":[2385]},{"teal":2463,"source":616,"pc":[2386]},{"teal":2464,"source":616,"pc":[2387,2388]},{"teal":2469,"source":617,"pc":[2389,2390]},{"teal":2470,"source":617,"pc":[2391]},{"teal":2471,"source":617,"pc":[2392]},{"teal":2472,"source":617,"pc":[2393,2394,2395]},{"teal":2478,"source":619,"pc":[2396,2397]},{"teal":2479,"source":619,"pc":[2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409]},{"teal":2480,"source":619,"pc":[2410]},{"teal":2483,"source":619,"errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2411]},{"teal":2484,"source":619,"pc":[2412,2413]},{"teal":2485,"source":619,"pc":[2414]},{"teal":2486,"source":619,"pc":[2415,2416,2417]},{"teal":2491,"source":620,"pc":[2418,2419]},{"teal":2492,"source":620,"pc":[2420,2421]},{"teal":2493,"source":620,"pc":[2422]},{"teal":2494,"source":620,"pc":[2423,2424]},{"teal":2495,"source":620,"pc":[2425]},{"teal":2496,"source":620,"pc":[2426]},{"teal":2497,"source":620,"pc":[2427,2428]},{"teal":2498,"source":620,"pc":[2429]},{"teal":2499,"source":620,"pc":[2430,2431,2432]},{"teal":2504,"source":622,"pc":[2433,2434,2435]},{"teal":2505,"source":622,"pc":[2436,2437]},{"teal":2506,"source":622,"pc":[2438]},{"teal":2507,"source":622,"pc":[2439,2440]},{"teal":2508,"source":622,"pc":[2441]},{"teal":2509,"source":622,"pc":[2442]},{"teal":2510,"source":622,"pc":[2443,2444]},{"teal":2511,"source":622,"pc":[2445]},{"teal":2512,"source":622,"pc":[2446]},{"teal":2513,"source":622,"pc":[2447,2448]},{"teal":2517,"source":623,"pc":[2449,2450]},{"teal":2518,"source":623,"pc":[2451,2452]},{"teal":2519,"source":623,"pc":[2453,2454]},{"teal":2520,"source":623,"pc":[2455]},{"teal":2521,"source":623,"pc":[2456]},{"teal":2522,"source":623,"pc":[2457,2458]},{"teal":2527,"source":625,"pc":[2459,2460]},{"teal":2528,"source":625,"pc":[2461,2462]},{"teal":2529,"source":625,"pc":[2463,2464]},{"teal":2530,"source":625,"pc":[2465]},{"teal":2531,"source":625,"pc":[2466]},{"teal":2532,"source":625,"pc":[2467,2468]},{"teal":2533,"source":625,"pc":[2469]},{"teal":2534,"source":625,"pc":[2470,2471,2472]},{"teal":2539,"source":626,"pc":[2473,2474]},{"teal":2540,"source":626,"pc":[2475,2476]},{"teal":2541,"source":626,"pc":[2477]},{"teal":2542,"source":626,"pc":[2478,2479]},{"teal":2543,"source":626,"pc":[2480]},{"teal":2544,"source":626,"pc":[2481]},{"teal":2545,"source":626,"pc":[2482,2483]},{"teal":2546,"source":626,"pc":[2484]},{"teal":2547,"source":626,"pc":[2485,2486,2487]},{"teal":2554,"source":629,"pc":[2488,2489]},{"teal":2555,"source":629,"pc":[2490,2491]},{"teal":2556,"source":629,"pc":[2492]},{"teal":2557,"source":629,"pc":[2493]},{"teal":2558,"source":629,"pc":[2494,2495]},{"teal":2559,"source":629,"pc":[2496]},{"teal":2560,"source":629,"pc":[2497]},{"teal":2561,"source":629,"pc":[2498,2499]},{"teal":2562,"source":629,"pc":[2500]},{"teal":2566,"source":631,"pc":[2501,2502]},{"teal":2567,"source":631,"pc":[2503,2504]},{"teal":2568,"source":631,"pc":[2505]},{"teal":2569,"source":631,"pc":[2506,2507]},{"teal":2570,"source":631,"pc":[2508]},{"teal":2571,"source":631,"pc":[2509]},{"teal":2572,"source":631,"pc":[2510,2511]},{"teal":2573,"source":631,"pc":[2512]},{"teal":2574,"source":631,"pc":[2513]},{"teal":2575,"source":631,"pc":[2514,2515]},{"teal":2579,"source":632,"pc":[2516,2517]},{"teal":2580,"source":632,"pc":[2518]},{"teal":2581,"source":632,"pc":[2519]},{"teal":2582,"source":632,"pc":[2520,2521]},{"teal":2583,"source":632,"pc":[2522]},{"teal":2584,"source":632,"pc":[2523]},{"teal":2585,"source":632,"pc":[2524,2525]},{"teal":2586,"source":632,"pc":[2526]},{"teal":2587,"source":632,"pc":[2527]},{"teal":2588,"source":632,"pc":[2528,2529]},{"teal":2592,"source":633,"pc":[2530]},{"teal":2593,"source":633,"pc":[2531,2532]},{"teal":2598,"source":633,"pc":[2533,2534]},{"teal":2599,"source":633,"pc":[2535,2536]},{"teal":2600,"source":633,"pc":[2537]},{"teal":2601,"source":633,"pc":[2538,2539,2540]},{"teal":2608,"source":639,"pc":[2541,2542]},{"teal":2609,"source":639,"pc":[2543,2544]},{"teal":2610,"source":639,"pc":[2545,2546]},{"teal":2611,"source":639,"pc":[2547]},{"teal":2612,"source":639,"pc":[2548]},{"teal":2613,"source":639,"pc":[2549,2550]},{"teal":2614,"source":639,"pc":[2551]},{"teal":2615,"source":639,"pc":[2552]},{"teal":2616,"source":639,"pc":[2553]},{"teal":2617,"source":639,"pc":[2554,2555]},{"teal":2618,"source":639,"pc":[2556]},{"teal":2619,"source":639,"pc":[2557]},{"teal":2620,"source":639,"pc":[2558,2559]},{"teal":2621,"source":639,"pc":[2560]},{"teal":2622,"source":639,"pc":[2561]},{"teal":2623,"source":639,"pc":[2562,2563]},{"teal":2624,"source":638,"pc":[2564]},{"teal":2625,"source":638,"pc":[2565]},{"teal":2626,"source":640,"pc":[2566,2567]},{"teal":2627,"source":638,"pc":[2568]},{"teal":2628,"source":638,"pc":[2569]},{"teal":2629,"source":638,"pc":[2570]},{"teal":2630,"source":638,"pc":[2571]},{"teal":2631,"source":638,"pc":[2572]},{"teal":2634,"source":638,"errorMessage":"wideRatio failed","pc":[2573]},{"teal":2635,"source":638,"pc":[2574,2575]},{"teal":2639,"source":642,"pc":[2576,2577]},{"teal":2640,"source":642,"pc":[2578,2579]},{"teal":2641,"source":642,"pc":[2580]},{"teal":2642,"source":642,"pc":[2581]},{"teal":2643,"source":642,"pc":[2582]},{"teal":2644,"source":642,"pc":[2583,2584]},{"teal":2645,"source":642,"pc":[2585]},{"teal":2646,"source":642,"pc":[2586]},{"teal":2647,"source":642,"pc":[2587,2588]},{"teal":2648,"source":642,"pc":[2589]},{"teal":2649,"source":642,"pc":[2590]},{"teal":2650,"source":642,"pc":[2591,2592]},{"teal":2651,"source":642,"pc":[2593]},{"teal":2656,"source":633,"pc":[2594,2595]},{"teal":2657,"source":633,"pc":[2596]},{"teal":2658,"source":633,"pc":[2597]},{"teal":2659,"source":633,"pc":[2598,2599]},{"teal":2660,"source":633,"pc":[2600,2601,2602]},{"teal":2665,"source":644,"pc":[2603,2604]},{"teal":2666,"source":644,"pc":[2605,2606]},{"teal":2667,"source":644,"pc":[2607]},{"teal":2668,"source":644,"pc":[2608,2609]},{"teal":2669,"source":644,"pc":[2610]},{"teal":2670,"source":644,"pc":[2611]},{"teal":2671,"source":644,"pc":[2612,2613]},{"teal":2672,"source":644,"pc":[2614]},{"teal":2676,"source":603,"pc":[2615,2616]},{"teal":2679,"source":603,"pc":[2617,2618]},{"teal":2680,"source":603,"pc":[2619]},{"teal":2685,"source":663,"pc":[2620,2621,2622]},{"teal":2686,"source":663,"pc":[2623]},{"teal":2689,"source":662,"pc":[2624,2625,2626]},{"teal":2690,"source":662,"pc":[2627]},{"teal":2693,"source":661,"pc":[2628,2629,2630]},{"teal":2694,"source":661,"pc":[2631]},{"teal":2697,"source":660,"pc":[2632,2633,2634]},{"teal":2698,"source":660,"pc":[2635]},{"teal":2701,"source":659,"pc":[2636,2637,2638]},{"teal":2702,"source":659,"pc":[2639]},{"teal":2703,"source":659,"pc":[2640]},{"teal":2704,"source":659,"pc":[2641]},{"teal":2705,"source":659,"pc":[2642]},{"teal":2708,"source":659,"errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2643]},{"teal":2711,"source":658,"pc":[2644,2645,2646]},{"teal":2712,"source":658,"pc":[2647]},{"teal":2713,"source":658,"pc":[2648]},{"teal":2727,"source":658,"pc":[2649,2650,2651]},{"teal":2731,"source":665,"pc":[2652,2653]},{"teal":2732,"source":665,"pc":[2654,2655,2656]},{"teal":2736,"source":668,"pc":[2657,2658]},{"teal":2737,"source":668,"pc":[2659,2660]},{"teal":2738,"source":668,"pc":[2661,2662,2663]},{"teal":2739,"source":668,"pc":[2664]},{"teal":2740,"source":668,"pc":[2665]},{"teal":2741,"source":668,"pc":[2666]},{"teal":2742,"source":668,"pc":[2667,2668]},{"teal":2743,"source":668,"pc":[2669]},{"teal":2744,"source":668,"pc":[2670]},{"teal":2745,"source":668,"pc":[2671,2672]},{"teal":2746,"source":668,"pc":[2673]},{"teal":2747,"source":668,"pc":[2674,2675]},{"teal":2748,"source":668,"pc":[2676,2677]},{"teal":2749,"source":668,"pc":[2678,2679,2680]},{"teal":2750,"source":668,"pc":[2681]},{"teal":2751,"source":668,"pc":[2682]},{"teal":2752,"source":668,"pc":[2683]},{"teal":2753,"source":668,"pc":[2684,2685]},{"teal":2754,"source":668,"pc":[2686]},{"teal":2755,"source":668,"pc":[2687]},{"teal":2756,"source":668,"pc":[2688,2689]},{"teal":2757,"source":668,"pc":[2690]},{"teal":2758,"source":668,"pc":[2691]},{"teal":2759,"source":668,"pc":[2692]},{"teal":2760,"source":668,"pc":[2693,2694]},{"teal":2761,"source":668,"pc":[2695,2696,2697]},{"teal":2762,"source":668,"pc":[2698]},{"teal":2763,"source":668,"pc":[2699]},{"teal":2764,"source":668,"pc":[2700]},{"teal":2765,"source":668,"pc":[2701,2702]},{"teal":2766,"source":668,"pc":[2703]},{"teal":2767,"source":668,"pc":[2704]},{"teal":2768,"source":668,"pc":[2705,2706]},{"teal":2769,"source":668,"pc":[2707]},{"teal":2770,"source":668,"pc":[2708]},{"teal":2771,"source":668,"pc":[2709]},{"teal":2772,"source":668,"pc":[2710,2711]},{"teal":2773,"source":668,"pc":[2712,2713,2714]},{"teal":2774,"source":668,"pc":[2715]},{"teal":2775,"source":668,"pc":[2716]},{"teal":2776,"source":668,"pc":[2717]},{"teal":2777,"source":668,"pc":[2718,2719]},{"teal":2778,"source":668,"pc":[2720]},{"teal":2782,"source":669,"pc":[2721,2722]},{"teal":2783,"source":669,"pc":[2723]},{"teal":2784,"source":669,"pc":[2724]},{"teal":2785,"source":669,"pc":[2725]},{"teal":2786,"source":669,"pc":[2726,2727]},{"teal":2787,"source":669,"pc":[2728,2729,2730]},{"teal":2788,"source":669,"pc":[2731]},{"teal":2789,"source":669,"pc":[2732]},{"teal":2790,"source":669,"pc":[2733]},{"teal":2791,"source":669,"pc":[2734,2735]},{"teal":2792,"source":669,"pc":[2736]},{"teal":2793,"source":669,"pc":[2737]},{"teal":2794,"source":669,"pc":[2738,2739]},{"teal":2795,"source":669,"pc":[2740]},{"teal":2796,"source":669,"pc":[2741]},{"teal":2797,"source":669,"pc":[2742]},{"teal":2798,"source":669,"pc":[2743,2744]},{"teal":2799,"source":669,"pc":[2745,2746,2747]},{"teal":2800,"source":669,"pc":[2748]},{"teal":2801,"source":669,"pc":[2749]},{"teal":2802,"source":669,"pc":[2750]},{"teal":2803,"source":669,"pc":[2751,2752]},{"teal":2804,"source":669,"pc":[2753]},{"teal":2808,"source":670,"pc":[2754,2755]},{"teal":2809,"source":670,"pc":[2756]},{"teal":2810,"source":670,"pc":[2757]},{"teal":2811,"source":670,"pc":[2758]},{"teal":2812,"source":670,"pc":[2759,2760]},{"teal":2813,"source":670,"pc":[2761,2762,2763]},{"teal":2814,"source":670,"pc":[2764]},{"teal":2815,"source":670,"pc":[2765]},{"teal":2816,"source":670,"pc":[2766]},{"teal":2817,"source":670,"pc":[2767,2768]},{"teal":2818,"source":670,"pc":[2769]},{"teal":2819,"source":670,"pc":[2770]},{"teal":2820,"source":670,"pc":[2771,2772]},{"teal":2821,"source":670,"pc":[2773]},{"teal":2822,"source":670,"pc":[2774]},{"teal":2823,"source":670,"pc":[2775]},{"teal":2824,"source":670,"pc":[2776,2777]},{"teal":2825,"source":670,"pc":[2778,2779,2780]},{"teal":2826,"source":670,"pc":[2781]},{"teal":2827,"source":670,"pc":[2782]},{"teal":2828,"source":670,"pc":[2783]},{"teal":2829,"source":670,"pc":[2784,2785]},{"teal":2830,"source":670,"pc":[2786]},{"teal":2834,"source":672,"pc":[2787,2788]},{"teal":2835,"source":672,"pc":[2789]},{"teal":2836,"source":672,"pc":[2790,2791]},{"teal":2837,"source":672,"pc":[2792]},{"teal":2838,"source":672,"pc":[2793,2794]},{"teal":2839,"source":672,"pc":[2795]},{"teal":2840,"source":672,"pc":[2796]},{"teal":2844,"source":675,"pc":[2797,2798]},{"teal":2845,"source":675,"pc":[2799,2800,2801]},{"teal":2846,"source":675,"pc":[2802]},{"teal":2847,"source":675,"pc":[2803,2804,2805]},{"teal":2859,"source":677,"pc":[2806,2807,2808,2809,2810,2811]},{"teal":2860,"source":678,"pc":[2812,2813]},{"teal":2861,"source":678,"pc":[2814,2815,2816]},{"teal":2862,"source":678,"pc":[2817]},{"teal":2863,"source":678,"pc":[2818]},{"teal":2864,"source":679,"pc":[2819,2820]},{"teal":2865,"source":679,"pc":[2821,2822,2823]},{"teal":2866,"source":679,"pc":[2824]},{"teal":2867,"source":679,"pc":[2825]},{"teal":2868,"source":679,"pc":[2826]},{"teal":2869,"source":679,"pc":[2827]},{"teal":2870,"source":679,"pc":[2828,2829]},{"teal":2871,"source":679,"pc":[2830]},{"teal":2874,"source":679,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2831]},{"teal":2875,"source":679,"pc":[2832,2833,2834]},{"teal":2876,"source":679,"pc":[2835]},{"teal":2877,"source":680,"pc":[2836,2837]},{"teal":2878,"source":680,"pc":[2838,2839,2840]},{"teal":2879,"source":680,"pc":[2841]},{"teal":2880,"source":680,"pc":[2842]},{"teal":2881,"source":680,"pc":[2843]},{"teal":2882,"source":684,"pc":[2844,2845]},{"teal":2883,"source":684,"pc":[2846]},{"teal":2884,"source":684,"pc":[2847]},{"teal":2885,"source":683,"pc":[2848,2849]},{"teal":2886,"source":683,"pc":[2850]},{"teal":2887,"source":683,"pc":[2851]},{"teal":2888,"source":681,"pc":[2852,2853]},{"teal":2889,"source":681,"pc":[2854]},{"teal":2890,"source":681,"pc":[2855]},{"teal":2891,"source":682,"pc":[2856,2857]},{"teal":2892,"source":682,"pc":[2858]},{"teal":2893,"source":682,"pc":[2859]},{"teal":2894,"source":677,"pc":[2860]},{"teal":2895,"source":677,"pc":[2861]},{"teal":2896,"source":658,"pc":[2862]},{"teal":2901,"source":705,"pc":[2863,2864,2865]},{"teal":2902,"source":705,"pc":[2866]},{"teal":2903,"source":705,"pc":[2867]},{"teal":2904,"source":705,"pc":[2868]},{"teal":2905,"source":705,"pc":[2869]},{"teal":2908,"source":705,"errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2870]},{"teal":2909,"source":705,"pc":[2871]},{"teal":2910,"source":705,"pc":[2872]},{"teal":2913,"source":704,"pc":[2873,2874,2875]},{"teal":2914,"source":704,"pc":[2876]},{"teal":2917,"source":703,"pc":[2877,2878,2879]},{"teal":2918,"source":703,"pc":[2880]},{"teal":2921,"source":702,"pc":[2881,2882,2883]},{"teal":2922,"source":702,"pc":[2884]},{"teal":2923,"source":702,"pc":[2885]},{"teal":2924,"source":702,"pc":[2886,2887]},{"teal":2925,"source":702,"pc":[2888]},{"teal":2928,"source":702,"errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2889]},{"teal":2931,"source":701,"pc":[2890,2891,2892]},{"teal":2932,"source":701,"pc":[2893]},{"teal":2933,"source":701,"pc":[2894]},{"teal":2934,"source":701,"pc":[2895]},{"teal":2935,"source":701,"pc":[2896]},{"teal":2938,"source":701,"errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2897]},{"teal":2941,"source":700,"pc":[2898,2899,2900]},{"teal":2942,"source":700,"pc":[2901]},{"teal":2943,"source":700,"pc":[2902]},{"teal":2958,"source":700,"pc":[2903,2904,2905]},{"teal":2961,"source":700,"pc":[2906]},{"teal":2962,"source":700,"pc":[2907,2908]},{"teal":2967,"source":707,"pc":[2909,2910]},{"teal":2968,"source":707,"pc":[2911,2912]},{"teal":2969,"source":707,"pc":[2913]},{"teal":2970,"source":707,"pc":[2914,2915,2916]},{"teal":2975,"source":708,"pc":[2917]},{"teal":2976,"source":708,"pc":[2918,2919]},{"teal":2977,"source":708,"pc":[2920,2921]},{"teal":2978,"source":708,"pc":[2922]},{"teal":2979,"source":708,"pc":[2923,2924]},{"teal":2980,"source":708,"pc":[2925,2926]},{"teal":2981,"source":708,"pc":[2927]},{"teal":2982,"source":708,"pc":[2928,2929]},{"teal":2983,"source":708,"pc":[2930,2931]},{"teal":2984,"source":708,"pc":[2932,2933]},{"teal":2985,"source":708,"pc":[2934,2935]},{"teal":2986,"source":708,"pc":[2936]},{"teal":2991,"source":710,"pc":[2937,2938]},{"teal":2992,"source":710,"pc":[2939,2940,2941]},{"teal":2996,"source":714,"pc":[2942,2943]},{"teal":2997,"source":714,"pc":[2944]},{"teal":2998,"source":714,"pc":[2945]},{"teal":2999,"source":714,"pc":[2946]},{"teal":3000,"source":714,"pc":[2947,2948,2949]},{"teal":3001,"source":714,"pc":[2950,2951]},{"teal":3002,"source":714,"pc":[2952]},{"teal":3003,"source":714,"pc":[2953]},{"teal":3004,"source":714,"pc":[2954]},{"teal":3008,"source":714,"errorMessage":"should only be called if algo or reward was removed","pc":[2955]},{"teal":3012,"source":717,"pc":[2956,2957]},{"teal":3013,"source":717,"pc":[2958,2959]},{"teal":3014,"source":717,"pc":[2960,2961,2962]},{"teal":3015,"source":717,"pc":[2963]},{"teal":3016,"source":717,"pc":[2964]},{"teal":3017,"source":717,"pc":[2965]},{"teal":3018,"source":717,"pc":[2966,2967]},{"teal":3019,"source":717,"pc":[2968]},{"teal":3020,"source":717,"pc":[2969]},{"teal":3021,"source":717,"pc":[2970,2971]},{"teal":3022,"source":717,"pc":[2972]},{"teal":3023,"source":717,"pc":[2973,2974]},{"teal":3024,"source":717,"pc":[2975,2976]},{"teal":3025,"source":717,"pc":[2977,2978,2979]},{"teal":3026,"source":717,"pc":[2980]},{"teal":3027,"source":717,"pc":[2981]},{"teal":3028,"source":717,"pc":[2982]},{"teal":3029,"source":717,"pc":[2983,2984]},{"teal":3030,"source":717,"pc":[2985]},{"teal":3031,"source":717,"pc":[2986]},{"teal":3032,"source":717,"pc":[2987,2988]},{"teal":3033,"source":717,"pc":[2989]},{"teal":3034,"source":717,"pc":[2990]},{"teal":3035,"source":717,"pc":[2991]},{"teal":3036,"source":717,"pc":[2992,2993]},{"teal":3037,"source":717,"pc":[2994,2995,2996]},{"teal":3038,"source":717,"pc":[2997]},{"teal":3039,"source":717,"pc":[2998]},{"teal":3040,"source":717,"pc":[2999]},{"teal":3041,"source":717,"pc":[3000,3001]},{"teal":3042,"source":717,"pc":[3002]},{"teal":3043,"source":717,"pc":[3003]},{"teal":3044,"source":717,"pc":[3004,3005]},{"teal":3045,"source":717,"pc":[3006]},{"teal":3046,"source":717,"pc":[3007]},{"teal":3047,"source":717,"pc":[3008]},{"teal":3048,"source":717,"pc":[3009,3010]},{"teal":3049,"source":717,"pc":[3011,3012,3013]},{"teal":3050,"source":717,"pc":[3014]},{"teal":3051,"source":717,"pc":[3015]},{"teal":3052,"source":717,"pc":[3016]},{"teal":3053,"source":717,"pc":[3017,3018]},{"teal":3054,"source":717,"pc":[3019]},{"teal":3058,"source":718,"pc":[3020,3021]},{"teal":3059,"source":718,"pc":[3022]},{"teal":3060,"source":718,"pc":[3023]},{"teal":3061,"source":718,"pc":[3024]},{"teal":3062,"source":718,"pc":[3025,3026]},{"teal":3063,"source":718,"pc":[3027,3028,3029]},{"teal":3064,"source":718,"pc":[3030]},{"teal":3065,"source":718,"pc":[3031]},{"teal":3066,"source":718,"pc":[3032]},{"teal":3067,"source":718,"pc":[3033,3034]},{"teal":3068,"source":718,"pc":[3035]},{"teal":3069,"source":718,"pc":[3036]},{"teal":3070,"source":718,"pc":[3037,3038]},{"teal":3071,"source":718,"pc":[3039]},{"teal":3072,"source":718,"pc":[3040]},{"teal":3073,"source":718,"pc":[3041]},{"teal":3074,"source":718,"pc":[3042,3043]},{"teal":3075,"source":718,"pc":[3044,3045,3046]},{"teal":3076,"source":718,"pc":[3047]},{"teal":3077,"source":718,"pc":[3048]},{"teal":3078,"source":718,"pc":[3049]},{"teal":3079,"source":718,"pc":[3050,3051]},{"teal":3080,"source":718,"pc":[3052]},{"teal":3084,"source":719,"pc":[3053,3054]},{"teal":3085,"source":719,"pc":[3055]},{"teal":3086,"source":719,"pc":[3056,3057]},{"teal":3087,"source":719,"pc":[3058]},{"teal":3088,"source":719,"pc":[3059,3060]},{"teal":3089,"source":719,"pc":[3061]},{"teal":3090,"source":719,"pc":[3062]},{"teal":3095,"source":721,"pc":[3063,3064]},{"teal":3096,"source":721,"pc":[3065]},{"teal":3097,"source":721,"pc":[3066]},{"teal":3098,"source":721,"pc":[3067,3068,3069]},{"teal":3103,"source":722,"pc":[3070,3071]},{"teal":3104,"source":722,"pc":[3072]},{"teal":3105,"source":722,"pc":[3073]},{"teal":3106,"source":722,"pc":[3074,3075]},{"teal":3107,"source":722,"pc":[3076,3077,3078]},{"teal":3108,"source":722,"pc":[3079]},{"teal":3109,"source":722,"pc":[3080]},{"teal":3110,"source":722,"pc":[3081]},{"teal":3111,"source":722,"pc":[3082,3083]},{"teal":3112,"source":722,"pc":[3084]},{"teal":3113,"source":722,"pc":[3085]},{"teal":3114,"source":722,"pc":[3086,3087]},{"teal":3118,"source":723,"pc":[3088,3089]},{"teal":3119,"source":723,"pc":[3090]},{"teal":3120,"source":723,"pc":[3091]},{"teal":3123,"source":723,"errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[3092]},{"teal":3130,"source":725,"pc":[3093,3094]},{"teal":3131,"source":725,"pc":[3095]},{"teal":3132,"source":725,"pc":[3096]},{"teal":3133,"source":725,"pc":[3097,3098]},{"teal":3134,"source":725,"pc":[3099,3100,3101]},{"teal":3135,"source":725,"pc":[3102]},{"teal":3136,"source":725,"pc":[3103]},{"teal":3137,"source":725,"pc":[3104]},{"teal":3138,"source":725,"pc":[3105,3106]},{"teal":3139,"source":725,"pc":[3107]},{"teal":3140,"source":725,"pc":[3108]},{"teal":3141,"source":725,"pc":[3109,3110]},{"teal":3142,"source":725,"pc":[3111]},{"teal":3145,"source":724,"errorMessage":"reward being removed must be covered by hold back amount","pc":[3112]},{"teal":3149,"source":730,"pc":[3113,3114]},{"teal":3150,"source":730,"pc":[3115]},{"teal":3151,"source":730,"pc":[3116]},{"teal":3152,"source":730,"pc":[3117]},{"teal":3153,"source":730,"pc":[3118,3119]},{"teal":3154,"source":730,"pc":[3120,3121,3122]},{"teal":3155,"source":730,"pc":[3123]},{"teal":3156,"source":730,"pc":[3124]},{"teal":3157,"source":730,"pc":[3125]},{"teal":3158,"source":730,"pc":[3126,3127]},{"teal":3159,"source":730,"pc":[3128]},{"teal":3160,"source":730,"pc":[3129]},{"teal":3161,"source":730,"pc":[3130,3131]},{"teal":3162,"source":730,"pc":[3132]},{"teal":3163,"source":730,"pc":[3133]},{"teal":3164,"source":730,"pc":[3134]},{"teal":3165,"source":730,"pc":[3135,3136]},{"teal":3166,"source":730,"pc":[3137,3138,3139]},{"teal":3167,"source":730,"pc":[3140]},{"teal":3168,"source":730,"pc":[3141]},{"teal":3169,"source":730,"pc":[3142]},{"teal":3170,"source":730,"pc":[3143,3144]},{"teal":3171,"source":730,"pc":[3145]},{"teal":3176,"source":735,"pc":[3146,3147]},{"teal":3177,"source":735,"pc":[3148,3149,3150]},{"teal":3178,"source":735,"pc":[3151]},{"teal":3179,"source":735,"pc":[3152]},{"teal":3180,"source":735,"pc":[3153]},{"teal":3181,"source":735,"pc":[3154,3155,3156]},{"teal":3189,"source":736,"pc":[3157]},{"teal":3190,"source":736,"pc":[3158,3159]},{"teal":3191,"source":736,"pc":[3160,3161]},{"teal":3192,"source":736,"pc":[3162,3163]},{"teal":3193,"source":736,"pc":[3164,3165]},{"teal":3197,"source":737,"pc":[3166,3167]},{"teal":3198,"source":737,"pc":[3168]},{"teal":3199,"source":737,"pc":[3169]},{"teal":3200,"source":737,"pc":[3170,3171]},{"teal":3201,"source":737,"pc":[3172,3173,3174]},{"teal":3202,"source":737,"pc":[3175]},{"teal":3203,"source":737,"pc":[3176]},{"teal":3204,"source":737,"pc":[3177]},{"teal":3205,"source":737,"pc":[3178,3179]},{"teal":3206,"source":737,"pc":[3180]},{"teal":3207,"source":737,"pc":[3181]},{"teal":3208,"source":737,"pc":[3182,3183]},{"teal":3212,"source":738,"pc":[3184,3185]},{"teal":3213,"source":738,"pc":[3186,3187]},{"teal":3214,"source":738,"pc":[3188,3189]},{"teal":3215,"source":738,"pc":[3190]},{"teal":3216,"source":738,"pc":[3191,3192]},{"teal":3217,"source":738,"pc":[3193,3194]},{"teal":3218,"source":738,"pc":[3195]},{"teal":3219,"source":738,"pc":[3196,3197]},{"teal":3222,"source":736,"pc":[3198]},{"teal":3223,"source":736,"pc":[3199,3200]},{"teal":3226,"source":736,"pc":[3201]},{"teal":3239,"source":741,"pc":[3202,3203]},{"teal":3240,"source":742,"pc":[3204,3205]},{"teal":3241,"source":742,"pc":[3206,3207,3208]},{"teal":3242,"source":742,"pc":[3209]},{"teal":3243,"source":742,"pc":[3210]},{"teal":3244,"source":743,"pc":[3211,3212]},{"teal":3245,"source":743,"pc":[3213,3214,3215]},{"teal":3246,"source":743,"pc":[3216]},{"teal":3247,"source":743,"pc":[3217]},{"teal":3248,"source":743,"pc":[3218]},{"teal":3249,"source":743,"pc":[3219]},{"teal":3250,"source":743,"pc":[3220,3221]},{"teal":3251,"source":743,"pc":[3222]},{"teal":3254,"source":743,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3223]},{"teal":3255,"source":743,"pc":[3224,3225,3226]},{"teal":3256,"source":743,"pc":[3227]},{"teal":3257,"source":744,"pc":[3228,3229]},{"teal":3258,"source":744,"pc":[3230,3231,3232]},{"teal":3259,"source":744,"pc":[3233]},{"teal":3260,"source":744,"pc":[3234]},{"teal":3261,"source":744,"pc":[3235]},{"teal":3262,"source":745,"pc":[3236,3237]},{"teal":3263,"source":745,"pc":[3238]},{"teal":3264,"source":746,"pc":[3239,3240]},{"teal":3265,"source":746,"pc":[3241]},{"teal":3266,"source":746,"pc":[3242]},{"teal":3267,"source":748,"pc":[3243,3244]},{"teal":3268,"source":748,"pc":[3245]},{"teal":3269,"source":748,"pc":[3246]},{"teal":3270,"source":747,"pc":[3247,3248]},{"teal":3271,"source":747,"pc":[3249]},{"teal":3272,"source":747,"pc":[3250]},{"teal":3273,"source":741,"pc":[3251]},{"teal":3274,"source":741,"pc":[3252]},{"teal":3275,"source":721,"pc":[3253,3254,3255]},{"teal":3289,"source":751,"pc":[3256,3257]},{"teal":3290,"source":752,"pc":[3258,3259]},{"teal":3291,"source":752,"pc":[3260,3261,3262]},{"teal":3292,"source":752,"pc":[3263]},{"teal":3293,"source":752,"pc":[3264]},{"teal":3294,"source":753,"pc":[3265,3266]},{"teal":3295,"source":753,"pc":[3267,3268,3269]},{"teal":3296,"source":753,"pc":[3270]},{"teal":3297,"source":753,"pc":[3271]},{"teal":3298,"source":753,"pc":[3272]},{"teal":3299,"source":753,"pc":[3273]},{"teal":3300,"source":753,"pc":[3274,3275]},{"teal":3301,"source":753,"pc":[3276]},{"teal":3304,"source":753,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3277]},{"teal":3305,"source":753,"pc":[3278,3279,3280]},{"teal":3306,"source":753,"pc":[3281]},{"teal":3307,"source":754,"pc":[3282,3283]},{"teal":3308,"source":754,"pc":[3284,3285,3286]},{"teal":3309,"source":754,"pc":[3287]},{"teal":3310,"source":754,"pc":[3288]},{"teal":3311,"source":754,"pc":[3289]},{"teal":3312,"source":755,"pc":[3290,3291]},{"teal":3313,"source":755,"pc":[3292]},{"teal":3314,"source":756,"pc":[3293,3294]},{"teal":3315,"source":756,"pc":[3295]},{"teal":3316,"source":756,"pc":[3296]},{"teal":3317,"source":759,"pc":[3297,3298]},{"teal":3318,"source":759,"pc":[3299]},{"teal":3319,"source":758,"pc":[3300,3301]},{"teal":3320,"source":758,"pc":[3302]},{"teal":3321,"source":751,"pc":[3303]},{"teal":3322,"source":751,"pc":[3304]},{"teal":3328,"source":763,"pc":[3305,3306]},{"teal":3329,"source":763,"pc":[3307,3308,3309]},{"teal":3334,"source":765,"pc":[3310,3311]},{"teal":3335,"source":765,"pc":[3312,3313]},{"teal":3336,"source":765,"pc":[3314,3315,3316]},{"teal":3337,"source":765,"pc":[3317]},{"teal":3338,"source":765,"pc":[3318]},{"teal":3339,"source":765,"pc":[3319]},{"teal":3340,"source":765,"pc":[3320,3321]},{"teal":3341,"source":765,"pc":[3322]},{"teal":3342,"source":765,"pc":[3323]},{"teal":3343,"source":765,"pc":[3324]},{"teal":3344,"source":765,"pc":[3325]},{"teal":3345,"source":765,"pc":[3326,3327]},{"teal":3346,"source":765,"pc":[3328,3329]},{"teal":3347,"source":765,"pc":[3330,3331,3332]},{"teal":3348,"source":765,"pc":[3333]},{"teal":3349,"source":765,"pc":[3334]},{"teal":3350,"source":765,"pc":[3335]},{"teal":3351,"source":765,"pc":[3336,3337]},{"teal":3352,"source":765,"pc":[3338]},{"teal":3353,"source":765,"pc":[3339]},{"teal":3354,"source":765,"pc":[3340]},{"teal":3355,"source":765,"pc":[3341]},{"teal":3356,"source":765,"pc":[3342,3343]},{"teal":3357,"source":765,"pc":[3344]},{"teal":3358,"source":765,"pc":[3345,3346]},{"teal":3359,"source":765,"pc":[3347,3348,3349]},{"teal":3360,"source":765,"pc":[3350]},{"teal":3361,"source":765,"pc":[3351]},{"teal":3362,"source":765,"pc":[3352]},{"teal":3363,"source":765,"pc":[3353,3354]},{"teal":3364,"source":765,"pc":[3355]},{"teal":3365,"source":765,"pc":[3356]},{"teal":3366,"source":765,"pc":[3357]},{"teal":3367,"source":765,"pc":[3358]},{"teal":3368,"source":765,"pc":[3359]},{"teal":3369,"source":765,"pc":[3360,3361,3362]},{"teal":3370,"source":765,"pc":[3363]},{"teal":3371,"source":765,"pc":[3364,3365]},{"teal":3372,"source":765,"pc":[3366,3367,3368]},{"teal":3373,"source":765,"pc":[3369]},{"teal":3374,"source":765,"pc":[3370]},{"teal":3375,"source":765,"pc":[3371]},{"teal":3376,"source":765,"pc":[3372,3373]},{"teal":3377,"source":765,"pc":[3374]},{"teal":3385,"source":768,"pc":[3375,3376]},{"teal":3386,"source":768,"pc":[3377,3378,3379]},{"teal":3387,"source":768,"pc":[3380]},{"teal":3388,"source":768,"pc":[3381]},{"teal":3389,"source":769,"pc":[3382,3383]},{"teal":3390,"source":769,"pc":[3384,3385,3386]},{"teal":3391,"source":769,"pc":[3387]},{"teal":3392,"source":769,"pc":[3388]},{"teal":3393,"source":769,"pc":[3389]},{"teal":3394,"source":770,"pc":[3390,3391]},{"teal":3395,"source":770,"pc":[3392,3393,3394]},{"teal":3396,"source":770,"pc":[3395]},{"teal":3397,"source":770,"pc":[3396]},{"teal":3398,"source":770,"pc":[3397]},{"teal":3399,"source":767,"pc":[3398,3399]},{"teal":3400,"source":767,"pc":[3400,3401,3402]},{"teal":3401,"source":767,"pc":[3403,3404]},{"teal":3405,"source":772,"pc":[3405,3406]},{"teal":3406,"source":772,"pc":[3407,3408]},{"teal":3407,"source":772,"pc":[3409,3410]},{"teal":3408,"source":772,"pc":[3411]},{"teal":3409,"source":772,"pc":[3412]},{"teal":3410,"source":772,"pc":[3413,3414]},{"teal":3414,"source":773,"pc":[3415,3416]},{"teal":3415,"source":773,"pc":[3417,3418]},{"teal":3416,"source":773,"pc":[3419,3420]},{"teal":3417,"source":773,"pc":[3421]},{"teal":3418,"source":773,"pc":[3422]},{"teal":3419,"source":773,"pc":[3423,3424]},{"teal":3424,"source":775,"pc":[3425,3426]},{"teal":3425,"source":775,"pc":[3427,3428,3429]},{"teal":3430,"source":776,"pc":[3430,3431]},{"teal":3431,"source":776,"pc":[3432]},{"teal":3432,"source":776,"pc":[3433]},{"teal":3433,"source":776,"pc":[3434]},{"teal":3434,"source":776,"pc":[3435,3436]},{"teal":3435,"source":776,"pc":[3437,3438,3439]},{"teal":3436,"source":776,"pc":[3440]},{"teal":3437,"source":776,"pc":[3441]},{"teal":3438,"source":776,"pc":[3442]},{"teal":3439,"source":776,"pc":[3443,3444]},{"teal":3440,"source":776,"pc":[3445]},{"teal":3441,"source":776,"pc":[3446]},{"teal":3442,"source":776,"pc":[3447]},{"teal":3443,"source":776,"pc":[3448]},{"teal":3444,"source":776,"pc":[3449]},{"teal":3445,"source":776,"pc":[3450]},{"teal":3446,"source":776,"pc":[3451,3452]},{"teal":3447,"source":776,"pc":[3453,3454,3455]},{"teal":3448,"source":776,"pc":[3456]},{"teal":3449,"source":776,"pc":[3457]},{"teal":3450,"source":776,"pc":[3458]},{"teal":3451,"source":776,"pc":[3459,3460]},{"teal":3452,"source":776,"pc":[3461]},{"teal":3458,"source":779,"pc":[3462,3463]},{"teal":3459,"source":779,"pc":[3464,3465,3466]},{"teal":3464,"source":780,"pc":[3467,3468]},{"teal":3465,"source":780,"pc":[3469]},{"teal":3466,"source":780,"pc":[3470]},{"teal":3467,"source":780,"pc":[3471]},{"teal":3468,"source":780,"pc":[3472,3473]},{"teal":3469,"source":780,"pc":[3474]},{"teal":3470,"source":780,"pc":[3475]},{"teal":3475,"source":700,"pc":[3476]},{"teal":3480,"source":796,"pc":[3477]},{"teal":3483,"source":800,"pc":[3478,3479,3480]},{"teal":3484,"source":800,"pc":[3481]},{"teal":3487,"source":799,"pc":[3482,3483,3484]},{"teal":3488,"source":799,"pc":[3485]},{"teal":3489,"source":799,"pc":[3486]},{"teal":3490,"source":799,"pc":[3487,3488]},{"teal":3491,"source":799,"pc":[3489]},{"teal":3494,"source":799,"errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3490]},{"teal":3497,"source":798,"pc":[3491,3492,3493]},{"teal":3498,"source":798,"pc":[3494]},{"teal":3501,"source":796,"pc":[3495,3496,3497]},{"teal":3502,"source":796,"pc":[3498]},{"teal":3503,"source":796,"pc":[3499]},{"teal":3504,"source":796,"pc":[3500]},{"teal":3505,"source":796,"pc":[3501]},{"teal":3519,"source":796,"pc":[3502,3503,3504]},{"teal":3522,"source":796,"pc":[3505]},{"teal":3523,"source":796,"pc":[3506,3507]},{"teal":3527,"source":802,"pc":[3508]},{"teal":3528,"source":802,"pc":[3509,3510]},{"teal":3532,"source":803,"pc":[3511]},{"teal":3533,"source":803,"pc":[3512,3513]},{"teal":3537,"source":811,"pc":[3514,3515]},{"teal":3538,"source":811,"pc":[3516,3517,3518]},{"teal":3539,"source":811,"pc":[3519,3520]},{"teal":3544,"source":814,"pc":[3521]},{"teal":3545,"source":814,"pc":[3522,3523]},{"teal":3546,"source":814,"pc":[3524]},{"teal":3547,"source":814,"pc":[3525]},{"teal":3548,"source":814,"pc":[3526]},{"teal":3549,"source":814,"pc":[3527]},{"teal":3550,"source":814,"pc":[3528,3529,3530]},{"teal":3555,"source":815,"pc":[3531]},{"teal":3556,"source":815,"pc":[3532,3533]},{"teal":3557,"source":815,"pc":[3534]},{"teal":3558,"source":815,"pc":[3535]},{"teal":3561,"source":815,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3536]},{"teal":3562,"source":815,"pc":[3537,3538]},{"teal":3566,"source":816,"pc":[3539,3540]},{"teal":3567,"source":816,"pc":[3541]},{"teal":3568,"source":816,"pc":[3542]},{"teal":3569,"source":816,"pc":[3543]},{"teal":3573,"source":817,"pc":[3544]},{"teal":3574,"source":817,"pc":[3545,3546]},{"teal":3579,"source":817,"pc":[3547,3548]},{"teal":3580,"source":817,"pc":[3549,3550]},{"teal":3581,"source":817,"pc":[3551]},{"teal":3582,"source":817,"pc":[3552,3553,3554]},{"teal":3587,"source":818,"pc":[3555,3556]},{"teal":3588,"source":818,"pc":[3557,3558]},{"teal":3589,"source":818,"pc":[3559]},{"teal":3590,"source":818,"pc":[3560,3561,3562]},{"teal":3595,"source":819,"pc":[3563]},{"teal":3596,"source":819,"pc":[3564,3565]},{"teal":3597,"source":819,"pc":[3566,3567]},{"teal":3598,"source":819,"pc":[3568]},{"teal":3599,"source":819,"pc":[3569,3570]},{"teal":3600,"source":819,"pc":[3571,3572]},{"teal":3601,"source":819,"pc":[3573]},{"teal":3602,"source":819,"pc":[3574,3575]},{"teal":3603,"source":819,"pc":[3576,3577]},{"teal":3604,"source":819,"pc":[3578,3579]},{"teal":3605,"source":819,"pc":[3580,3581]},{"teal":3606,"source":819,"pc":[3582]},{"teal":3612,"source":821,"pc":[3583,3584]},{"teal":3613,"source":821,"pc":[3585,3586]},{"teal":3614,"source":821,"pc":[3587]},{"teal":3615,"source":821,"pc":[3588]},{"teal":3616,"source":821,"pc":[3589]},{"teal":3617,"source":821,"pc":[3590]},{"teal":3618,"source":821,"pc":[3591]},{"teal":3619,"source":821,"pc":[3592]},{"teal":3620,"source":821,"pc":[3593]},{"teal":3621,"source":821,"pc":[3594]},{"teal":3622,"source":821,"pc":[3595]},{"teal":3623,"source":821,"pc":[3596,3597,3598]},{"teal":3626,"source":822,"pc":[3599,3600,3601]},{"teal":3631,"source":824,"pc":[3602]},{"teal":3632,"source":824,"pc":[3603,3604]},{"teal":3637,"source":825,"pc":[3605,3606]},{"teal":3638,"source":825,"pc":[3607,3608]},{"teal":3639,"source":825,"pc":[3609]},{"teal":3640,"source":825,"pc":[3610]},{"teal":3641,"source":825,"pc":[3611]},{"teal":3642,"source":825,"pc":[3612]},{"teal":3643,"source":825,"pc":[3613]},{"teal":3644,"source":825,"pc":[3614]},{"teal":3645,"source":825,"pc":[3615]},{"teal":3646,"source":825,"pc":[3616,3617]},{"teal":3647,"source":825,"pc":[3618]},{"teal":3648,"source":825,"pc":[3619,3620,3621]},{"teal":3653,"source":827,"pc":[3622]},{"teal":3654,"source":827,"pc":[3623,3624]},{"teal":3661,"source":829,"pc":[3625,3626]},{"teal":3662,"source":829,"pc":[3627,3628]},{"teal":3663,"source":829,"pc":[3629,3630]},{"teal":3664,"source":829,"pc":[3631]},{"teal":3665,"source":829,"pc":[3632]},{"teal":3666,"source":829,"pc":[3633]},{"teal":3667,"source":829,"pc":[3634]},{"teal":3668,"source":829,"pc":[3635]},{"teal":3669,"source":829,"pc":[3636]},{"teal":3670,"source":829,"pc":[3637]},{"teal":3671,"source":829,"pc":[3638]},{"teal":3672,"source":829,"pc":[3639]},{"teal":3673,"source":829,"pc":[3640,3641]},{"teal":3674,"source":829,"pc":[3642]},{"teal":3675,"source":829,"pc":[3643]},{"teal":3676,"source":829,"pc":[3644,3645]},{"teal":3677,"source":829,"pc":[3646]},{"teal":3678,"source":829,"pc":[3647]},{"teal":3679,"source":829,"pc":[3648]},{"teal":3680,"source":829,"pc":[3649,3650]},{"teal":3681,"source":829,"pc":[3651]},{"teal":3682,"source":829,"pc":[3652]},{"teal":3683,"source":829,"pc":[3653,3654]},{"teal":3684,"source":829,"pc":[3655]},{"teal":3685,"source":829,"pc":[3656]},{"teal":3686,"source":830,"pc":[3657,3658]},{"teal":3687,"source":829,"pc":[3659]},{"teal":3688,"source":831,"pc":[3660,3661]},{"teal":3689,"source":830,"pc":[3662]},{"teal":3690,"source":828,"pc":[3663,3664,3665]},{"teal":3695,"source":833,"pc":[3666,3667]},{"teal":3696,"source":833,"pc":[3668,3669]},{"teal":3697,"source":833,"pc":[3670]},{"teal":3698,"source":833,"pc":[3671]},{"teal":3699,"source":833,"pc":[3672]},{"teal":3700,"source":833,"pc":[3673]},{"teal":3701,"source":833,"pc":[3674,3675]},{"teal":3702,"source":833,"pc":[3676]},{"teal":3703,"source":833,"pc":[3677,3678]},{"teal":3704,"source":833,"pc":[3679]},{"teal":3705,"source":833,"pc":[3680]},{"teal":3706,"source":833,"pc":[3681,3682]},{"teal":3707,"source":833,"pc":[3683]},{"teal":3708,"source":833,"pc":[3684]},{"teal":3709,"source":833,"pc":[3685,3686,3687]},{"teal":3718,"source":817,"pc":[3688,3689]},{"teal":3719,"source":817,"pc":[3690]},{"teal":3720,"source":817,"pc":[3691]},{"teal":3721,"source":817,"pc":[3692,3693]},{"teal":3722,"source":817,"pc":[3694,3695,3696]},{"teal":3732,"source":841,"pc":[3697,3698]},{"teal":3733,"source":841,"pc":[3699,3700]},{"teal":3734,"source":841,"pc":[3701]},{"teal":3735,"source":841,"pc":[3702]},{"teal":3736,"source":841,"pc":[3703,3704]},{"teal":3737,"source":841,"pc":[3705]},{"teal":3738,"source":841,"pc":[3706]},{"teal":3739,"source":841,"pc":[3707,3708]},{"teal":3740,"source":841,"pc":[3709]},{"teal":3741,"source":841,"pc":[3710]},{"teal":3742,"source":841,"pc":[3711]},{"teal":3745,"source":840,"errorMessage":"must stake at least the minimum for this pool","pc":[3712]},{"teal":3749,"source":846,"pc":[3713,3714]},{"teal":3750,"source":846,"pc":[3715,3716]},{"teal":3751,"source":846,"pc":[3717]},{"teal":3752,"source":846,"pc":[3718,3719]},{"teal":3753,"source":846,"pc":[3720]},{"teal":3754,"source":846,"pc":[3721]},{"teal":3755,"source":846,"pc":[3722,3723]},{"teal":3756,"source":846,"pc":[3724]},{"teal":3757,"source":846,"pc":[3725,3726]},{"teal":3761,"source":847,"pc":[3727,3728]},{"teal":3762,"source":847,"pc":[3729,3730]},{"teal":3763,"source":847,"pc":[3731]},{"teal":3764,"source":847,"pc":[3732,3733]},{"teal":3765,"source":847,"pc":[3734]},{"teal":3766,"source":847,"pc":[3735]},{"teal":3767,"source":847,"pc":[3736,3737]},{"teal":3768,"source":847,"pc":[3738]},{"teal":3769,"source":847,"pc":[3739]},{"teal":3770,"source":847,"pc":[3740,3741]},{"teal":3774,"source":848,"pc":[3742]},{"teal":3775,"source":848,"pc":[3743,3744]},{"teal":3780,"source":848,"pc":[3745,3746]},{"teal":3781,"source":848,"pc":[3747,3748]},{"teal":3782,"source":848,"pc":[3749]},{"teal":3783,"source":848,"pc":[3750,3751,3752]},{"teal":3788,"source":849,"pc":[3753,3754]},{"teal":3789,"source":849,"pc":[3755,3756]},{"teal":3790,"source":849,"pc":[3757,3758]},{"teal":3791,"source":849,"pc":[3759]},{"teal":3792,"source":849,"pc":[3760,3761]},{"teal":3793,"source":849,"pc":[3762]},{"teal":3794,"source":849,"pc":[3763]},{"teal":3795,"source":849,"pc":[3764]},{"teal":3796,"source":849,"pc":[3765]},{"teal":3797,"source":849,"pc":[3766,3767]},{"teal":3798,"source":849,"pc":[3768]},{"teal":3799,"source":849,"pc":[3769,3770]},{"teal":3800,"source":849,"pc":[3771]},{"teal":3801,"source":849,"pc":[3772,3773,3774]},{"teal":3810,"source":851,"pc":[3775,3776]},{"teal":3811,"source":851,"pc":[3777]},{"teal":3812,"source":851,"pc":[3778,3779]},{"teal":3813,"source":851,"pc":[3780]},{"teal":3814,"source":851,"pc":[3781]},{"teal":3815,"source":851,"pc":[3782]},{"teal":3816,"source":851,"pc":[3783]},{"teal":3817,"source":851,"pc":[3784,3785]},{"teal":3818,"source":851,"pc":[3786,3787]},{"teal":3819,"source":851,"pc":[3788,3789]},{"teal":3820,"source":851,"pc":[3790]},{"teal":3821,"source":851,"pc":[3791]},{"teal":3822,"source":851,"pc":[3792]},{"teal":3823,"source":851,"pc":[3793]},{"teal":3824,"source":851,"pc":[3794]},{"teal":3825,"source":851,"pc":[3795]},{"teal":3826,"source":851,"pc":[3796]},{"teal":3827,"source":851,"pc":[3797]},{"teal":3828,"source":852,"pc":[3798,3799]},{"teal":3829,"source":852,"pc":[3800]},{"teal":3830,"source":852,"pc":[3801,3802]},{"teal":3831,"source":852,"pc":[3803]},{"teal":3832,"source":853,"pc":[3804]},{"teal":3833,"source":853,"pc":[3805,3806]},{"teal":3834,"source":853,"pc":[3807]},{"teal":3835,"source":850,"pc":[3808]},{"teal":3836,"source":850,"pc":[3809,3810,3811]},{"teal":3843,"source":848,"pc":[3812,3813]},{"teal":3844,"source":848,"pc":[3814]},{"teal":3845,"source":848,"pc":[3815]},{"teal":3846,"source":848,"pc":[3816,3817]},{"teal":3847,"source":848,"pc":[3818,3819,3820]},{"teal":3852,"source":858,"pc":[3821,3822]},{"teal":3853,"source":858,"pc":[3823]},{"teal":3854,"source":858,"pc":[3824,3825]},{"teal":3855,"source":858,"pc":[3826]},{"teal":3856,"source":858,"pc":[3827,3828]},{"teal":3857,"source":858,"pc":[3829]},{"teal":3858,"source":858,"pc":[3830,3831]},{"teal":3859,"source":858,"pc":[3832]},{"teal":3860,"source":858,"pc":[3833,3834]},{"teal":3861,"source":858,"pc":[3835]},{"teal":3862,"source":858,"pc":[3836]},{"teal":3863,"source":858,"pc":[3837,3838]},{"teal":3864,"source":858,"pc":[3839]},{"teal":3865,"source":858,"pc":[3840]},{"teal":3869,"source":796,"pc":[3841,3842]},{"teal":3872,"source":796,"pc":[3843,3844]},{"teal":3873,"source":796,"pc":[3845]},{"teal":3878,"source":872,"pc":[3846,3847,3848]},{"teal":3879,"source":872,"pc":[3849]},{"teal":3882,"source":872,"pc":[3850,3851,3852]},{"teal":3883,"source":872,"pc":[3853]},{"teal":3886,"source":872,"pc":[3854,3855,3856]},{"teal":3887,"source":872,"pc":[3857]},{"teal":3890,"source":872,"pc":[3858,3859,3860]},{"teal":3891,"source":872,"pc":[3861]},{"teal":3892,"source":872,"pc":[3862]},{"teal":3906,"source":872,"pc":[3863,3864,3865]},{"teal":3909,"source":872,"pc":[3866]},{"teal":3910,"source":872,"pc":[3867,3868]},{"teal":3914,"source":873,"pc":[3869,3870]},{"teal":3915,"source":873,"pc":[3871,3872,3873]},{"teal":3919,"source":875,"pc":[3874,3875]},{"teal":3920,"source":875,"pc":[3876,3877]},{"teal":3921,"source":875,"pc":[3878]},{"teal":3922,"source":875,"pc":[3879,3880]},{"teal":3923,"source":875,"pc":[3881]},{"teal":3924,"source":875,"pc":[3882]},{"teal":3925,"source":875,"pc":[3883,3884]},{"teal":3926,"source":875,"pc":[3885]},{"teal":3927,"source":875,"pc":[3886,3887]},{"teal":3931,"source":876,"pc":[3888,3889]},{"teal":3932,"source":876,"pc":[3890]},{"teal":3933,"source":876,"pc":[3891]},{"teal":3934,"source":876,"pc":[3892]},{"teal":3935,"source":876,"pc":[3893,3894,3895]},{"teal":3936,"source":876,"pc":[3896,3897]},{"teal":3937,"source":876,"pc":[3898]},{"teal":3938,"source":876,"pc":[3899]},{"teal":3939,"source":876,"pc":[3900]},{"teal":3943,"source":876,"errorMessage":"node number out of allowable range","pc":[3901]},{"teal":3947,"source":878,"pc":[3902]},{"teal":3948,"source":878,"pc":[3903,3904]},{"teal":3953,"source":878,"pc":[3905,3906]},{"teal":3954,"source":878,"pc":[3907]},{"teal":3955,"source":878,"pc":[3908]},{"teal":3956,"source":878,"pc":[3909,3910,3911]},{"teal":3960,"source":879,"pc":[3912]},{"teal":3961,"source":879,"pc":[3913,3914]},{"teal":3966,"source":879,"pc":[3915,3916]},{"teal":3967,"source":879,"pc":[3917,3918]},{"teal":3968,"source":879,"pc":[3919]},{"teal":3969,"source":879,"pc":[3920,3921,3922]},{"teal":3974,"source":880,"pc":[3923,3924]},{"teal":3975,"source":880,"pc":[3925]},{"teal":3976,"source":880,"pc":[3926,3927]},{"teal":3977,"source":880,"pc":[3928]},{"teal":3978,"source":880,"pc":[3929]},{"teal":3979,"source":880,"pc":[3930]},{"teal":3980,"source":880,"pc":[3931]},{"teal":3981,"source":880,"pc":[3932]},{"teal":3982,"source":880,"pc":[3933,3934]},{"teal":3983,"source":880,"pc":[3935]},{"teal":3984,"source":880,"pc":[3936]},{"teal":3985,"source":880,"pc":[3937]},{"teal":3986,"source":880,"pc":[3938]},{"teal":3987,"source":880,"pc":[3939]},{"teal":3988,"source":880,"pc":[3940]},{"teal":3989,"source":880,"pc":[3941,3942]},{"teal":3990,"source":880,"pc":[3943]},{"teal":3991,"source":880,"pc":[3944,3945,3946]},{"teal":3996,"source":881,"pc":[3947,3948]},{"teal":3997,"source":881,"pc":[3949]},{"teal":3998,"source":881,"pc":[3950]},{"teal":3999,"source":881,"pc":[3951,3952]},{"teal":4000,"source":881,"pc":[3953]},{"teal":4003,"source":881,"errorMessage":"can't move to same node","pc":[3954]},{"teal":4007,"source":883,"pc":[3955,3956]},{"teal":4008,"source":883,"pc":[3957,3958]},{"teal":4009,"source":883,"pc":[3959]},{"teal":4010,"source":883,"pc":[3960]},{"teal":4011,"source":883,"pc":[3961]},{"teal":4012,"source":883,"pc":[3962]},{"teal":4013,"source":883,"pc":[3963]},{"teal":4014,"source":883,"pc":[3964,3965]},{"teal":4015,"source":883,"pc":[3966]},{"teal":4016,"source":883,"pc":[3967]},{"teal":4017,"source":883,"pc":[3968]},{"teal":4018,"source":883,"pc":[3969,3970]},{"teal":4019,"source":883,"pc":[3971]},{"teal":4020,"source":883,"pc":[3972,3973]},{"teal":4021,"source":883,"pc":[3974]},{"teal":4022,"source":883,"pc":[3975]},{"teal":4023,"source":883,"pc":[3976,3977]},{"teal":4024,"source":883,"pc":[3978]},{"teal":4030,"source":886,"pc":[3979]},{"teal":4031,"source":886,"pc":[3980,3981]},{"teal":4032,"source":886,"pc":[3982,3983]},{"teal":4033,"source":886,"pc":[3984,3985,3986,3987,3988,3989]},{"teal":4034,"source":886,"pc":[3990,3991]},{"teal":4038,"source":887,"pc":[3992,3993]},{"teal":4039,"source":887,"pc":[3994,3995]},{"teal":4042,"source":886,"pc":[3996]},{"teal":4043,"source":886,"pc":[3997,3998]},{"teal":4046,"source":886,"pc":[3999]},{"teal":4050,"source":891,"pc":[4000,4001]},{"teal":4051,"source":891,"pc":[4002,4003]},{"teal":4052,"source":891,"pc":[4004,4005]},{"teal":4053,"source":891,"pc":[4006,4007,4008]},{"teal":4057,"source":892,"pc":[4009]},{"teal":4064,"source":879,"pc":[4010,4011]},{"teal":4065,"source":879,"pc":[4012]},{"teal":4066,"source":879,"pc":[4013]},{"teal":4067,"source":879,"pc":[4014,4015]},{"teal":4068,"source":879,"pc":[4016,4017,4018]},{"teal":4075,"source":878,"pc":[4019,4020]},{"teal":4076,"source":878,"pc":[4021]},{"teal":4077,"source":878,"pc":[4022]},{"teal":4078,"source":878,"pc":[4023,4024]},{"teal":4079,"source":878,"pc":[4025,4026,4027]},{"teal":4083,"source":896,"errorMessage":"couldn't find pool app id in nodes to move","pc":[4028]},{"teal":4084,"source":872,"pc":[4029]},{"teal":4089,"source":910,"pc":[4030]},{"teal":4092,"source":910,"pc":[4031,4032,4033]},{"teal":4093,"source":910,"pc":[4034]},{"teal":4094,"source":910,"pc":[4035]},{"teal":4095,"source":910,"pc":[4036,4037]},{"teal":4096,"source":910,"pc":[4038]},{"teal":4099,"source":910,"errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[4039]},{"teal":4102,"source":910,"pc":[4040,4041,4042]},{"teal":4103,"source":910,"pc":[4043]},{"teal":4106,"source":910,"pc":[4044,4045,4046]},{"teal":4107,"source":910,"pc":[4047]},{"teal":4108,"source":910,"pc":[4048]},{"teal":4109,"source":910,"pc":[4049]},{"teal":4110,"source":910,"pc":[4050]},{"teal":4111,"source":910,"pc":[4051]},{"teal":4125,"source":910,"pc":[4052,4053,4054]},{"teal":4128,"source":910,"pc":[4055]},{"teal":4129,"source":910,"pc":[4056,4057]},{"teal":4133,"source":911,"pc":[4058,4059]},{"teal":4134,"source":911,"pc":[4060,4061,4062]},{"teal":4138,"source":912,"pc":[4063,4064]},{"teal":4139,"source":912,"pc":[4065]},{"teal":4140,"source":912,"pc":[4066]},{"teal":4141,"source":912,"pc":[4067,4068]},{"teal":4142,"source":912,"pc":[4069]},{"teal":4143,"source":912,"pc":[4070]},{"teal":4144,"source":912,"pc":[4071,4072]},{"teal":4145,"source":912,"pc":[4073]},{"teal":4146,"source":912,"pc":[4074]},{"teal":4147,"source":912,"pc":[4075,4076]},{"teal":4151,"source":913,"pc":[4077,4078]},{"teal":4152,"source":913,"pc":[4079]},{"teal":4153,"source":913,"pc":[4080]},{"teal":4154,"source":913,"pc":[4081,4082]},{"teal":4155,"source":913,"pc":[4083]},{"teal":4156,"source":913,"pc":[4084]},{"teal":4157,"source":913,"pc":[4085,4086]},{"teal":4158,"source":913,"pc":[4087]},{"teal":4159,"source":913,"pc":[4088]},{"teal":4160,"source":913,"pc":[4089,4090]},{"teal":4164,"source":914,"pc":[4091,4092]},{"teal":4165,"source":914,"pc":[4093]},{"teal":4166,"source":914,"pc":[4094]},{"teal":4169,"source":914,"errorMessage":"this validator doesn't have a reward token defined","pc":[4095]},{"teal":4173,"source":915,"pc":[4096,4097]},{"teal":4174,"source":915,"pc":[4098]},{"teal":4175,"source":915,"pc":[4099]},{"teal":4176,"source":915,"pc":[4100,4101]},{"teal":4177,"source":915,"pc":[4102]},{"teal":4178,"source":915,"pc":[4103]},{"teal":4179,"source":915,"pc":[4104,4105]},{"teal":4180,"source":915,"pc":[4106]},{"teal":4181,"source":915,"pc":[4107]},{"teal":4182,"source":915,"pc":[4108,4109]},{"teal":4187,"source":918,"pc":[4110,4111]},{"teal":4188,"source":918,"pc":[4112,4113]},{"teal":4189,"source":918,"pc":[4114]},{"teal":4190,"source":918,"pc":[4115,4116]},{"teal":4191,"source":918,"pc":[4117,4118]},{"teal":4192,"source":918,"pc":[4119]},{"teal":4193,"source":918,"pc":[4120,4121]},{"teal":4194,"source":918,"pc":[4122]},{"teal":4195,"source":917,"pc":[4123,4124]},{"teal":4202,"source":921,"pc":[4125]},{"teal":4203,"source":921,"pc":[4126,4127]},{"teal":4204,"source":921,"pc":[4128,4129]},{"teal":4205,"source":921,"pc":[4130,4131]},{"teal":4206,"source":921,"pc":[4132,4133]},{"teal":4210,"source":922,"pc":[4134,4135]},{"teal":4211,"source":922,"pc":[4136,4137]},{"teal":4215,"source":923,"pc":[4138,4139]},{"teal":4216,"source":923,"pc":[4140,4141]},{"teal":4217,"source":923,"pc":[4142,4143]},{"teal":4218,"source":923,"pc":[4144]},{"teal":4219,"source":923,"pc":[4145,4146]},{"teal":4220,"source":923,"pc":[4147,4148]},{"teal":4221,"source":923,"pc":[4149]},{"teal":4222,"source":923,"pc":[4150,4151]},{"teal":4225,"source":921,"pc":[4152]},{"teal":4226,"source":921,"pc":[4153,4154]},{"teal":4229,"source":921,"pc":[4155]},{"teal":4236,"source":926,"pc":[4156,4157]},{"teal":4237,"source":926,"pc":[4158,4159]},{"teal":4238,"source":926,"pc":[4160]},{"teal":4239,"source":926,"pc":[4161,4162]},{"teal":4240,"source":926,"pc":[4163,4164]},{"teal":4241,"source":926,"pc":[4165]},{"teal":4242,"source":926,"pc":[4166,4167]},{"teal":4243,"source":926,"pc":[4168]},{"teal":4246,"source":925,"errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[4169]},{"teal":4250,"source":929,"pc":[4170,4171]},{"teal":4253,"source":910,"pc":[4172,4173]},{"teal":4256,"source":910,"pc":[4174,4175]},{"teal":4257,"source":910,"pc":[4176]},{"teal":4261,"source":1021,"pc":[4177,4178,4179]},{"teal":4268,"source":1023,"pc":[4180,4181]},{"teal":4269,"source":1023,"pc":[4182]},{"teal":4270,"source":1023,"pc":[4183,4184]},{"teal":4271,"source":1023,"pc":[4185]},{"teal":4272,"source":1023,"pc":[4186,4187]},{"teal":4273,"source":1023,"pc":[4188]},{"teal":4274,"source":1023,"pc":[4189]},{"teal":4275,"source":1023,"pc":[4190,4191]},{"teal":4276,"source":1023,"pc":[4192]},{"teal":4277,"source":1023,"pc":[4193]},{"teal":4280,"source":1022,"errorMessage":"can only be called by validator owner","pc":[4194]},{"teal":4281,"source":1021,"pc":[4195]},{"teal":4285,"source":1028,"pc":[4196,4197,4198]},{"teal":4293,"source":1030,"pc":[4199,4200]},{"teal":4294,"source":1030,"pc":[4201]},{"teal":4295,"source":1030,"pc":[4202,4203]},{"teal":4296,"source":1030,"pc":[4204]},{"teal":4297,"source":1030,"pc":[4205,4206]},{"teal":4298,"source":1030,"pc":[4207]},{"teal":4299,"source":1030,"pc":[4208]},{"teal":4300,"source":1030,"pc":[4209,4210]},{"teal":4301,"source":1030,"pc":[4211]},{"teal":4302,"source":1030,"pc":[4212]},{"teal":4303,"source":1030,"pc":[4213]},{"teal":4304,"source":1030,"pc":[4214,4215,4216]},{"teal":4305,"source":1031,"pc":[4217,4218]},{"teal":4306,"source":1031,"pc":[4219,4220]},{"teal":4307,"source":1031,"pc":[4221,4222]},{"teal":4308,"source":1031,"pc":[4223]},{"teal":4309,"source":1031,"pc":[4224,4225]},{"teal":4310,"source":1031,"pc":[4226]},{"teal":4311,"source":1031,"pc":[4227]},{"teal":4312,"source":1031,"pc":[4228,4229]},{"teal":4313,"source":1031,"pc":[4230]},{"teal":4314,"source":1031,"pc":[4231]},{"teal":4315,"source":1030,"pc":[4232]},{"teal":4319,"source":1029,"errorMessage":"can only be called by owner or manager of validator","pc":[4233]},{"teal":4320,"source":1028,"pc":[4234]},{"teal":4328,"source":1041,"pc":[4235,4236,4237]},{"teal":4332,"source":1042,"pc":[4238]},{"teal":4333,"source":1042,"pc":[4239,4240]},{"teal":4334,"source":1042,"pc":[4241,4242,4243]},{"teal":4335,"source":1042,"pc":[4244]},{"teal":4336,"source":1042,"pc":[4245]},{"teal":4337,"source":1042,"pc":[4246]},{"teal":4338,"source":1042,"pc":[4247]},{"teal":4339,"source":1042,"pc":[4248]},{"teal":4340,"source":1042,"pc":[4249]},{"teal":4343,"source":1042,"errorMessage":"the specified validator id isn't valid","pc":[4250]},{"teal":4347,"source":1043,"pc":[4251,4252]},{"teal":4348,"source":1043,"pc":[4253,4254,4255]},{"teal":4349,"source":1043,"pc":[4256]},{"teal":4350,"source":58,"pc":[4257]},{"teal":4351,"source":1043,"pc":[4258]},{"teal":4354,"source":1043,"errorMessage":"pool id not in valid range","pc":[4259]},{"teal":4361,"source":1045,"pc":[4260,4261]},{"teal":4362,"source":1045,"pc":[4262,4263,4264]},{"teal":4363,"source":1045,"pc":[4265]},{"teal":4364,"source":1045,"pc":[4266]},{"teal":4365,"source":1045,"pc":[4267]},{"teal":4366,"source":1045,"pc":[4268]},{"teal":4367,"source":1045,"pc":[4269,4270,4271]},{"teal":4368,"source":1045,"pc":[4272,4273]},{"teal":4369,"source":1045,"pc":[4274,4275,4276]},{"teal":4370,"source":1045,"pc":[4277]},{"teal":4371,"source":1045,"pc":[4278,4279]},{"teal":4372,"source":1045,"pc":[4280,4281]},{"teal":4373,"source":1045,"pc":[4282]},{"teal":4374,"source":1045,"pc":[4283,4284]},{"teal":4375,"source":1045,"pc":[4285,4286,4287]},{"teal":4376,"source":1045,"pc":[4288]},{"teal":4377,"source":1045,"pc":[4289]},{"teal":4378,"source":1045,"pc":[4290]},{"teal":4379,"source":1045,"pc":[4291,4292]},{"teal":4380,"source":1045,"pc":[4293]},{"teal":4381,"source":1045,"pc":[4294]},{"teal":4382,"source":1045,"pc":[4295]},{"teal":4383,"source":1045,"pc":[4296]},{"teal":4387,"source":1044,"errorMessage":"pool id outside of range of pools created for this validator","pc":[4297]},{"teal":4394,"source":1051,"pc":[4298,4299]},{"teal":4395,"source":1051,"pc":[4300,4301,4302]},{"teal":4396,"source":1051,"pc":[4303]},{"teal":4397,"source":1051,"pc":[4304,4305]},{"teal":4398,"source":1051,"pc":[4306,4307]},{"teal":4399,"source":1051,"pc":[4308,4309,4310]},{"teal":4400,"source":1051,"pc":[4311]},{"teal":4401,"source":1051,"pc":[4312]},{"teal":4402,"source":1051,"pc":[4313]},{"teal":4403,"source":1051,"pc":[4314,4315]},{"teal":4404,"source":1051,"pc":[4316]},{"teal":4405,"source":1051,"pc":[4317]},{"teal":4406,"source":1051,"pc":[4318]},{"teal":4407,"source":1051,"pc":[4319]},{"teal":4408,"source":1051,"pc":[4320]},{"teal":4409,"source":1051,"pc":[4321]},{"teal":4410,"source":1051,"pc":[4322,4323]},{"teal":4411,"source":1051,"pc":[4324,4325,4326]},{"teal":4412,"source":1051,"pc":[4327]},{"teal":4413,"source":1051,"pc":[4328]},{"teal":4414,"source":1051,"pc":[4329]},{"teal":4415,"source":1051,"pc":[4330,4331]},{"teal":4416,"source":1051,"pc":[4332]},{"teal":4417,"source":1051,"pc":[4333]},{"teal":4418,"source":1051,"pc":[4334]},{"teal":4421,"source":1050,"errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4335]},{"teal":4425,"source":1055,"pc":[4336,4337]},{"teal":4426,"source":1055,"pc":[4338,4339]},{"teal":4427,"source":1055,"pc":[4340,4341,4342]},{"teal":4428,"source":1055,"pc":[4343]},{"teal":4429,"source":1055,"pc":[4344,4345]},{"teal":4430,"source":1055,"pc":[4346]},{"teal":4431,"source":1055,"pc":[4347]},{"teal":4432,"source":1055,"pc":[4348]},{"teal":4436,"source":1057,"pc":[4349,4350]},{"teal":4437,"source":1057,"pc":[4351,4352,4353]},{"teal":4438,"source":1057,"pc":[4354]},{"teal":4439,"source":1057,"pc":[4355,4356]},{"teal":4440,"source":1057,"pc":[4357,4358,4359]},{"teal":4441,"source":1057,"pc":[4360]},{"teal":4442,"source":1057,"pc":[4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373]},{"teal":4443,"source":1057,"pc":[4374]},{"teal":4446,"source":1057,"errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4375]},{"teal":4447,"source":1057,"pc":[4376]},{"teal":4448,"source":1057,"pc":[4377]},{"teal":4452,"source":1058,"pc":[4378,4379]},{"teal":4453,"source":1058,"pc":[4380,4381,4382]},{"teal":4454,"source":1058,"pc":[4383]},{"teal":4455,"source":1058,"pc":[4384,4385]},{"teal":4456,"source":1058,"pc":[4386,4387,4388]},{"teal":4457,"source":1058,"pc":[4389]},{"teal":4458,"source":1058,"pc":[4390,4391,4392,4393,4394,4395,4396,4397]},{"teal":4459,"source":1058,"pc":[4398]},{"teal":4462,"source":1058,"errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4399]},{"teal":4463,"source":1058,"pc":[4400]},{"teal":4464,"source":1058,"pc":[4401]},{"teal":4465,"source":1041,"pc":[4402]},{"teal":4474,"source":1067,"pc":[4403,4404,4405]},{"teal":4477,"source":1067,"pc":[4406]},{"teal":4478,"source":1067,"pc":[4407]},{"teal":4482,"source":1068,"pc":[4408]},{"teal":4483,"source":1068,"pc":[4409,4410]},{"teal":4484,"source":1068,"pc":[4411]},{"teal":4485,"source":1068,"pc":[4412]},{"teal":4486,"source":1068,"pc":[4413,4414]},{"teal":4491,"source":1069,"pc":[4415,4416]},{"teal":4492,"source":1069,"pc":[4417]},{"teal":4493,"source":1068,"pc":[4418]},{"teal":4494,"source":1068,"pc":[4419,4420]},{"teal":4495,"source":1068,"pc":[4421]},{"teal":4496,"source":1068,"pc":[4422]},{"teal":4497,"source":1068,"pc":[4423,4424]},{"teal":4498,"source":1068,"pc":[4425]},{"teal":4499,"source":1069,"pc":[4426]},{"teal":4500,"source":1069,"pc":[4427]},{"teal":4501,"source":1069,"pc":[4428]},{"teal":4502,"source":1069,"pc":[4429,4430,4431]},{"teal":4507,"source":1072,"pc":[4432,4433]},{"teal":4508,"source":1072,"pc":[4434]},{"teal":4509,"source":1068,"pc":[4435]},{"teal":4510,"source":1068,"pc":[4436,4437]},{"teal":4511,"source":1068,"pc":[4438]},{"teal":4512,"source":1068,"pc":[4439]},{"teal":4513,"source":1068,"pc":[4440,4441]},{"teal":4514,"source":1068,"pc":[4442]},{"teal":4515,"source":1072,"pc":[4443]},{"teal":4516,"source":1072,"pc":[4444,4445]},{"teal":4517,"source":1072,"pc":[4446]},{"teal":4520,"source":1072,"errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4447]},{"teal":4521,"source":1072,"pc":[4448,4449]},{"teal":4526,"source":1074,"pc":[4450]},{"teal":4527,"source":1074,"pc":[4451,4452]},{"teal":4528,"source":1068,"pc":[4453]},{"teal":4529,"source":1068,"pc":[4454,4455]},{"teal":4530,"source":1068,"pc":[4456]},{"teal":4531,"source":1068,"pc":[4457]},{"teal":4532,"source":1068,"pc":[4458,4459]},{"teal":4533,"source":1068,"pc":[4460]},{"teal":4534,"source":1074,"pc":[4461,4462]},{"teal":4535,"source":1074,"pc":[4463]},{"teal":4536,"source":1074,"pc":[4464]},{"teal":4537,"source":1074,"pc":[4465,4466,4467]},{"teal":4538,"source":1074,"pc":[4468,4469]},{"teal":4539,"source":1074,"pc":[4470,4471]},{"teal":4540,"source":1068,"pc":[4472]},{"teal":4541,"source":1068,"pc":[4473,4474]},{"teal":4542,"source":1068,"pc":[4475]},{"teal":4543,"source":1068,"pc":[4476]},{"teal":4544,"source":1068,"pc":[4477,4478]},{"teal":4545,"source":1068,"pc":[4479]},{"teal":4546,"source":1074,"pc":[4480,4481]},{"teal":4547,"source":1074,"pc":[4482]},{"teal":4548,"source":1074,"pc":[4483]},{"teal":4551,"source":1074,"pc":[4484,4485,4486]},{"teal":4556,"source":1076,"pc":[4487,4488]},{"teal":4557,"source":1076,"pc":[4489,4490]},{"teal":4558,"source":1076,"pc":[4491]},{"teal":4559,"source":1076,"pc":[4492,4493]},{"teal":4560,"source":1076,"pc":[4494]},{"teal":4561,"source":1076,"pc":[4495]},{"teal":4562,"source":1076,"pc":[4496,4497]},{"teal":4563,"source":1076,"pc":[4498]},{"teal":4568,"source":1067,"pc":[4499]},{"teal":4572,"source":1081,"pc":[4500,4501,4502]},{"teal":4576,"source":1083,"pc":[4503,4504]},{"teal":4577,"source":1083,"pc":[4505,4506,4507]},{"teal":4578,"source":1083,"pc":[4508,4509]},{"teal":4579,"source":1083,"pc":[4510]},{"teal":4580,"source":1083,"pc":[4511]},{"teal":4584,"source":1084,"pc":[4512,4513]},{"teal":4585,"source":1084,"pc":[4514,4515,4516]},{"teal":4586,"source":1084,"pc":[4517,4518]},{"teal":4587,"source":1084,"pc":[4519]},{"teal":4588,"source":1084,"pc":[4520]},{"teal":4592,"source":1085,"pc":[4521,4522]},{"teal":4593,"source":1085,"pc":[4523,4524]},{"teal":4594,"source":1085,"pc":[4525,4526,4527]},{"teal":4595,"source":1085,"pc":[4528]},{"teal":4598,"source":1085,"errorMessage":"sender must be owner to add new validator","pc":[4529]},{"teal":4605,"source":1088,"pc":[4530,4531]},{"teal":4606,"source":1088,"pc":[4532,4533,4534]},{"teal":4607,"source":1088,"pc":[4535]},{"teal":4608,"source":1088,"pc":[4536]},{"teal":4609,"source":1088,"pc":[4537]},{"teal":4610,"source":1088,"pc":[4538]},{"teal":4611,"source":1088,"pc":[4539,4540,4541]},{"teal":4612,"source":1088,"pc":[4542,4543]},{"teal":4613,"source":1088,"pc":[4544,4545,4546]},{"teal":4614,"source":1088,"pc":[4547]},{"teal":4615,"source":1088,"pc":[4548,4549]},{"teal":4616,"source":1088,"pc":[4550]},{"teal":4617,"source":1088,"pc":[4551]},{"teal":4621,"source":1087,"errorMessage":"gating type not valid","pc":[4552]},{"teal":4628,"source":1092,"pc":[4553,4554]},{"teal":4629,"source":1092,"pc":[4555,4556,4557]},{"teal":4630,"source":1092,"pc":[4558]},{"teal":4631,"source":1092,"pc":[4559]},{"teal":4632,"source":1092,"pc":[4560]},{"teal":4633,"source":1092,"pc":[4561]},{"teal":4634,"source":1092,"pc":[4562,4563,4564]},{"teal":4635,"source":1092,"pc":[4565,4566]},{"teal":4636,"source":1092,"pc":[4567,4568,4569]},{"teal":4637,"source":1092,"pc":[4570]},{"teal":4638,"source":1092,"pc":[4571,4572]},{"teal":4639,"source":1092,"pc":[4573]},{"teal":4640,"source":1092,"pc":[4574]},{"teal":4644,"source":1091,"errorMessage":"epoch length not in allowable range","pc":[4575]},{"teal":4651,"source":1096,"pc":[4576,4577]},{"teal":4652,"source":1096,"pc":[4578,4579,4580]},{"teal":4653,"source":1096,"pc":[4581]},{"teal":4654,"source":1096,"pc":[4582]},{"teal":4655,"source":1096,"pc":[4583]},{"teal":4656,"source":1096,"pc":[4584]},{"teal":4657,"source":1096,"pc":[4585,4586,4587]},{"teal":4658,"source":1096,"pc":[4588,4589]},{"teal":4659,"source":1096,"pc":[4590,4591,4592]},{"teal":4660,"source":1096,"pc":[4593]},{"teal":4661,"source":1096,"pc":[4594,4595]},{"teal":4662,"source":1096,"pc":[4596]},{"teal":4663,"source":1096,"pc":[4597]},{"teal":4667,"source":1095,"errorMessage":"commission percentage not valid","pc":[4598]},{"teal":4672,"source":1099,"pc":[4599,4600]},{"teal":4673,"source":1099,"pc":[4601,4602,4603]},{"teal":4674,"source":1099,"pc":[4604]},{"teal":4675,"source":1099,"pc":[4605]},{"teal":4676,"source":1099,"pc":[4606]},{"teal":4677,"source":1099,"pc":[4607,4608,4609]},{"teal":4685,"source":1101,"pc":[4610,4611]},{"teal":4686,"source":1101,"pc":[4612,4613,4614]},{"teal":4687,"source":1101,"pc":[4615,4616]},{"teal":4688,"source":1101,"pc":[4617]},{"teal":4691,"source":1100,"errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4618]},{"teal":4696,"source":1105,"pc":[4619,4620]},{"teal":4697,"source":1105,"pc":[4621,4622,4623]},{"teal":4698,"source":1105,"pc":[4624]},{"teal":4699,"source":1105,"pc":[4625,4626]},{"teal":4700,"source":1105,"pc":[4627]},{"teal":4703,"source":1105,"errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4628]},{"teal":4710,"source":1108,"pc":[4629,4630]},{"teal":4711,"source":1108,"pc":[4631,4632,4633]},{"teal":4712,"source":1108,"pc":[4634]},{"teal":4713,"source":1108,"pc":[4635]},{"teal":4714,"source":1108,"pc":[4636]},{"teal":4715,"source":1108,"pc":[4637]},{"teal":4716,"source":1108,"pc":[4638,4639,4640]},{"teal":4717,"source":1108,"pc":[4641,4642]},{"teal":4718,"source":1108,"pc":[4643,4644,4645]},{"teal":4719,"source":1108,"pc":[4646]},{"teal":4720,"source":1108,"pc":[4647,4648]},{"teal":4721,"source":1108,"pc":[4649]},{"teal":4722,"source":1108,"pc":[4650]},{"teal":4726,"source":1107,"errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4651]},{"teal":4731,"source":1111,"pc":[4652,4653]},{"teal":4732,"source":1111,"pc":[4654,4655,4656]},{"teal":4733,"source":1111,"pc":[4657]},{"teal":4734,"source":1111,"pc":[4658]},{"teal":4735,"source":1111,"pc":[4659]},{"teal":4736,"source":1111,"pc":[4660,4661,4662]},{"teal":4741,"source":1112,"pc":[4663,4664]},{"teal":4742,"source":1112,"pc":[4665,4666,4667]},{"teal":4743,"source":1112,"pc":[4668]},{"teal":4744,"source":1112,"pc":[4669,4670]},{"teal":4745,"source":1112,"pc":[4671]},{"teal":4748,"source":1112,"errorMessage":"sunsettingOn must be later than now if set","pc":[4672]},{"teal":4751,"source":1081,"pc":[4673]},{"teal":4765,"source":1127,"pc":[4674,4675,4676]},{"teal":4768,"source":1127,"pc":[4677]},{"teal":4769,"source":1127,"pc":[4678,4679]},{"teal":4773,"source":1134,"pc":[4680,4681]},{"teal":4774,"source":1134,"pc":[4682,4683]},{"teal":4775,"source":1134,"pc":[4684,4685,4686]},{"teal":4776,"source":1134,"pc":[4687]},{"teal":4777,"source":1134,"pc":[4688]},{"teal":4778,"source":1134,"pc":[4689]},{"teal":4779,"source":1134,"pc":[4690,4691]},{"teal":4780,"source":1134,"pc":[4692]},{"teal":4781,"source":1134,"pc":[4693]},{"teal":4782,"source":1134,"pc":[4694]},{"teal":4783,"source":1134,"pc":[4695]},{"teal":4784,"source":1134,"pc":[4696]},{"teal":4785,"source":1134,"pc":[4697]},{"teal":4786,"source":1134,"pc":[4698,4699]},{"teal":4787,"source":1134,"pc":[4700,4701,4702]},{"teal":4788,"source":1134,"pc":[4703]},{"teal":4789,"source":1134,"pc":[4704]},{"teal":4790,"source":1134,"pc":[4705]},{"teal":4791,"source":1134,"pc":[4706,4707]},{"teal":4792,"source":1134,"pc":[4708]},{"teal":4793,"source":1134,"pc":[4709]},{"teal":4794,"source":1134,"pc":[4710,4711]},{"teal":4807,"source":1143,"pc":[4712]},{"teal":4808,"source":1143,"pc":[4713]},{"teal":4809,"source":1143,"pc":[4714,4715]},{"teal":4813,"source":1143,"pc":[4716,4717]},{"teal":4814,"source":1143,"pc":[4718,4719]},{"teal":4815,"source":1143,"pc":[4720,4721]},{"teal":4816,"source":1143,"pc":[4722]},{"teal":4817,"source":1143,"pc":[4723,4724]},{"teal":4821,"source":1143,"pc":[4725,4726]},{"teal":4822,"source":1143,"pc":[4727,4728]},{"teal":4823,"source":1143,"pc":[4729]},{"teal":4824,"source":1143,"pc":[4730,4731]},{"teal":4827,"source":1143,"pc":[4732]},{"teal":4828,"source":1143,"pc":[4733,4734]},{"teal":4829,"source":1138,"pc":[4735]},{"teal":4830,"source":1138,"pc":[4736,4737]},{"teal":4831,"source":1138,"pc":[4738,4739]},{"teal":4832,"source":1138,"pc":[4740,4741,4742,4743,4744,4745]},{"teal":4833,"source":1138,"pc":[4746,4747]},{"teal":4837,"source":1139,"pc":[4748,4749]},{"teal":4838,"source":1139,"pc":[4750,4751]},{"teal":4848,"source":1145,"pc":[4752,4753]},{"teal":4849,"source":1145,"pc":[4754,4755]},{"teal":4850,"source":1145,"pc":[4756,4757]},{"teal":4853,"source":1138,"pc":[4758]},{"teal":4854,"source":1138,"pc":[4759,4760]},{"teal":4857,"source":1138,"pc":[4761]},{"teal":4858,"source":1138,"pc":[4762,4763]},{"teal":4859,"source":1138,"pc":[4764]},{"teal":4860,"source":1138,"pc":[4765]},{"teal":4861,"source":1138,"pc":[4766,4767]},{"teal":4862,"source":1138,"pc":[4768,4769,4770]},{"teal":4863,"source":1138,"pc":[4771]},{"teal":4868,"source":1148,"pc":[4772,4773]},{"teal":4869,"source":1148,"pc":[4774,4775,4776]},{"teal":4870,"source":1148,"pc":[4777]},{"teal":4871,"source":1148,"pc":[4778,4779,4780]},{"teal":4876,"source":1149,"pc":[4781]},{"teal":4877,"source":1149,"pc":[4782,4783]},{"teal":4878,"source":1149,"pc":[4784,4785]},{"teal":4879,"source":1149,"pc":[4786]},{"teal":4880,"source":1149,"pc":[4787,4788]},{"teal":4881,"source":1149,"pc":[4789,4790]},{"teal":4882,"source":1149,"pc":[4791]},{"teal":4883,"source":1149,"pc":[4792,4793]},{"teal":4884,"source":1149,"pc":[4794,4795]},{"teal":4885,"source":1149,"pc":[4796,4797]},{"teal":4886,"source":1149,"pc":[4798,4799]},{"teal":4887,"source":1149,"pc":[4800]},{"teal":4892,"source":1153,"pc":[4801,4802]},{"teal":4893,"source":1153,"pc":[4803,4804]},{"teal":4894,"source":1153,"pc":[4805]},{"teal":4897,"source":1153,"errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4806]},{"teal":4898,"source":1153,"pc":[4807,4808]},{"teal":4902,"source":1154,"pc":[4809,4810]},{"teal":4903,"source":1154,"pc":[4811,4812]},{"teal":4904,"source":1154,"pc":[4813]},{"teal":4907,"source":1154,"errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4814]},{"teal":4908,"source":1154,"pc":[4815,4816]},{"teal":4912,"source":1155,"pc":[4817,4818]},{"teal":4913,"source":1155,"pc":[4819,4820]},{"teal":4914,"source":1155,"pc":[4821,4822,4823]},{"teal":4915,"source":1155,"pc":[4824]},{"teal":4916,"source":1155,"pc":[4825]},{"teal":4917,"source":1155,"pc":[4826]},{"teal":4918,"source":1155,"pc":[4827,4828]},{"teal":4919,"source":1155,"pc":[4829]},{"teal":4920,"source":1155,"pc":[4830]},{"teal":4921,"source":1155,"pc":[4831]},{"teal":4922,"source":1155,"pc":[4832]},{"teal":4923,"source":1155,"pc":[4833,4834]},{"teal":4924,"source":1155,"pc":[4835]},{"teal":4925,"source":1155,"pc":[4836,4837,4838]},{"teal":4926,"source":1155,"pc":[4839]},{"teal":4927,"source":1155,"pc":[4840,4841]},{"teal":4928,"source":1155,"pc":[4842,4843,4844]},{"teal":4929,"source":1155,"pc":[4845]},{"teal":4930,"source":1155,"pc":[4846]},{"teal":4931,"source":1155,"pc":[4847]},{"teal":4932,"source":1155,"pc":[4848,4849]},{"teal":4933,"source":1155,"pc":[4850]},{"teal":4937,"source":1156,"pc":[4851,4852]},{"teal":4938,"source":1156,"pc":[4853,4854]},{"teal":4939,"source":1156,"pc":[4855,4856,4857]},{"teal":4940,"source":1156,"pc":[4858]},{"teal":4941,"source":1156,"pc":[4859]},{"teal":4942,"source":1156,"pc":[4860]},{"teal":4943,"source":1156,"pc":[4861,4862]},{"teal":4944,"source":1156,"pc":[4863]},{"teal":4945,"source":1156,"pc":[4864]},{"teal":4946,"source":1156,"pc":[4865,4866]},{"teal":4947,"source":1156,"pc":[4867]},{"teal":4948,"source":1156,"pc":[4868,4869]},{"teal":4949,"source":1156,"pc":[4870]},{"teal":4950,"source":1156,"pc":[4871]},{"teal":4951,"source":1156,"pc":[4872,4873]},{"teal":4952,"source":1156,"pc":[4874,4875,4876]},{"teal":4953,"source":1156,"pc":[4877]},{"teal":4954,"source":1156,"pc":[4878]},{"teal":4955,"source":1156,"pc":[4879]},{"teal":4956,"source":1156,"pc":[4880,4881]},{"teal":4957,"source":1156,"pc":[4882]},{"teal":4962,"source":1159,"pc":[4883,4884]},{"teal":4963,"source":1159,"pc":[4885,4886,4887]},{"teal":4968,"source":1160,"pc":[4888,4889]},{"teal":4969,"source":1160,"pc":[4890]},{"teal":4970,"source":1160,"pc":[4891]},{"teal":4971,"source":1160,"pc":[4892]},{"teal":4972,"source":1160,"pc":[4893,4894]},{"teal":4973,"source":1160,"pc":[4895,4896,4897]},{"teal":4974,"source":1160,"pc":[4898]},{"teal":4975,"source":1160,"pc":[4899]},{"teal":4976,"source":1160,"pc":[4900]},{"teal":4977,"source":1160,"pc":[4901,4902]},{"teal":4978,"source":1160,"pc":[4903]},{"teal":4979,"source":1160,"pc":[4904]},{"teal":4980,"source":1160,"pc":[4905]},{"teal":4981,"source":1160,"pc":[4906]},{"teal":4982,"source":1160,"pc":[4907]},{"teal":4983,"source":1160,"pc":[4908]},{"teal":4984,"source":1160,"pc":[4909,4910]},{"teal":4985,"source":1160,"pc":[4911,4912,4913]},{"teal":4986,"source":1160,"pc":[4914]},{"teal":4987,"source":1160,"pc":[4915]},{"teal":4988,"source":1160,"pc":[4916]},{"teal":4989,"source":1160,"pc":[4917,4918]},{"teal":4990,"source":1160,"pc":[4919]},{"teal":4996,"source":1162,"pc":[4920,4921]},{"teal":4997,"source":1162,"pc":[4922,4923,4924]},{"teal":5002,"source":1163,"pc":[4925,4926]},{"teal":5003,"source":1163,"pc":[4927]},{"teal":5004,"source":1163,"pc":[4928]},{"teal":5005,"source":1163,"pc":[4929]},{"teal":5006,"source":1163,"pc":[4930,4931]},{"teal":5007,"source":1163,"pc":[4932]},{"teal":5008,"source":1163,"pc":[4933]},{"teal":5013,"source":1165,"pc":[4934,4935]},{"teal":5014,"source":1165,"pc":[4936]},{"teal":5015,"source":1165,"pc":[4937]},{"teal":5016,"source":1165,"pc":[4938]},{"teal":5017,"source":1165,"pc":[4939,4940]},{"teal":5018,"source":1165,"pc":[4941,4942,4943]},{"teal":5019,"source":1165,"pc":[4944]},{"teal":5020,"source":1165,"pc":[4945]},{"teal":5021,"source":1165,"pc":[4946]},{"teal":5022,"source":1165,"pc":[4947,4948]},{"teal":5023,"source":1165,"pc":[4949]},{"teal":5024,"source":1165,"pc":[4950]},{"teal":5025,"source":1165,"pc":[4951,4952]},{"teal":5026,"source":1165,"pc":[4953,4954]},{"teal":5027,"source":1165,"pc":[4955,4956]},{"teal":5028,"source":1165,"pc":[4957]},{"teal":5029,"source":1165,"pc":[4958]},{"teal":5030,"source":1165,"pc":[4959]},{"teal":5031,"source":1165,"pc":[4960]},{"teal":5032,"source":1165,"pc":[4961,4962]},{"teal":5033,"source":1165,"pc":[4963,4964,4965]},{"teal":5034,"source":1165,"pc":[4966]},{"teal":5035,"source":1165,"pc":[4967]},{"teal":5036,"source":1165,"pc":[4968]},{"teal":5037,"source":1165,"pc":[4969,4970]},{"teal":5038,"source":1165,"pc":[4971]},{"teal":5042,"source":1166,"pc":[4972,4973]},{"teal":5043,"source":1166,"pc":[4974]},{"teal":5044,"source":1166,"pc":[4975,4976]},{"teal":5045,"source":1166,"pc":[4977,4978]},{"teal":5046,"source":1166,"pc":[4979,4980]},{"teal":5047,"source":1166,"pc":[4981]},{"teal":5048,"source":1166,"pc":[4982]},{"teal":5049,"source":1166,"pc":[4983,4984]},{"teal":5050,"source":1166,"pc":[4985]},{"teal":5051,"source":1166,"pc":[4986]},{"teal":5052,"source":1127,"pc":[4987]},{"teal":5056,"source":1169,"pc":[4988,4989,4990]},{"teal":5059,"source":1169,"pc":[4991]},{"teal":5060,"source":1169,"pc":[4992,4993]},{"teal":5064,"source":1170,"pc":[4994]},{"teal":5065,"source":1170,"pc":[4995,4996]},{"teal":5066,"source":1170,"pc":[4997]},{"teal":5067,"source":1170,"pc":[4998]},{"teal":5068,"source":1170,"pc":[4999]},{"teal":5069,"source":1170,"pc":[5000]},{"teal":5070,"source":1170,"pc":[5001]},{"teal":5074,"source":1172,"pc":[5002]},{"teal":5075,"source":1172,"pc":[5003,5004]},{"teal":5076,"source":1172,"pc":[5005]},{"teal":5077,"source":1172,"pc":[5006]},{"teal":5080,"source":1172,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[5007]},{"teal":5081,"source":1172,"pc":[5008,5009]},{"teal":5085,"source":1173,"pc":[5010]},{"teal":5086,"source":1173,"pc":[5011,5012]},{"teal":5090,"source":1174,"pc":[5013]},{"teal":5091,"source":1174,"pc":[5014,5015]},{"teal":5096,"source":1174,"pc":[5016,5017]},{"teal":5097,"source":1174,"pc":[5018,5019]},{"teal":5098,"source":1174,"pc":[5020]},{"teal":5099,"source":1174,"pc":[5021,5022,5023]},{"teal":5104,"source":1175,"pc":[5024,5025]},{"teal":5105,"source":1175,"pc":[5026,5027]},{"teal":5106,"source":1175,"pc":[5028]},{"teal":5107,"source":1175,"pc":[5029]},{"teal":5108,"source":1175,"pc":[5030]},{"teal":5109,"source":1175,"pc":[5031]},{"teal":5110,"source":1175,"pc":[5032,5033]},{"teal":5111,"source":1175,"pc":[5034]},{"teal":5112,"source":1175,"pc":[5035,5036,5037]},{"teal":5117,"source":1177,"pc":[5038]},{"teal":5123,"source":1179,"pc":[5039,5040]},{"teal":5124,"source":1179,"pc":[5041]},{"teal":5125,"source":1179,"pc":[5042]},{"teal":5126,"source":1179,"pc":[5043]},{"teal":5127,"source":1179,"pc":[5044,5045,5046]},{"teal":5128,"source":1179,"pc":[5047,5048]},{"teal":5129,"source":1179,"pc":[5049,5050]},{"teal":5130,"source":1179,"pc":[5051]},{"teal":5131,"source":1179,"pc":[5052]},{"teal":5132,"source":1179,"pc":[5053]},{"teal":5133,"source":1179,"pc":[5054]},{"teal":5134,"source":1179,"pc":[5055]},{"teal":5135,"source":1179,"pc":[5056]},{"teal":5136,"source":1179,"pc":[5057]},{"teal":5137,"source":1179,"pc":[5058]},{"teal":5138,"source":1179,"pc":[5059]},{"teal":5139,"source":1179,"pc":[5060]},{"teal":5142,"source":1179,"pc":[5061,5062,5063]},{"teal":5147,"source":1180,"pc":[5064,5065]},{"teal":5148,"source":1180,"pc":[5066]},{"teal":5149,"source":1180,"pc":[5067]},{"teal":5150,"source":1180,"pc":[5068,5069]},{"teal":5157,"source":1174,"pc":[5070,5071]},{"teal":5158,"source":1174,"pc":[5072]},{"teal":5159,"source":1174,"pc":[5073]},{"teal":5160,"source":1174,"pc":[5074,5075]},{"teal":5161,"source":1174,"pc":[5076,5077,5078]},{"teal":5167,"source":1183,"pc":[5079,5080]},{"teal":5168,"source":1183,"pc":[5081]},{"teal":5169,"source":1183,"pc":[5082]},{"teal":5170,"source":1183,"pc":[5083,5084,5085]},{"teal":5174,"source":1184,"errorMessage":"No empty slot available in the staker pool set","pc":[5086]},{"teal":5179,"source":1186,"pc":[5087,5088]},{"teal":5180,"source":1186,"pc":[5089]},{"teal":5181,"source":1186,"pc":[5090]},{"teal":5182,"source":1186,"pc":[5091]},{"teal":5183,"source":1186,"pc":[5092]},{"teal":5184,"source":1186,"pc":[5093,5094]},{"teal":5185,"source":1186,"pc":[5095]},{"teal":5186,"source":1186,"pc":[5096,5097]},{"teal":5187,"source":1186,"pc":[5098]},{"teal":5188,"source":1186,"pc":[5099,5100]},{"teal":5189,"source":1186,"pc":[5101]},{"teal":5190,"source":1169,"pc":[5102]},{"teal":5201,"source":1197,"pc":[5103,5104,5105]},{"teal":5204,"source":1197,"pc":[5106]},{"teal":5205,"source":1197,"pc":[5107,5108]},{"teal":5209,"source":1199,"pc":[5109]},{"teal":5210,"source":1199,"pc":[5110,5111]},{"teal":5214,"source":1200,"pc":[5112]},{"teal":5215,"source":1200,"pc":[5113,5114]},{"teal":5219,"source":1201,"pc":[5115]},{"teal":5220,"source":1201,"pc":[5116,5117]},{"teal":5224,"source":1203,"pc":[5118]},{"teal":5225,"source":1203,"pc":[5119,5120]},{"teal":5226,"source":1203,"pc":[5121]},{"teal":5227,"source":1203,"pc":[5122]},{"teal":5230,"source":1203,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[5123]},{"teal":5231,"source":1203,"pc":[5124,5125]},{"teal":5235,"source":1204,"pc":[5126]},{"teal":5236,"source":1204,"pc":[5127,5128]},{"teal":5241,"source":1204,"pc":[5129,5130]},{"teal":5242,"source":1204,"pc":[5131,5132]},{"teal":5243,"source":1204,"pc":[5133]},{"teal":5244,"source":1204,"pc":[5134,5135,5136]},{"teal":5249,"source":1205,"pc":[5137,5138]},{"teal":5250,"source":1205,"pc":[5139,5140]},{"teal":5251,"source":1205,"pc":[5141]},{"teal":5252,"source":1205,"pc":[5142]},{"teal":5253,"source":1205,"pc":[5143]},{"teal":5254,"source":1205,"pc":[5144]},{"teal":5255,"source":1205,"pc":[5145]},{"teal":5256,"source":1205,"pc":[5146]},{"teal":5257,"source":1205,"pc":[5147]},{"teal":5258,"source":1205,"pc":[5148]},{"teal":5259,"source":1205,"pc":[5149]},{"teal":5260,"source":1205,"pc":[5150,5151,5152]},{"teal":5263,"source":1206,"pc":[5153,5154,5155]},{"teal":5268,"source":1208,"pc":[5156,5157]},{"teal":5269,"source":1208,"pc":[5158]},{"teal":5270,"source":1208,"pc":[5159]},{"teal":5271,"source":1208,"pc":[5160,5161]},{"teal":5276,"source":1209,"pc":[5162,5163]},{"teal":5277,"source":1209,"pc":[5164,5165]},{"teal":5278,"source":1209,"pc":[5166]},{"teal":5279,"source":1209,"pc":[5167]},{"teal":5280,"source":1209,"pc":[5168]},{"teal":5281,"source":1209,"pc":[5169]},{"teal":5282,"source":1209,"pc":[5170]},{"teal":5283,"source":1209,"pc":[5171]},{"teal":5284,"source":1209,"pc":[5172]},{"teal":5285,"source":1209,"pc":[5173,5174]},{"teal":5286,"source":1209,"pc":[5175,5176,5177]},{"teal":5287,"source":1209,"pc":[5178]},{"teal":5288,"source":1209,"pc":[5179]},{"teal":5289,"source":1209,"pc":[5180,5181,5182]},{"teal":5295,"source":1210,"pc":[5183,5184]},{"teal":5296,"source":1210,"pc":[5185,5186]},{"teal":5297,"source":1210,"pc":[5187]},{"teal":5298,"source":1210,"pc":[5188]},{"teal":5299,"source":1210,"pc":[5189]},{"teal":5300,"source":1210,"pc":[5190]},{"teal":5301,"source":1210,"pc":[5191,5192]},{"teal":5302,"source":1210,"pc":[5193]},{"teal":5303,"source":1210,"pc":[5194,5195,5196]},{"teal":5308,"source":1211,"pc":[5197]},{"teal":5309,"source":1211,"pc":[5198,5199]},{"teal":5313,"source":1213,"pc":[5200,5201]},{"teal":5314,"source":1213,"pc":[5202]},{"teal":5315,"source":1213,"pc":[5203]},{"teal":5316,"source":1213,"pc":[5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229]},{"teal":5317,"source":1213,"pc":[5230]},{"teal":5318,"source":1213,"pc":[5231,5232]},{"teal":5319,"source":1213,"pc":[5233]},{"teal":5320,"source":1213,"pc":[5234,5235]},{"teal":5321,"source":1213,"pc":[5236]},{"teal":5322,"source":1210,"pc":[5237,5238,5239]},{"teal":5327,"source":1215,"pc":[5240,5241]},{"teal":5328,"source":1215,"pc":[5242]},{"teal":5329,"source":1215,"pc":[5243]},{"teal":5330,"source":1215,"pc":[5244,5245]},{"teal":5339,"source":1204,"pc":[5246,5247]},{"teal":5340,"source":1204,"pc":[5248]},{"teal":5341,"source":1204,"pc":[5249]},{"teal":5342,"source":1204,"pc":[5250,5251]},{"teal":5343,"source":1204,"pc":[5252,5253,5254]},{"teal":5349,"source":1219,"pc":[5255,5256]},{"teal":5350,"source":1219,"pc":[5257]},{"teal":5351,"source":1219,"pc":[5258,5259,5260]},{"teal":5355,"source":1220,"errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5261]},{"teal":5360,"source":1223,"pc":[5262,5263]},{"teal":5361,"source":1223,"pc":[5264]},{"teal":5362,"source":1223,"pc":[5265,5266]},{"teal":5363,"source":1223,"pc":[5267]},{"teal":5364,"source":1223,"pc":[5268]},{"teal":5365,"source":1223,"pc":[5269]},{"teal":5366,"source":1223,"pc":[5270]},{"teal":5367,"source":1223,"pc":[5271,5272]},{"teal":5368,"source":1223,"pc":[5273]},{"teal":5369,"source":1223,"pc":[5274]},{"teal":5370,"source":1223,"pc":[5275]},{"teal":5373,"source":1197,"pc":[5276,5277]},{"teal":5376,"source":1197,"pc":[5278,5279]},{"teal":5377,"source":1197,"pc":[5280]},{"teal":5381,"source":1226,"pc":[5281,5282,5283]},{"teal":5384,"source":1226,"pc":[5284]},{"teal":5385,"source":1226,"pc":[5285,5286]},{"teal":5389,"source":1227,"pc":[5287,5288]},{"teal":5390,"source":1227,"pc":[5289,5290]},{"teal":5391,"source":1227,"pc":[5291]},{"teal":5392,"source":1227,"pc":[5292,5293]},{"teal":5393,"source":1227,"pc":[5294]},{"teal":5394,"source":1227,"pc":[5295]},{"teal":5395,"source":1227,"pc":[5296,5297]},{"teal":5396,"source":1227,"pc":[5298]},{"teal":5397,"source":1227,"pc":[5299,5300]},{"teal":5401,"source":1228,"pc":[5301,5302,5303]},{"teal":5402,"source":1228,"pc":[5304]},{"teal":5403,"source":1228,"pc":[5305]},{"teal":5404,"source":1228,"pc":[5306,5307]},{"teal":5405,"source":1228,"pc":[5308]},{"teal":5406,"source":1228,"pc":[5309]},{"teal":5407,"source":1228,"pc":[5310,5311]},{"teal":5408,"source":1228,"pc":[5312]},{"teal":5409,"source":1228,"pc":[5313]},{"teal":5410,"source":1228,"pc":[5314,5315]},{"teal":5414,"source":1230,"pc":[5316,5317]},{"teal":5415,"source":1230,"pc":[5318]},{"teal":5416,"source":1230,"pc":[5319]},{"teal":5417,"source":1230,"pc":[5320]},{"teal":5418,"source":1230,"pc":[5321,5322,5323]},{"teal":5419,"source":1230,"pc":[5324,5325]},{"teal":5420,"source":1230,"pc":[5326]},{"teal":5421,"source":1230,"pc":[5327]},{"teal":5422,"source":1230,"pc":[5328]},{"teal":5426,"source":1230,"errorMessage":"node number not in valid range","pc":[5329]},{"teal":5430,"source":1232,"pc":[5330]},{"teal":5431,"source":1232,"pc":[5331,5332]},{"teal":5436,"source":1232,"pc":[5333,5334]},{"teal":5437,"source":1232,"pc":[5335,5336]},{"teal":5438,"source":1232,"pc":[5337]},{"teal":5439,"source":1232,"pc":[5338,5339,5340]},{"teal":5444,"source":1233,"pc":[5341,5342]},{"teal":5445,"source":1233,"pc":[5343]},{"teal":5446,"source":1233,"pc":[5344,5345]},{"teal":5447,"source":1233,"pc":[5346]},{"teal":5448,"source":1233,"pc":[5347]},{"teal":5449,"source":1233,"pc":[5348]},{"teal":5450,"source":1233,"pc":[5349]},{"teal":5451,"source":1233,"pc":[5350]},{"teal":5452,"source":1233,"pc":[5351]},{"teal":5453,"source":1233,"pc":[5352]},{"teal":5454,"source":1233,"pc":[5353,5354]},{"teal":5455,"source":1233,"pc":[5355]},{"teal":5456,"source":1233,"pc":[5356]},{"teal":5457,"source":1233,"pc":[5357]},{"teal":5458,"source":1233,"pc":[5358]},{"teal":5459,"source":1233,"pc":[5359]},{"teal":5460,"source":1233,"pc":[5360]},{"teal":5461,"source":1233,"pc":[5361]},{"teal":5462,"source":1233,"pc":[5362]},{"teal":5463,"source":1233,"pc":[5363,5364,5365]},{"teal":5468,"source":1235,"pc":[5366,5367]},{"teal":5469,"source":1235,"pc":[5368,5369]},{"teal":5470,"source":1235,"pc":[5370]},{"teal":5471,"source":1235,"pc":[5371]},{"teal":5472,"source":1235,"pc":[5372]},{"teal":5473,"source":1235,"pc":[5373]},{"teal":5474,"source":1235,"pc":[5374]},{"teal":5475,"source":1235,"pc":[5375]},{"teal":5476,"source":1235,"pc":[5376]},{"teal":5477,"source":1235,"pc":[5377,5378]},{"teal":5478,"source":1235,"pc":[5379]},{"teal":5479,"source":1235,"pc":[5380]},{"teal":5480,"source":1235,"pc":[5381]},{"teal":5481,"source":1235,"pc":[5382,5383]},{"teal":5482,"source":1235,"pc":[5384]},{"teal":5483,"source":1235,"pc":[5385]},{"teal":5484,"source":1235,"pc":[5386,5387]},{"teal":5485,"source":1235,"pc":[5388]},{"teal":5486,"source":1235,"pc":[5389]},{"teal":5487,"source":1235,"pc":[5390,5391]},{"teal":5488,"source":1235,"pc":[5392]},{"teal":5492,"source":1236,"pc":[5393]},{"teal":5499,"source":1232,"pc":[5394,5395]},{"teal":5500,"source":1232,"pc":[5396]},{"teal":5501,"source":1232,"pc":[5397]},{"teal":5502,"source":1232,"pc":[5398,5399]},{"teal":5503,"source":1232,"pc":[5400,5401,5402]},{"teal":5507,"source":1239,"errorMessage":"no available space in specified node for this pool","pc":[5403]},{"teal":5508,"source":1226,"pc":[5404]},{"teal":5518,"source":1249,"pc":[5405,5406,5407]},{"teal":5521,"source":1249,"pc":[5408]},{"teal":5522,"source":1249,"pc":[5409,5410]},{"teal":5526,"source":1250,"pc":[5411,5412]},{"teal":5527,"source":1250,"pc":[5413]},{"teal":5528,"source":1250,"pc":[5414]},{"teal":5529,"source":1250,"pc":[5415,5416]},{"teal":5530,"source":1250,"pc":[5417]},{"teal":5531,"source":1250,"pc":[5418]},{"teal":5532,"source":1250,"pc":[5419,5420]},{"teal":5533,"source":1250,"pc":[5421]},{"teal":5534,"source":1250,"pc":[5422]},{"teal":5535,"source":1250,"pc":[5423,5424]},{"teal":5540,"source":1251,"pc":[5425,5426]},{"teal":5541,"source":1251,"pc":[5427]},{"teal":5542,"source":1251,"pc":[5428]},{"teal":5543,"source":1251,"pc":[5429,5430,5431]},{"teal":5548,"source":1252,"pc":[5432]},{"teal":5553,"source":1254,"pc":[5433,5434]},{"teal":5554,"source":1254,"pc":[5435,5436]},{"teal":5558,"source":1255,"pc":[5437]},{"teal":5559,"source":1255,"pc":[5438,5439]},{"teal":5560,"source":1255,"pc":[5440]},{"teal":5561,"source":1255,"pc":[5441,5442]},{"teal":5562,"source":1255,"pc":[5443]},{"teal":5563,"source":1255,"pc":[5444]},{"teal":5564,"source":1255,"pc":[5445,5446]},{"teal":5565,"source":1255,"pc":[5447]},{"teal":5566,"source":1255,"pc":[5448,5449]},{"teal":5573,"source":1259,"pc":[5450,5451]},{"teal":5574,"source":1259,"pc":[5452]},{"teal":5575,"source":1259,"pc":[5453]},{"teal":5576,"source":1259,"pc":[5454]},{"teal":5577,"source":1259,"pc":[5455,5456,5457]},{"teal":5578,"source":1260,"pc":[5458,5459]},{"teal":5579,"source":1260,"pc":[5460,5461]},{"teal":5580,"source":1260,"pc":[5462]},{"teal":5581,"source":1259,"pc":[5463]},{"teal":5584,"source":1260,"pc":[5464]},{"teal":5585,"source":1260,"pc":[5465,5466,5467]},{"teal":5586,"source":1261,"pc":[5468,5469]},{"teal":5587,"source":1261,"pc":[5470,5471]},{"teal":5588,"source":1261,"pc":[5472]},{"teal":5589,"source":1260,"pc":[5473]},{"teal":5592,"source":1258,"pc":[5474,5475,5476]},{"teal":5597,"source":1263,"pc":[5477,5478]},{"teal":5598,"source":1263,"pc":[5479]},{"teal":5599,"source":1263,"pc":[5480]},{"teal":5600,"source":1263,"pc":[5481]},{"teal":5604,"source":1264,"pc":[5482,5483]},{"teal":5605,"source":1264,"pc":[5484]},{"teal":5606,"source":1264,"pc":[5485]},{"teal":5607,"source":1264,"pc":[5486,5487]},{"teal":5608,"source":1264,"pc":[5488]},{"teal":5609,"source":1264,"pc":[5489]},{"teal":5610,"source":1264,"pc":[5490,5491]},{"teal":5611,"source":1264,"pc":[5492]},{"teal":5612,"source":1264,"pc":[5493]},{"teal":5613,"source":1264,"pc":[5494,5495]},{"teal":5618,"source":1265,"pc":[5496,5497]},{"teal":5619,"source":1265,"pc":[5498]},{"teal":5620,"source":1265,"pc":[5499]},{"teal":5621,"source":1265,"pc":[5500,5501,5502]},{"teal":5626,"source":1266,"pc":[5503]},{"teal":5627,"source":1266,"pc":[5504,5505]},{"teal":5635,"source":1269,"pc":[5506,5507]},{"teal":5636,"source":1269,"pc":[5508,5509]},{"teal":5637,"source":1269,"pc":[5510,5511]},{"teal":5638,"source":1269,"pc":[5512]},{"teal":5639,"source":1269,"pc":[5513,5514]},{"teal":5640,"source":1269,"pc":[5515]},{"teal":5643,"source":1268,"errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5516]},{"teal":5649,"source":1273,"pc":[5517,5518]},{"teal":5650,"source":1273,"pc":[5519]},{"teal":5651,"source":1273,"pc":[5520]},{"teal":5652,"source":1273,"pc":[5521,5522,5523]},{"teal":5660,"source":1275,"pc":[5524,5525]},{"teal":5661,"source":1275,"pc":[5526,5527]},{"teal":5662,"source":1275,"pc":[5528]},{"teal":5663,"source":1275,"pc":[5529,5530]},{"teal":5664,"source":1275,"pc":[5531,5532,5533]},{"teal":5665,"source":1275,"pc":[5534]},{"teal":5668,"source":1274,"errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5535]},{"teal":5674,"source":1279,"pc":[5536,5537]},{"teal":5675,"source":1279,"pc":[5538,5539]},{"teal":5676,"source":1279,"pc":[5540]},{"teal":5677,"source":1279,"pc":[5541,5542,5543]},{"teal":5682,"source":1280,"pc":[5544]},{"teal":5683,"source":1280,"pc":[5545,5546]},{"teal":5687,"source":1281,"pc":[5547,5548]},{"teal":5688,"source":1281,"pc":[5549,5550,5551]},{"teal":5689,"source":1281,"pc":[5552]},{"teal":5690,"source":1281,"pc":[5553,5554]},{"teal":5691,"source":1281,"pc":[5555,5556,5557]},{"teal":5692,"source":1281,"pc":[5558]},{"teal":5693,"source":1281,"pc":[5559,5560]},{"teal":5694,"source":1281,"pc":[5561]},{"teal":5695,"source":1281,"pc":[5562,5563]},{"teal":5701,"source":1282,"pc":[5564,5565]},{"teal":5702,"source":1282,"pc":[5566,5567]},{"teal":5703,"source":1282,"pc":[5568]},{"teal":5704,"source":1282,"pc":[5569,5570,5571]},{"teal":5709,"source":1283,"pc":[5572]},{"teal":5710,"source":1283,"pc":[5573,5574]},{"teal":5711,"source":1284,"pc":[5575,5576,5577]},{"teal":5717,"source":1281,"pc":[5578,5579]},{"teal":5718,"source":1281,"pc":[5580]},{"teal":5719,"source":1281,"pc":[5581]},{"teal":5720,"source":1281,"pc":[5582]},{"teal":5721,"source":1281,"pc":[5583,5584]},{"teal":5722,"source":1281,"pc":[5585]},{"teal":5723,"source":1281,"pc":[5586,5587,5588]},{"teal":5724,"source":1281,"pc":[5589,5590]},{"teal":5725,"source":1281,"pc":[5591,5592]},{"teal":5726,"source":1281,"pc":[5593,5594]},{"teal":5727,"source":1281,"pc":[5595]},{"teal":5728,"source":1281,"pc":[5596]},{"teal":5729,"source":1281,"pc":[5597]},{"teal":5730,"source":1281,"pc":[5598,5599]},{"teal":5731,"source":1281,"pc":[5600,5601,5602]},{"teal":5736,"source":1287,"pc":[5603,5604]},{"teal":5739,"source":1287,"errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5605]},{"teal":5745,"source":1289,"pc":[5606,5607]},{"teal":5746,"source":1289,"pc":[5608,5609]},{"teal":5747,"source":1289,"pc":[5610]},{"teal":5748,"source":1289,"pc":[5611,5612,5613]},{"teal":5756,"source":1293,"pc":[5614,5615]},{"teal":5757,"source":1293,"pc":[5616,5617]},{"teal":5758,"source":1293,"pc":[5618]},{"teal":5759,"source":1293,"pc":[5619,5620]},{"teal":5760,"source":1293,"pc":[5621,5622,5623]},{"teal":5761,"source":1293,"pc":[5624]},{"teal":5762,"source":1293,"pc":[5625,5626,5627]},{"teal":5765,"source":1292,"errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5628]},{"teal":5771,"source":1297,"pc":[5629,5630]},{"teal":5772,"source":1297,"pc":[5631,5632]},{"teal":5773,"source":1297,"pc":[5633]},{"teal":5774,"source":1297,"pc":[5634,5635,5636]},{"teal":5779,"source":1299,"pc":[5637,5638]},{"teal":5780,"source":1299,"pc":[5639,5640]},{"teal":5784,"source":1300,"pc":[5641,5642]},{"teal":5785,"source":1300,"pc":[5643,5644,5645]},{"teal":5788,"source":1300,"errorMessage":"provided NFD must be valid","pc":[5646]},{"teal":5796,"source":1304,"pc":[5647,5648]},{"teal":5797,"source":1304,"pc":[5649,5650]},{"teal":5798,"source":1304,"pc":[5651]},{"teal":5801,"source":1304,"errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5652]},{"teal":5802,"source":1305,"pc":[5653,5654]},{"teal":5803,"source":1304,"pc":[5655]},{"teal":5804,"source":1305,"pc":[5656]},{"teal":5805,"source":1305,"pc":[5657,5658,5659]},{"teal":5806,"source":1305,"pc":[5660,5661]},{"teal":5807,"source":1305,"pc":[5662,5663]},{"teal":5808,"source":1305,"pc":[5664,5665,5666]},{"teal":5809,"source":1305,"pc":[5667]},{"teal":5813,"source":1303,"errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5668]},{"teal":5821,"source":1311,"pc":[5669,5670]},{"teal":5822,"source":1311,"pc":[5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685]},{"teal":5823,"source":1311,"pc":[5686]},{"teal":5826,"source":1311,"errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5687]},{"teal":5827,"source":1311,"pc":[5688]},{"teal":5828,"source":1312,"pc":[5689,5690]},{"teal":5829,"source":1312,"pc":[5691,5692,5693]},{"teal":5830,"source":1312,"pc":[5694]},{"teal":5831,"source":1311,"pc":[5695]},{"teal":5834,"source":1310,"errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5696]},{"teal":5837,"source":1249,"pc":[5697]},{"teal":5849,"source":1327,"pc":[5698,5699,5700]},{"teal":5852,"source":1327,"pc":[5701]},{"teal":5856,"source":1329,"pc":[5702,5703]},{"teal":5857,"source":1329,"pc":[5704,5705,5706,5707,5708,5709,5710,5711]},{"teal":5858,"source":1329,"pc":[5712]},{"teal":5861,"source":1329,"errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5713]},{"teal":5862,"source":1329,"pc":[5714,5715]},{"teal":5870,"source":1331,"pc":[5716]},{"teal":5871,"source":1331,"pc":[5717,5718]},{"teal":5872,"source":1331,"pc":[5719,5720]},{"teal":5873,"source":1333,"pc":[5721,5722,5723,5724,5725,5726]},{"teal":5874,"source":1333,"pc":[5727,5728]},{"teal":5878,"source":1332,"pc":[5729,5730]},{"teal":5879,"source":1332,"pc":[5731,5732]},{"teal":5883,"source":1334,"pc":[5733,5734]},{"teal":5884,"source":1334,"pc":[5735]},{"teal":5885,"source":1334,"pc":[5736]},{"teal":5886,"source":1334,"pc":[5737]},{"teal":5887,"source":1334,"pc":[5738,5739,5740]},{"teal":5888,"source":1334,"pc":[5741]},{"teal":5889,"source":1334,"pc":[5742]},{"teal":5890,"source":1334,"pc":[5743,5744]},{"teal":5891,"source":1334,"pc":[5745,5746]},{"teal":5892,"source":1334,"pc":[5747]},{"teal":5893,"source":1334,"pc":[5748,5749]},{"teal":5896,"source":1331,"pc":[5750]},{"teal":5897,"source":1331,"pc":[5751,5752]},{"teal":5900,"source":1331,"pc":[5753]},{"teal":5901,"source":1331,"pc":[5754,5755]},{"teal":5902,"source":1331,"pc":[5756]},{"teal":5903,"source":1331,"pc":[5757]},{"teal":5904,"source":1331,"pc":[5758,5759]},{"teal":5905,"source":1331,"pc":[5760,5761,5762]},{"teal":5906,"source":1331,"pc":[5763]},{"teal":5907,"source":1331,"pc":[5764]},{"teal":5910,"source":1327,"pc":[5765,5766]},{"teal":5911,"source":1327,"pc":[5767]},{"teal":5922,"source":1346,"pc":[5768,5769,5770]},{"teal":5925,"source":1346,"pc":[5771]},{"teal":5926,"source":1346,"pc":[5772,5773]},{"teal":5933,"source":1347,"pc":[5774]},{"teal":5934,"source":1347,"pc":[5775,5776]},{"teal":5935,"source":1347,"pc":[5777,5778]},{"teal":5939,"source":1348,"pc":[5779,5780]},{"teal":5940,"source":1348,"pc":[5781,5782]},{"teal":5944,"source":1349,"pc":[5783,5784,5785,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797]},{"teal":5945,"source":1349,"pc":[5798,5799]},{"teal":5946,"source":1349,"pc":[5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814]},{"teal":5947,"source":1349,"pc":[5815,5816]},{"teal":5950,"source":1347,"pc":[5817]},{"teal":5951,"source":1347,"pc":[5818,5819]},{"teal":5954,"source":1347,"pc":[5820]},{"teal":5958,"source":1351,"pc":[5821,5822]},{"teal":5959,"source":1351,"pc":[5823,5824]},{"teal":5963,"source":1352,"pc":[5825]},{"teal":5964,"source":1352,"pc":[5826,5827]},{"teal":5969,"source":1352,"pc":[5828,5829]},{"teal":5970,"source":1352,"pc":[5830,5831]},{"teal":5971,"source":1352,"pc":[5832]},{"teal":5972,"source":1352,"pc":[5833]},{"teal":5973,"source":1352,"pc":[5834,5835,5836]},{"teal":5977,"source":1353,"pc":[5837,5838]},{"teal":5978,"source":1353,"pc":[5839,5840]},{"teal":5979,"source":1353,"pc":[5841,5842]},{"teal":5980,"source":1353,"pc":[5843]},{"teal":5981,"source":1353,"pc":[5844,5845]},{"teal":5986,"source":1354,"pc":[5846,5847]},{"teal":5987,"source":1354,"pc":[5848,5849]},{"teal":5988,"source":1354,"pc":[5850]},{"teal":5989,"source":1354,"pc":[5851]},{"teal":5990,"source":1354,"pc":[5852,5853,5854]},{"teal":5991,"source":1354,"pc":[5855,5856]},{"teal":5992,"source":1354,"pc":[5857,5858]},{"teal":5993,"source":1354,"pc":[5859]},{"teal":5994,"source":1354,"pc":[5860]},{"teal":5997,"source":1354,"pc":[5861,5862,5863]},{"teal":6002,"source":1355,"pc":[5864]},{"teal":6003,"source":1355,"pc":[5865,5866,5867]},{"teal":6010,"source":1352,"pc":[5868,5869]},{"teal":6011,"source":1352,"pc":[5870,5871]},{"teal":6012,"source":1352,"pc":[5872]},{"teal":6013,"source":1352,"pc":[5873,5874]},{"teal":6014,"source":1352,"pc":[5875,5876,5877]},{"teal":6019,"source":1358,"pc":[5878]},{"teal":6023,"source":1346,"pc":[5879,5880]},{"teal":6026,"source":1346,"pc":[5881,5882]},{"teal":6027,"source":1346,"pc":[5883]},{"teal":6035,"source":1366,"pc":[5884,5885,5886]},{"teal":6038,"source":1366,"pc":[5887]},{"teal":6042,"source":1367,"pc":[5888,5889,5890]},{"teal":6043,"source":1367,"pc":[5891,5892]},{"teal":6047,"source":1369,"pc":[5893,5894]},{"teal":6048,"source":1369,"pc":[5895,5896]},{"teal":6049,"source":1369,"pc":[5897]},{"teal":6050,"source":1369,"pc":[5898]},{"teal":6051,"source":1369,"pc":[5899,5900]},{"teal":6052,"source":1369,"pc":[5901]},{"teal":6053,"source":1369,"pc":[5902]},{"teal":6054,"source":1369,"pc":[5903]},{"teal":6055,"source":1369,"pc":[5904]},{"teal":6056,"source":1369,"pc":[5905]},{"teal":6059,"source":1369,"errorMessage":"wideRatio failed","pc":[5906]},{"teal":6062,"source":1366,"pc":[5907,5908]},{"teal":6063,"source":1366,"pc":[5909]},{"teal":6070,"source":1376,"pc":[5910,5911,5912]},{"teal":6073,"source":1376,"pc":[5913]},{"teal":6077,"source":1377,"pc":[5914,5915,5916]},{"teal":6078,"source":1377,"pc":[5917,5918]},{"teal":6082,"source":1379,"pc":[5919,5920]},{"teal":6083,"source":1379,"pc":[5921,5922,5923]},{"teal":6084,"source":1379,"pc":[5924]},{"teal":6085,"source":1379,"pc":[5925]},{"teal":6086,"source":1379,"pc":[5926,5927]},{"teal":6087,"source":1379,"pc":[5928]},{"teal":6088,"source":1379,"pc":[5929]},{"teal":6089,"source":1379,"pc":[5930]},{"teal":6090,"source":1379,"pc":[5931]},{"teal":6091,"source":1379,"pc":[5932]},{"teal":6094,"source":1379,"errorMessage":"wideRatio failed","pc":[5933]},{"teal":6097,"source":1376,"pc":[5934,5935]},{"teal":6098,"source":1376,"pc":[5936]},{"teal":6104,"source":1385,"pc":[5937,5938,5939]},{"teal":6108,"source":1386,"pc":[5940,5941]},{"teal":6109,"source":1385,"pc":[5942]},{"teal":6113,"source":1389,"pc":[5943,5944,5945]},{"teal":6117,"source":1390,"pc":[5946]},{"teal":6118,"source":1389,"pc":[5947]},{"teal":6122,"source":1393,"pc":[5948,5949,5950]},{"teal":6125,"source":1393,"pc":[5951]},{"teal":6129,"source":1402,"pc":[5952,5953]},{"teal":6130,"source":1402,"pc":[5954,5955]},{"teal":6134,"source":1403,"pc":[5956,5957]},{"teal":6135,"source":1403,"pc":[5958,5959]},{"teal":6136,"source":1403,"pc":[5960,5961]},{"teal":6137,"source":1403,"pc":[5962]},{"teal":6138,"source":1403,"pc":[5963]},{"teal":6139,"source":1403,"pc":[5964,5965]},{"teal":6143,"source":1404,"pc":[5966,5967]},{"teal":6144,"source":1404,"pc":[5968,5969]},{"teal":6145,"source":1404,"pc":[5970,5971]},{"teal":6146,"source":1404,"pc":[5972]},{"teal":6147,"source":1404,"pc":[5973]},{"teal":6148,"source":1404,"pc":[5974,5975]},{"teal":6152,"source":1405,"pc":[5976,5977]},{"teal":6153,"source":1405,"pc":[5978,5979]},{"teal":6154,"source":1405,"pc":[5980,5981]},{"teal":6155,"source":1405,"pc":[5982]},{"teal":6156,"source":1405,"pc":[5983]},{"teal":6157,"source":1405,"pc":[5984,5985]},{"teal":6161,"source":1406,"pc":[5986,5987]},{"teal":6162,"source":1406,"pc":[5988,5989]},{"teal":6163,"source":1406,"pc":[5990,5991]},{"teal":6164,"source":1406,"pc":[5992]},{"teal":6165,"source":1406,"pc":[5993]},{"teal":6166,"source":1406,"pc":[5994,5995]},{"teal":6170,"source":1407,"pc":[5996,5997]},{"teal":6171,"source":1407,"pc":[5998,5999]},{"teal":6172,"source":1407,"pc":[6000,6001]},{"teal":6173,"source":1407,"pc":[6002]},{"teal":6174,"source":1407,"pc":[6003]},{"teal":6175,"source":1407,"pc":[6004,6005]},{"teal":6179,"source":1408,"pc":[6006,6007]},{"teal":6180,"source":1408,"pc":[6008,6009]},{"teal":6181,"source":1408,"pc":[6010,6011]},{"teal":6182,"source":1408,"pc":[6012]},{"teal":6183,"source":1408,"pc":[6013]},{"teal":6184,"source":1408,"pc":[6014,6015]},{"teal":6188,"source":1409,"pc":[6016,6017]},{"teal":6189,"source":1409,"pc":[6018,6019]},{"teal":6190,"source":1409,"pc":[6020,6021]},{"teal":6191,"source":1409,"pc":[6022]},{"teal":6192,"source":1409,"pc":[6023]},{"teal":6193,"source":1409,"pc":[6024,6025]},{"teal":6197,"source":1410,"pc":[6026,6027]},{"teal":6200,"source":1393,"pc":[6028,6029]},{"teal":6201,"source":1393,"pc":[6030]},{"teal":6205,"source":1413,"pc":[6031,6032,6033]},{"teal":6209,"source":1417,"pc":[6034,6035,6036]},{"teal":6210,"source":1417,"pc":[6037,6038]},{"teal":6211,"source":1417,"pc":[6039,6040,6041]},{"teal":6212,"source":1417,"pc":[6042]},{"teal":6213,"source":1417,"pc":[6043]},{"teal":6214,"source":1413,"pc":[6044]},{"teal":6217,"source":50,"pc":[6045,6046,6047,6048,6049,6050]},{"teal":6218,"source":50,"pc":[6051,6052,6053]},{"teal":6219,"source":50,"pc":[6054,6055,6056,6057]},{"teal":6222,"source":50,"errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[6058]},{"teal":6225,"source":50,"pc":[6059,6060,6061,6062,6063,6064]},{"teal":6226,"source":50,"pc":[6065,6066,6067,6068,6069,6070]},{"teal":6227,"source":50,"pc":[6071,6072,6073,6074,6075,6076]},{"teal":6228,"source":50,"pc":[6077,6078,6079,6080,6081,6082]},{"teal":6229,"source":50,"pc":[6083,6084,6085,6086,6087,6088]},{"teal":6230,"source":50,"pc":[6089,6090,6091,6092,6093,6094]},{"teal":6231,"source":50,"pc":[6095,6096,6097,6098,6099,6100]},{"teal":6232,"source":50,"pc":[6101,6102,6103,6104,6105,6106]},{"teal":6233,"source":50,"pc":[6107,6108,6109,6110,6111,6112]},{"teal":6234,"source":50,"pc":[6113,6114,6115,6116,6117,6118]},{"teal":6235,"source":50,"pc":[6119,6120,6121,6122,6123,6124]},{"teal":6236,"source":50,"pc":[6125,6126,6127,6128,6129,6130]},{"teal":6237,"source":50,"pc":[6131,6132,6133,6134,6135,6136]},{"teal":6238,"source":50,"pc":[6137,6138,6139,6140,6141,6142]},{"teal":6239,"source":50,"pc":[6143,6144,6145,6146,6147,6148]},{"teal":6240,"source":50,"pc":[6149,6150,6151,6152,6153,6154]},{"teal":6241,"source":50,"pc":[6155,6156,6157,6158,6159,6160]},{"teal":6242,"source":50,"pc":[6161,6162,6163,6164,6165,6166]},{"teal":6243,"source":50,"pc":[6167,6168,6169,6170,6171,6172]},{"teal":6244,"source":50,"pc":[6173,6174,6175,6176,6177,6178]},{"teal":6245,"source":50,"pc":[6179,6180,6181,6182,6183,6184]},{"teal":6246,"source":50,"pc":[6185,6186,6187,6188,6189,6190]},{"teal":6247,"source":50,"pc":[6191,6192,6193,6194,6195,6196]},{"teal":6248,"source":50,"pc":[6197,6198,6199,6200,6201,6202]},{"teal":6249,"source":50,"pc":[6203,6204,6205,6206,6207,6208]},{"teal":6250,"source":50,"pc":[6209,6210,6211,6212,6213,6214]},{"teal":6251,"source":50,"pc":[6215,6216,6217,6218,6219,6220]},{"teal":6252,"source":50,"pc":[6221,6222,6223,6224,6225,6226]},{"teal":6253,"source":50,"pc":[6227,6228,6229,6230,6231,6232]},{"teal":6254,"source":50,"pc":[6233,6234,6235,6236,6237,6238]},{"teal":6255,"source":50,"pc":[6239,6240,6241,6242,6243,6244]},{"teal":6256,"source":50,"pc":[6245,6246,6247,6248,6249,6250]},{"teal":6257,"source":50,"pc":[6251,6252,6253,6254,6255,6256]},{"teal":6258,"source":50,"pc":[6257,6258,6259]},{"teal":6259,"source":50,"pc":[6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327]},{"teal":6262,"source":50,"errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6328]}],"clear":[]},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50IDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKTogdm9pZApjcmVhdGVBcHBsaWNhdGlvbjoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyCgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZSAweDY5NmU2OTc0IC8vICJpbml0IgoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSAwCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlID0gMAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uY3JlYXRlKGFwcHJvdmFsUHJvZ3JhbVNpemUpCglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkCiphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGE6CgkvLyBkYXRhOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gb2Zmc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoJY2FsbHN1YiBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YQoJaW50IDEKCXJldHVybgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEob2Zmc2V0OiB1aW50NjQsIGRhdGE6IGJ5dGVzKTogdm9pZApsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YToKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGUgMHg2OTZlNjk3NCAvLyAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NQoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5yZXBsYWNlKG9mZnNldCwgZGF0YSkKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50IDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlIDB4Njk2ZTY5NzQgLy8gImluaXQiCglpbnQgMQoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50IDMKCWludCAxMQoJaW50IDAKCWR1cG4gMgoJaW50IDMKCWludCAxCgljYWxsc3ViIG1pbkJhbGFuY2VGb3JBY2NvdW50CglpdG9iCgljb25jYXQKCWludCAxMDAwMDAKCWludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglpbnQgMTc5CgljYWxsc3ViIGNvc3RGb3JCb3hTdG9yYWdlCglpdG9iCgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UHJvdG9jb2xDb25zdHJhaW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKTogQ29uc3RyYWludHMKLy8KLy8gUmV0dXJucyB0aGUgcHJvdG9jb2wgY29uc3RyYWludHMgc28gdGhhdCBVSXMgY2FuIGxpbWl0IHdoYXQgdXNlcnMgc3BlY2lmeSBmb3IgdmFsaWRhdG9yIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OQoJLy8gcmV0dXJuIHsKCS8vICAgICAgICAgICAgIGVwb2NoUGF5b3V0Um91bmRzTWluOiBNSU5fRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNYXg6IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBtaW5QY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1JTl9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWF4UGN0VG9WYWxpZGF0b3JXRm91ckRlY2ltYWxzOiBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICAgICAgIG1pbkVudHJ5U3Rha2U6IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLAoJLy8gICAgICAgICAgICAgbWF4QWxnb1BlclBvb2w6IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCksCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyVmFsaWRhdG9yOiB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgYW10Q29uc2lkZXJlZFNhdHVyYXRlZDogdGhpcy5hbGdvU2F0dXJhdGlvbkxldmVsKCksCgkvLyAgICAgICAgICAgICBtYXhOb2RlczogTUFYX05PREVTLAoJLy8gICAgICAgICAgICAgbWF4UG9vbHNQZXJOb2RlOiBNQVhfUE9PTFNfUEVSX05PREUsCgkvLyAgICAgICAgICAgICBtYXhTdGFrZXJzUGVyUG9vbDogTUFYX1NUQUtFUlNfUEVSX1BPT0wsCgkvLyAgICAgICAgIH0KCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGY0MjQwMDAwMDAwMDAwMDBmNDI0MAoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAzCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMGM4Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CiphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9yczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQKCWNhbGxzdWIgZ2V0TnVtVmFsaWRhdG9ycwoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE51bVZhbGlkYXRvcnMoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkYXRvcnMKZ2V0TnVtVmFsaWRhdG9yczoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE2OQoJLy8gcmV0dXJuIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZQoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglpbnQgMAoJaW50IDI0MgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludCAyNDIgLy8gaGVhZE9mZnNldAoJaW50IDI2CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50IDgKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJY29uY2F0CglyZXRzdWIKCi8vIGdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRQb29sczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoJY2FsbHN1YiBnZXRQb29scwoJZHVwCglsZW4KCWludCAxOAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sSW5mb1tdCi8vCi8vIFJldHVybiBsaXN0IG9mIGFsbCBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZAovLyBAcmV0dXJuIHtQb29sSW5mb1tdfSAtIGFycmF5IG9mIHBvb2xzCi8vIE5vdCBjYWxsYWJsZSBmcm9tIG90aGVyIGNvbnRyYWN0cyBiZWNhdXNlID4xSyByZXR1cm4gYnV0IGNhbiBiZSBjYWxsZWQgdy8gc2ltdWxhdGUgd2hpY2ggYnVtcHMgbG9nIHJldHVybnMKZ2V0UG9vbHM6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk5CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludCAyNjggLy8gaGVhZE9mZnNldAoJaW50IDQzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDEKCS8vIHBvb2xTZXRbaV0ucG9vbEFwcElkID09PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWYwX2VuZAoKCS8vICppZjBfY29uc2VxdWVudAoJYiAqZm9yXzBfZW5kCgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDE4CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA3CgkvLyByZXR1cm4gcmV0RGF0YQoJZnJhbWVfZGlnIDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZ2V0UG9vbEFwcElkOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBwb29sSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBnZXRQb29sQXBwSWQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBnZXRQb29sQXBwSWQodmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQpOiB1aW50NjQKLy8KLy8gZ2V0UG9vbEFwcElkIGlzIHVzZWZ1bCBmb3IgY2FsbGVycyB0byBkZXRlcm1pbmUgYXBwIHRvIGNhbGwgZm9yIHJlbW92aW5nIHN0YWtlIGlmIHRoZXkgZG9uJ3QgaGF2ZSBzdGFraW5nIG9yCi8vIHdhbnQgdG8gZ2V0IHN0YWtlciBsaXN0IGZvciBhbiBhY2NvdW50LiAgVGhlIHN0YWtpbmcgcG9vbCBhbHNvIHVzZXMgaXQgdG8gZ2V0IHRoZSBhcHAgaWQgb2Ygc3Rha2luZyBwb29sIDEKLy8gKHdoaWNoIGNvbnRhaW5zIHJld2FyZCB0b2tlbnMgaWYgYmVpbmcgdXNlZCkgc28gdGhhdCB0aGUgYW1vdW50IGF2YWlsYWJsZSBjYW4gYmUgZGV0ZXJtaW5lZC4KZ2V0UG9vbEFwcElkOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjE3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglieiAqc2tpcF9hbmQwCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAyNAoJPD0KCSYmCgoqc2tpcF9hbmQwOgoJLy8gcG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sSWQgLSAxXS5wb29sQXBwSWQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXJldHN1YgoKLy8gZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCiphYmlfcm91dGVfZ2V0UG9vbEluZm86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIGdldFBvb2xJbmZvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJY2FsbHN1YiBnZXRQb29sSW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xJbmZvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sSW5mbwpnZXRQb29sSW5mbzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIyNgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglpbnQgMjE3CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50IDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY3CgkvLyAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJYnogKmlmM19lbmQKCgkvLyAqaWYzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2OAoJLy8gcmV0dXJuIFtdCglieXRlIDB4CgliICpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuCgoqaWYzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MAoJLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzEKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKCWNhbGxzdWIgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModmFsaWRhdG9ySWQ6IHVpbnQ2NCk6IE5vZGVQb29sQXNzaWdubWVudENvbmZpZwpnZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJcHJvdG8gMSAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mjk0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoJY2FsbHN1YiBnZXRORkRSZWdpc3RyeUlECglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpOiB1aW50NjQKZ2V0TkZEUmVnaXN0cnlJRDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMwMQoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZAoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0CgljYWxsc3ViIGFkZFZhbGlkYXRvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFZhbGlkYXRvcihtYnJQYXltZW50OiBQYXlUeG4sIG5mZE5hbWU6IHN0cmluZywgY29uZmlnOiBWYWxpZGF0b3JDb25maWcpOiB1aW50NjQKLy8KLy8gQWRkcyBhIG5ldyB2YWxpZGF0b3IKLy8gUmVxdWlyZXMgYXQgbGVhc3QgMTAgQUxHTyBhcyB0aGUgJ2ZlZScgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBoZWxwIGRpc3N1YWRlIHNwYW1tZWQgdmFsaWRhdG9yIGFkZHMuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgdmFsaWRhdG9yIHN0b3JhZ2UKLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgKE9wdGlvbmFsKSBOYW1lIG9mIG5mZCAodXNlZCBhcyBkb3VibGUtY2hlY2sgYWdhaW5zdCBpZCBzcGVjaWZpZWQgaW4gY29uZmlnKQovLyBAcGFyYW0ge1ZhbGlkYXRvckNvbmZpZ30gY29uZmlnIFZhbGlkYXRvckNvbmZpZyBzdHJ1Y3QKLy8gQHJldHVybnMge3VpbnQ2NH0gdmFsaWRhdG9yIGlkCmFkZFZhbGlkYXRvcjoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzEzCgkvLyB0aGlzLnZhbGlkYXRlQ29uZmlnKGNvbmZpZykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJY2FsbHN1YiB2YWxpZGF0ZUNvbmZpZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNQoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNwoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCWludCAxMDAwMDAwMAoJPgoKCS8vIGZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gdmFsaWRhdG9ySWQgPSB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgKyAxCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuY3JlYXRlKCkKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaW50IDEwOTIKCWJveF9jcmVhdGUKCXBvcAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcgPSBjb25maWcKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmlkID0gdmFsaWRhdG9ySWQKCWludCAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGUgMHg2OTJlNmY3NzZlNjU3MjJlNjEgLy8gImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM4CgkvLyBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCWJ5dGUgMHhhOGRkMjFjYiAvLyByZXRpT1BfYWRkZWRWYWxpZGF0b3IodWludDY0LGFkZHJlc3MsYWRkcmVzcykKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXI6CgkvLyBtYW5hZ2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1hbmFnZXIpIGZvciBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcgoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBtYW5hZ2VyOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBWYWxpZGF0b3IgbWFuYWdlciBmb3IgYSBzcGVjaWZpYyBWYWxpZGF0b3IgaWQuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gY2hhbmdlIHRoZSBtYW5hZ2VyIGZvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBtYW5hZ2VyIC0gVGhlIG5ldyBtYW5hZ2VyIGFkZHJlc3MuCmNoYW5nZVZhbGlkYXRvck1hbmFnZXI6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTkKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MAoJLy8gYXNzZXJ0KG1hbmFnZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MsICduZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzJykKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gbmVlZHMgdG8gYXQgbGVhc3QgYmUgdmFsaWQgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyID0gbWFuYWdlcgoJaW50IDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCS8vIHN1bnNldHRpbmdUbzogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Vuc2V0dGluZ09uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbwoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdW5zZXR0aW5nT246IHVpbnQ2NCwgc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUpOiB2b2lkCi8vCi8vIFVwZGF0ZXMgdGhlIHN1bnNldCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiB2YWxpZGF0b3IuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ09uIC0gVGhlIG5ldyBzdW5zZXQgdGltZXN0YW1wLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ1RvIC0gVGhlIG5ldyBzdW5zZXQgdG8gdmFsaWRhdG9yIGlkLgpjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzczCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzQKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50IDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ1RvID0gc3Vuc2V0dGluZ1RvCglpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEOgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIG5mZEFwcElEOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JORkQKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBuZmRBcHBJRDogdWludDY0LCBuZmROYW1lOiBzdHJpbmcpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIE5GRCBmb3IgYSB2YWxpZGF0b3IgaW4gdGhlIHZhbGlkYXRvckxpc3QgY29udHJhY3QuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIE5GRCB0byBhc3NpZ24gdG8gdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgTkZEICh3aGljaCBtdXN0IG1hdGNoKQpjaGFuZ2VWYWxpZGF0b3JORkQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OQoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozOTEKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludCA3MgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDAzCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDQKCS8vIGFzc2VydChjb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglpbnQgMTc3CglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjAKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgRW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgRW50cnlHYXRpbmdUeXBlIDwgR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgICAgICAgJ2ludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPAoJJiYKCipza2lwX2FuZDE6CgkvLyBpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlCglhc3NlcnQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI2CgkvLyBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDEKCT09CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI3CgkvLyBhc3NlcnQoRW50cnlHYXRpbmdBZGRyZXNzICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoqaWY3X2VuZDoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzAKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICAgICAgICBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludCA4MAoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglpbnQgODEKCWZyYW1lX2RpZyAtMyAvLyBFbnRyeUdhdGluZ0FkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWZyYW1lX2RpZyAtNSAvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJaW50IDE2MQoJZnJhbWVfZGlnIC02IC8vIFJld2FyZFBlclBheW91dDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAobWJyUGF5bWVudCkgZm9yIGFkZFBvb2wgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkUG9vbAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFBvb2wobWJyUGF5bWVudDogUGF5VHhuLCB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBub2RlTnVtOiB1aW50NjQpOiBWYWxpZGF0b3JQb29sS2V5Ci8vCi8vIEFkZHMgYSBuZXcgcG9vbCB0byBhIHZhbGlkYXRvcidzIHBvb2wgc2V0LCByZXR1cm5pbmcgdGhlICdrZXknIHRvIHJlZmVyZW5jZSB0aGUgcG9vbCBpbiB0aGUgZnV0dXJlIGZvciBzdGFraW5nLCBldGMuCi8vIFRoZSBjYWxsZXIgbXVzdCBwYXkgdGhlIGNvc3Qgb2YgdGhlIHZhbGlkYXRvcnMgTUJSIGluY3JlYXNlIGFzIHdlbGwgYXMgdGhlIE1CUiB0aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgcG9vbCBpdHNlbGYuCi8vCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBjYWxsIF0KLy8gQHBhcmFtIHtQYXlUeG59IG1iclBheW1lbnQgcGF5bWVudCBmcm9tIGNhbGxlciB3aGljaCBjb3ZlcnMgbWJyIGluY3JlYXNlIG9mIGFkZGluZyBhIG5ldyBwb29sCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCBpcyBpZCBvZiB2YWxpZGF0b3IgdG8gcG9vbCB0byAobXVzdCBiZSBvd25lciBvciBtYW5hZ2VyKQovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bSBpcyBub2RlIG51bWJlciB0byBhZGQgdG8KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2wga2V5IHRvIGNyZWF0ZWQgcG9vbAphZGRQb29sOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NAoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU3CgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiB0aGlzLmdldE1ickFtb3VudHMoKS5hZGRQb29sTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTkKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY5CgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnQgMCAvLyBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCAwCglpbnQgNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCA0MDk2CglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfbGVuCgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUKCWFzc2VydAoJaW50IDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCWJ5dGUgYjY0IEN3PT0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzUKCS8vIGdsb2JhbE51bVVpbnQ6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtVWludAoJaW50IDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzYKCS8vIGdsb2JhbE51bUJ5dGVTbGljZTogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UKCWludCAzCglpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NwoJLy8gZXh0cmFQcm9ncmFtUGFnZXM6IDMKCWludCAzCglpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc4CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyBjcmVhdGluZ0NvbnRyYWN0SUQsIHZhbGlkYXRvcklkLCBwb29sSWQsIG1pbkVudHJ5U3Rha2UKCS8vICAgICAgICAgICAgICAgICBtZXRob2QoJ2NyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkJyksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih2YWxpZGF0b3JJZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYihudW1Qb29scyBhcyB1aW50NjQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICAgICAgICBdCgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnQgMjA5CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyA9IG51bVBvb2xzIGFzIHVpbnQxNgoJaW50IDI0MgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDkxCgkvLyBwb29sQXBwSWQgPSB0aGlzLml0eG4uY3JlYXRlZEFwcGxpY2F0aW9uSUQuaWQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWZyYW1lX2J1cnkgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tudW1Qb29scyAtIDFdLnBvb2xBcHBJZCA9IHBvb2xBcHBJZAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCWJ5dGUgMHhmYmNjMGY2YiAvLyByZXRpT1BfdmFsaWRhdG9yQWRkZWRQb29sKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnQgMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA1CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglpbnQgMTQ0Cglib3hfY3JlYXRlCglwb3AKCippZjExX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKyByZWFsQW1vdW50IDwgdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSwKCS8vICAgICAgICAgICAgICd0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAnLAoJLy8gICAgICAgICApCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJKwoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OAoJLy8gZmluZFJldCA9IHRoaXMuZmluZFBvb2xGb3JTdGFrZXIodmFsaWRhdG9ySWQsIHN0YWtlciwgcmVhbEFtb3VudCkKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJZnJhbWVfYnVyeSAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NTkKCS8vIHBvb2xLZXkgPSBmaW5kUmV0WzBdCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYyCgkvLyBwb29sS2V5LnBvb2xJZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEyX2VuZAoKCS8vICppZjEyX2NvbnNlcXVlbnQKCS8vIE5vIHBvb2wgYXZhaWxhYmxlIHdpdGggZnJlZSBzdGFrZS4gIFZhbGlkYXRvciBuZWVkcyB0byBhZGQgYW5vdGhlciBwb29sCgllcnIKCippZjEyX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2NwoJLy8gdGhpcy51cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlciwgcG9vbEtleSkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY2FsbHN1YiB1cGRhdGVTdGFrZXJQb29sU2V0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTcwCgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgICAgICAgcG9vbEtleSwKCS8vICAgICAgICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCWZyYW1lX2RpZyA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJY2FsbHN1YiBjYWxsUG9vbEFkZFN0YWtlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTc3CgkvLyB0aGlzLnJldGlPUF9zdGFrZUFkZGVkLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogdmFsaWRhdG9ySWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYW1vdW50U3Rha2VkOiByZWFsQW1vdW50LAoJLy8gICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgIH0pCglieXRlIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglpdG9iCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTg1CgkvLyByZXR1cm4gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gOAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNQoJLy8gcG9vbDFBcHBJRCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkCglpbnQgMjY4CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTUKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNgoJLy8gbGFzdFBheW91dFVwZGF0ZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby51cGRhdGVkRm9yUGF5b3V0CglpbnQgODkyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCgkvLyAqaWYxNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNwoJLy8gbGFzdFBheW91dFVwZGF0ZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglpbnQgMAoJIT0KCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vICppZjE1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE5CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjIKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJaW50IDE2OQoJaW50IDQKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNQoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTZfZW5kCgoJLy8gKmlmMTZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI2CgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvCglpbnQgNzAwIC8vIGhlYWRPZmZzZXQKCWludCAyMDAKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnQgODkyCglmcmFtZV9kaWcgMSAvLyBjdXJSb3VuZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50IDI0MgoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnQgMV8wMDBfMDAwCgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVtpXSA9IG91clBvb2xQY3RPZldob2xlCglpbnQgNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50IDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAxMCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayArPSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkCglpbnQgMjYwCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NQoJLy8gdGhpcy5yZXZlcmlmeU5GRE93bmVyc2hpcChwb29sS2V5LmlkKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgljYWxsc3ViIHJldmVyaWZ5TkZET3duZXJzaGlwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc3CgkvLyB0aGlzLnJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZS5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYWxnb0FkZGVkOiBhbGdvVG9BZGQsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkhlbGRCYWNrOiByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkLAoJLy8gICAgICAgICAgICAgc2F0dXJhdGVkQnVyblRvRmVlU2luazogc2F0dXJhdGVkQnVyblRvRmVlU2luaywKCS8vICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb246IHZhbGlkYXRvckNvbW1pc3Npb24sCgkvLyAgICAgICAgIH0pCglieXRlIDB4YjNlNDdjM2QgLy8gcmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlKHVpbnQ2NCx1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNSAvLyBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZDoKCS8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXJSZW1vdmVkKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBib29sCglhc3NlcnQKCWludCAwCglnZXRiaXQKCgkvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMyAoc3Rha2VyKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoJY2FsbHN1YiBzdGFrZVJlbW92ZWQKCWludCAxCglyZXR1cm4KCi8vIHN0YWtlUmVtb3ZlZChwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NCwgcmV3YXJkUmVtb3ZlZDogdWludDY0LCBzdGFrZXJSZW1vdmVkOiBib29sZWFuKTogdm9pZAovLwovLyBzdGFrZVJlbW92ZWQgaXMgY2FsbGVkIGJ5IFN0YWtpbmcgcG9vbHMgdG8gaW5mb3JtIHRoZSB2YWxpZGF0b3IgKHVzKSB0aGF0IGEgcGFydGljdWxhciBhbW91bnQgb2YgdG90YWwgc3Rha2UgaGFzIGJlZW4gcmVtb3ZlZAovLyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIElmIGFueSBhbW91bnQgb2YgcmV3YXJkUmVtb3ZlZCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhhdCBhbW91bnQgb2YgcmV3YXJkIGlzIHNlbnQgdG8gdGhlIHVzZQovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgY2FsbGluZyB1cyBmcm9tIHdoaWNoIHN0YWtlIHdhcyByZW1vdmVkCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRSZW1vdmVkIC0gYWxnbyBhbW91bnQgcmVtb3ZlZAovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkUmVtb3ZlZCAtIGlmIGFwcGxpY2FibGUsIGFtb3VudCBvZiB0b2tlbiByZXdhcmQgcmVtb3ZlZCAoYnkgcG9vbCAxIGNhbGxlcikgb3IgVE8gcmVtb3ZlIGFuZCBwYXkgb3V0ICh2aWEgcG9vbCAxIGZyb20gZGlmZmVyZW50IHBvb2wgY2FsbGVyKQovLyBAcGFyYW0ge2Jvb2xlYW59IHN0YWtlclJlbW92ZWQKc3Rha2VSZW1vdmVkOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vICppZjE3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA3CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxN19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTAKCS8vIHRoaXMudmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWNhbGxzdWIgdmVyaWZ5UG9vbEtleUNhbGxlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxNAoJLy8gYXNzZXJ0KGFtb3VudFJlbW92ZWQgPiAwIHx8IHJld2FyZFJlbW92ZWQgPiAwLCAnc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkJykKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+CglkdXAKCWJueiAqc2tpcF9vcjIKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+Cgl8fAoKKnNraXBfb3IyOgoJLy8gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gKmlmMThfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjEKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMThfZWxzZQoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMgoJLy8gcmV3YXJkVG9rZW5JRCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMwoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSUQgIT09IDAsICJyZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpbnQgMAoJIT0KCgkvLyByZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyNAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrID49IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgJ3Jld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgICAgICkKCWludCAyNjAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCT49CgoJLy8gcmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczMAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgLT0gcmV3YXJkUmVtb3ZlZAoJaW50IDI2MAoJZHVwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZCkKCWludCAyNjgKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczOAoJLy8gbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0KCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjE5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc0MQoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VSZW1vdmVkLmxvZyh7CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgYW1vdW50VW5zdGFrZWQ6IGFtb3VudFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JRCksCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWIgKmlmMThfZW5kCgoqaWYxOF9lbHNlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzUxCgkvLyB0aGlzLnJldGlPUF9zdGFrZVJlbW92ZWQubG9nKHsKCS8vICAgICAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICBzdGFrZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICBhbW91bnRVbnN0YWtlZDogYW1vdW50UmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAvLyBubyB0b2tlbnMgcmV3YXJkZWQuLgoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC56ZXJvSW5kZXgsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IDAsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludCAyNDQKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzkKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wKCWZyYW1lX2RpZyAzIC8vIHN0YWtlck91dE9mUHJvdG9jb2w6IGJvb2wKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc4MAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNgoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDYKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjRfZW5kOgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjEKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjI1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNAoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmFsc2UKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjUKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNwoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyOQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sU2V0W2ldLnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgOCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMzCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF0KCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjdfZW5kOgoKKmlmMjZfZW5kOgoKKmZvcl8zX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJaW50IDIwOQoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ2CgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWludCA0MzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ3CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl80OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ5CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlIDB4MDAKCWludCAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludCAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50IDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzYKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgOAoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc4CgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCA8IE1BWF9OT0RFUwoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgOAoJPAoJYnogKmZvcl81X2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MAoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID09PSBwb29sQXBwSWQKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MQoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50IDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODgzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludCA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4NgoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODg3CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MQoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyOV9lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggKz0gMQoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgkvLyBjb3VsZG4ndCBmaW5kIHBvb2wgYXBwIGlkIGluIG5vZGVzIHRvIG1vdmUKCWVycgoJcmV0c3ViCgovLyBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAocmVjZWl2ZXIpIGZvciBlbXB0eVRva2VuUmV3YXJkcyBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGVtcHR5VG9rZW5SZXdhcmRzCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZW1wdHlUb2tlblJld2FyZHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcmVjZWl2ZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gU2VuZHMgdGhlIHJld2FyZCB0b2tlbnMgaGVsZCBpbiBwb29sIDEgdG8gc3BlY2lmaWVkIHJlY2VpdmVyLgovLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIG93bmVyIHdoZW4gdGhleSB3YW50IHRvIGdldCByZXdhcmQgdG9rZW5zICdiYWNrJyB3aGljaCB0aGV5IHNlbnQgdG8KLy8gdGhlIGZpcnN0IHBvb2wgKGxpa2VseSBiZWNhdXNlIHZhbGlkYXRvciBpcyBzdW5zZXR0aW5nLiAgQW55IHRva2VucyBjdXJyZW50bHkgJ3Jlc2VydmVkJyBmb3Igc3Rha2VycyB0byBjbGFpbSB3aWxsCi8vIE5PVCBiZSBzZW50IGFzIHRoZXkgbXVzdCBiZSBoZWxkIGJhY2sgZm9yIHN0YWtlcnMgdG8gbGF0ZXIgY2xhaW0uCi8vIFsgT05MWSBPV05FUiBDQU4gQ0FMTF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gcmVjZWl2ZXIgLSB0aGUgYWNjb3VudCB0byBzZW5kIHRoZSB0b2tlbnMgdG8gKG11c3QgYWxyZWFkeSBiZSBvcHRlZC1pbiB0byB0aGUgcmV3YXJkIHRva2VuKQovLyBAcmV0dXJucyB7dWludDY0fSB0aGUgYW1vdW50IG9mIHJld2FyZCB0b2tlbiBzZW50CmVtcHR5VG9rZW5SZXdhcmRzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxMQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEyCgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEzCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrCglpbnQgMjYwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTQKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnQgMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE1CgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50IDI2OAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTcKCS8vIHRva2VuUmV3YXJkQmFsID0KCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkyMQoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5wYXlUb2tlblJld2FyZD4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3JlY2VpdmVyLCByZXdhcmRUb2tlbklkLCB0b2tlblJld2FyZEJhbF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDI5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyIHx8CgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWludCA4CglpbnQgMzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnQgNDAKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyB2ZXJpZnlQb29sS2V5Q2FsbGVyIHZlcmlmaWVzIHRoZSBwYXNzZWQgaW4ga2V5IChmcm9tIGEgc3Rha2luZyBwb29sIGNhbGxpbmcgdXMgdG8gdXBkYXRlIG1ldHJpY3MpIGlzIHZhbGlkCi8vIGFuZCBtYXRjaGVzIHRoZSBpbmZvcm1hdGlvbiB3ZSBoYXZlIGluIG91ciBzdGF0ZS4gICdGYWtlJyBwb29scyBjb3VsZCBjYWxsIHVzIHRvIHVwZGF0ZSBvdXIgZGF0YSwgYnV0IHRoZXkKLy8gY2FuJ3QgZmFrZSB0aGUgaWRzIGFuZCBtb3N0IGltcG9ydGFudGx5IGFwcGxpY2F0aW9uIGlkKCEpIG9mIHRoZSBjYWxsZXIgdGhhdCBoYXMgdG8gbWF0Y2guCnZlcmlmeVBvb2xLZXlDYWxsZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQyCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBhc3NlcnQocG9vbEtleS5pZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCd2YWxpZGF0b3JJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OAoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjkKCS8vIHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvICE9PSAwCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMF9lbmQKCgkvLyAqaWYzMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDcyCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzQKCS8vIHZhbGlkYXRvckNvbmZpZy5vd25lciAhPT0gbmZkT3duZXIgJiYgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIgIT09IG5mZE93bmVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnQgNzIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDkxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA+PSBNSU5fRVBPQ0hfTEVOR1RIICYmIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIDw9IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICAnZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA+PSBNSU5fUENUX1RPX1ZBTElEQVRPUiAmJiBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yIDw9IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgJ2NvbW1pc3Npb24gcGVyY2VudGFnZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ3CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludCAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMDcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXInLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludCAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50IDMKCTw9CgkmJgoKKnNraXBfYW5kODoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTExMQoJLy8gY29uZmlnLnN1bnNldHRpbmdPbiAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTIKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMzX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzNAoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQzCgkvLyByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWl0eG5fbmV4dAoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTM5CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQwCgkvLyBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDgKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgNTAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYzNF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTUzCgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsU3Rha2VycyA9IHBvb2xOdW1TdGFrZXJzIGFzIHVpbnQxNgoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCA9IHBvb2xBbGdvU3Rha2VkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnQgMjQ0CglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAxCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sCglmcmFtZV9kaWcgLTUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuCglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkrCglieXRlIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgLy8gIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludCAyNTIKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTY2CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzAKCS8vIGFzc2VydCh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMpCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3MgoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDEKCS0KCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyByZW1vdmVGcm9tU3Rha2VyUG9vbFNldChzdGFrZXI6IEFkZHJlc3MsIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBbYm9vbGVhbiwgYm9vbGVhbl0KLy8KLy8gUmVtb3ZlcyBhIHBvb2wga2V5IGZyb20gdGhlIHN0YWtlcidzIGFjdGl2ZSBwb29sIHNldCAtIGZhaWxzIGlmIG5vdCBmb3VuZCAoISkKLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUgcG9vbCBrZXkgdGhleSBzaG91bGQgYmUgc3RvcmVkIGluCi8vCi8vIEByZXR1cm4gW2Jvb2xlYW4sIGJvb2xlYW5dIFtpcyB0aGUgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHMgb2YgdGhlIGdpdmVuIFZBTElEQVRPUiwgYW5kIGlzIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzXQpyZW1vdmVGcm9tU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk5CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMAoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAxCgkvLyBmb3VuZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl84OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNQoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0MF9lbmQKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwOAoJLy8gaW5BbnlQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA5CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWY0MV9lbmQKCgkvLyAqaWY0MV9jb25zZXF1ZW50CgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDJfZWxzZQoKCS8vICppZjQyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTEKCS8vIGZvdW5kID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTMKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0Ml9lbmQKCippZjQyX2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzgKCipmb3JfOF9lbmQ6CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTkKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyMwoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXQoJYnl0ZSAweDAwCglpbnQgMAoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAwCgk9PQoJc2V0Yml0CglpbnQgMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDAKCT09CglzZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIGFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKYWRkUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJaW50IDIyNQoJaW50IDEKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJLQoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludCA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgktCglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50IDgwCglpbnQgMQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50IDAKCWludCAyNDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0Nl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRCB8fAoJLy8gICAgICAgICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50IDEKCT09CglkdXAKCWJueiAqc2tpcF9vcjQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50IDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAyCgk9PQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MAoJLy8gZm91bmQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MgoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MwoJLy8gZm91bmQgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgliICpmb3JPZl8wX2VuZAoKKmlmNTBfZW5kOgoKKmZvck9mXzBfY29udGludWU6CgkvLyBpbmNyZW1lbnQgb2Zmc2V0IGFuZCBsb29wIGlmIG5vdCBvdXQgb2YgYm91bmRzCglmcmFtZV9kaWcgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoJaW50IDgKCSsKCWR1cAoJaW50IDMyIC8vIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnQgOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0OV9lbmQ6CgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAzCgk9PQoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNTFfZW5kOgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk3CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxMAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTJfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOQoJLy8gdXNlck9mZmVyZWRORkROYW1lID0gQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpIGFzIHN0cmluZwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiaXNWYWxpZE5mZEFwcElkKHN0cmluZyx1aW50NjQpYm9vbCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglsb2FkIDIwMCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnQgMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDkKCS8vIGFwcGxpY2F0aW9uQXJnczogWydyZWFkX3Byb3BlcnR5JywgJ3YuY2FBbGdvLjAuYXMnXQoJYnl0ZSAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWJ5dGUgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjYUFsZ29EYXRhLmxlbmd0aDsgaSArPSAzMikKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgoqZm9yXzEwOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTMKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU0CgkvLyBhZGRyICE9PSByYXdCeXRlcyhnbG9iYWxzLnplcm9BZGRyZXNzKSAmJiBhZGRyID09PSByYXdCeXRlcyhhZGRyVG9GaW5kKQoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDExCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWZyYW1lX2RpZyAtMiAvLyBhZGRyVG9GaW5kOiBBZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDExOgoJYnogKmlmNTNfZW5kCgoJLy8gKmlmNTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1NQoJLy8gcmV0dXJuIHRydWUKCWludCAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1M19lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSArPSAzMgoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCSsKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCWIgKmZvcl8xMAoKKmZvcl8xMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU4CgkvLyByZXR1cm4gZmFsc2UKCWludCAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfSEFSRF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxNTAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludCAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIG1pbkJhbCArPSBjb250cmFjdHMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyBjb250cmFjdHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNAoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludCAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNgoJLy8gbWluQmFsICs9IGxvY2FsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC00IC8vIGxvY2FsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDcKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA5CgkvLyBtaW5CYWwgKz0gZ2xvYmFsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTcgLy8gZ2xvYmFsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDEwCgkvLyByZXR1cm4gbWluQmFsCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDE3CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEUKCWludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCgltZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCW1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCgltZXRob2QgImdhcygpdm9pZCIKCW1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCgltZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCW1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCgltZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCgltZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCgltZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCW1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCW1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCW1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCW1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCW1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/validatorRegistry.algo.ts:50","pc":[1,2]},{"teal":16,"source":"contracts/validatorRegistry.algo.ts:50","pc":[3]},{"teal":17,"source":"contracts/validatorRegistry.algo.ts:50","pc":[4,5]},{"teal":18,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6]},{"teal":19,"source":"contracts/validatorRegistry.algo.ts:50","pc":[7,8]},{"teal":20,"source":"contracts/validatorRegistry.algo.ts:50","pc":[9]},{"teal":21,"source":"contracts/validatorRegistry.algo.ts:50","pc":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]},{"teal":25,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[36]},{"teal":30,"source":"contracts/validatorRegistry.algo.ts:81","pc":[37,38,39]},{"teal":31,"source":"contracts/validatorRegistry.algo.ts:81","pc":[40]},{"teal":32,"source":"contracts/validatorRegistry.algo.ts:81","pc":[41]},{"teal":36,"source":"contracts/validatorRegistry.algo.ts:81","pc":[42,43,44]},{"teal":40,"source":"contracts/validatorRegistry.algo.ts:82","pc":[45,46]},{"teal":41,"source":"contracts/validatorRegistry.algo.ts:82","pc":[47]},{"teal":42,"source":"contracts/validatorRegistry.algo.ts:82","pc":[48,49]},{"teal":43,"source":"contracts/validatorRegistry.algo.ts:82","pc":[50]},{"teal":44,"source":"contracts/validatorRegistry.algo.ts:82","pc":[51,52]},{"teal":45,"source":"contracts/validatorRegistry.algo.ts:82","pc":[53]},{"teal":46,"source":"contracts/validatorRegistry.algo.ts:82","pc":[54]},{"teal":50,"source":"contracts/validatorRegistry.algo.ts:83","pc":[55,56]},{"teal":51,"source":"contracts/validatorRegistry.algo.ts:83","pc":[57]},{"teal":52,"source":"contracts/validatorRegistry.algo.ts:83","pc":[58]},{"teal":56,"source":"contracts/validatorRegistry.algo.ts:84","pc":[59,60]},{"teal":57,"source":"contracts/validatorRegistry.algo.ts:84","pc":[61]},{"teal":58,"source":"contracts/validatorRegistry.algo.ts:84","pc":[62]},{"teal":62,"source":"contracts/validatorRegistry.algo.ts:85","pc":[63,64]},{"teal":63,"source":"contracts/validatorRegistry.algo.ts:85","pc":[65]},{"teal":64,"source":"contracts/validatorRegistry.algo.ts:85","pc":[66]},{"teal":65,"source":"contracts/validatorRegistry.algo.ts:81","pc":[67]},{"teal":70,"source":"contracts/validatorRegistry.algo.ts:88","pc":[68,69,70]},{"teal":71,"source":"contracts/validatorRegistry.algo.ts:88","pc":[71]},{"teal":74,"source":"contracts/validatorRegistry.algo.ts:88","pc":[72,73,74]},{"teal":75,"source":"contracts/validatorRegistry.algo.ts:88","pc":[75]},{"teal":76,"source":"contracts/validatorRegistry.algo.ts:88","pc":[76]},{"teal":80,"source":"contracts/validatorRegistry.algo.ts:88","pc":[77,78,79]},{"teal":84,"source":"contracts/validatorRegistry.algo.ts:90","pc":[80,81]},{"teal":85,"source":"contracts/validatorRegistry.algo.ts:90","pc":[82,83]},{"teal":86,"source":"contracts/validatorRegistry.algo.ts:90","pc":[84]},{"teal":87,"source":"contracts/validatorRegistry.algo.ts:90","pc":[85]},{"teal":88,"source":"contracts/validatorRegistry.algo.ts:88","pc":[86]},{"teal":93,"source":"contracts/validatorRegistry.algo.ts:93","pc":[87,88,89]},{"teal":94,"source":"contracts/validatorRegistry.algo.ts:93","pc":[90,91,92]},{"teal":97,"source":"contracts/validatorRegistry.algo.ts:93","pc":[93,94,95]},{"teal":98,"source":"contracts/validatorRegistry.algo.ts:93","pc":[96]},{"teal":101,"source":"contracts/validatorRegistry.algo.ts:93","pc":[97,98,99]},{"teal":102,"source":"contracts/validatorRegistry.algo.ts:93","pc":[100]},{"teal":103,"source":"contracts/validatorRegistry.algo.ts:93","pc":[101]},{"teal":107,"source":"contracts/validatorRegistry.algo.ts:93","pc":[102,103,104]},{"teal":111,"source":"contracts/validatorRegistry.algo.ts:94","pc":[105,106]},{"teal":112,"source":"contracts/validatorRegistry.algo.ts:94","pc":[107]},{"teal":113,"source":"contracts/validatorRegistry.algo.ts:94","pc":[108]},{"teal":114,"source":"contracts/validatorRegistry.algo.ts:94","pc":[109]},{"teal":115,"source":"contracts/validatorRegistry.algo.ts:94","pc":[110]},{"teal":116,"source":"contracts/validatorRegistry.algo.ts:94","pc":[111]},{"teal":120,"source":"contracts/validatorRegistry.algo.ts:95","pc":[112,113]},{"teal":121,"source":"contracts/validatorRegistry.algo.ts:95","pc":[114,115]},{"teal":122,"source":"contracts/validatorRegistry.algo.ts:95","pc":[116,117]},{"teal":123,"source":"contracts/validatorRegistry.algo.ts:95","pc":[118]},{"teal":124,"source":"contracts/validatorRegistry.algo.ts:93","pc":[119]},{"teal":129,"source":"contracts/validatorRegistry.algo.ts:98","pc":[120,121,122]},{"teal":130,"source":"contracts/validatorRegistry.algo.ts:98","pc":[123]},{"teal":131,"source":"contracts/validatorRegistry.algo.ts:98","pc":[124]},{"teal":135,"source":"contracts/validatorRegistry.algo.ts:98","pc":[125,126,127]},{"teal":139,"source":"contracts/validatorRegistry.algo.ts:99","pc":[128,129]},{"teal":140,"source":"contracts/validatorRegistry.algo.ts:99","pc":[130]},{"teal":141,"source":"contracts/validatorRegistry.algo.ts:99","pc":[131,132]},{"teal":142,"source":"contracts/validatorRegistry.algo.ts:99","pc":[133]},{"teal":143,"source":"contracts/validatorRegistry.algo.ts:99","pc":[134,135]},{"teal":144,"source":"contracts/validatorRegistry.algo.ts:99","pc":[136]},{"teal":145,"source":"contracts/validatorRegistry.algo.ts:99","pc":[137]},{"teal":146,"source":"contracts/validatorRegistry.algo.ts:98","pc":[138]},{"teal":151,"source":"contracts/validatorRegistry.algo.ts:105","pc":[139,140,141]},{"teal":152,"source":"contracts/validatorRegistry.algo.ts:105","pc":[142]},{"teal":153,"source":"contracts/validatorRegistry.algo.ts:105","pc":[143]},{"teal":159,"source":"contracts/validatorRegistry.algo.ts:105","pc":[144,145,146]},{"teal":160,"source":"contracts/validatorRegistry.algo.ts:105","pc":[147]},{"teal":165,"source":"contracts/validatorRegistry.algo.ts:116","pc":[148]},{"teal":168,"source":"contracts/validatorRegistry.algo.ts:116","pc":[149,150,151]},{"teal":169,"source":"contracts/validatorRegistry.algo.ts:116","pc":[152]},{"teal":170,"source":"contracts/validatorRegistry.algo.ts:116","pc":[153]},{"teal":171,"source":"contracts/validatorRegistry.algo.ts:116","pc":[154]},{"teal":172,"source":"contracts/validatorRegistry.algo.ts:116","pc":[155]},{"teal":184,"source":"contracts/validatorRegistry.algo.ts:116","pc":[156,157,158]},{"teal":209,"source":"contracts/validatorRegistry.algo.ts:121","pc":[159,160,161]},{"teal":210,"source":"contracts/validatorRegistry.algo.ts:121","pc":[162,163,164]},{"teal":211,"source":"contracts/validatorRegistry.algo.ts:121","pc":[165]},{"teal":212,"source":"contracts/validatorRegistry.algo.ts:131","pc":[166,167]},{"teal":213,"source":"contracts/validatorRegistry.algo.ts:130","pc":[168,169]},{"teal":214,"source":"contracts/validatorRegistry.algo.ts:129","pc":[170]},{"teal":215,"source":"contracts/validatorRegistry.algo.ts:129","pc":[171,172]},{"teal":216,"source":"contracts/validatorRegistry.algo.ts:126","pc":[173,174]},{"teal":217,"source":"contracts/validatorRegistry.algo.ts:123","pc":[175]},{"teal":218,"source":"contracts/validatorRegistry.algo.ts:122","pc":[176,177,178]},{"teal":219,"source":"contracts/validatorRegistry.algo.ts:122","pc":[179]},{"teal":220,"source":"contracts/validatorRegistry.algo.ts:122","pc":[180]},{"teal":221,"source":"contracts/validatorRegistry.algo.ts:134","pc":[181,182]},{"teal":222,"source":"contracts/validatorRegistry.algo.ts:135","pc":[183,184,185]},{"teal":223,"source":"contracts/validatorRegistry.algo.ts:135","pc":[186,187,188]},{"teal":224,"source":"contracts/validatorRegistry.algo.ts:134","pc":[189]},{"teal":225,"source":"contracts/validatorRegistry.algo.ts:134","pc":[190]},{"teal":226,"source":"contracts/validatorRegistry.algo.ts:134","pc":[191]},{"teal":227,"source":"contracts/validatorRegistry.algo.ts:139","pc":[192,193,194]},{"teal":228,"source":"contracts/validatorRegistry.algo.ts:138","pc":[195,196,197]},{"teal":229,"source":"contracts/validatorRegistry.algo.ts:138","pc":[198]},{"teal":230,"source":"contracts/validatorRegistry.algo.ts:138","pc":[199]},{"teal":231,"source":"contracts/validatorRegistry.algo.ts:116","pc":[200]},{"teal":236,"source":"contracts/validatorRegistry.algo.ts:147","pc":[201]},{"teal":239,"source":"contracts/validatorRegistry.algo.ts:147","pc":[202,203,204]},{"teal":240,"source":"contracts/validatorRegistry.algo.ts:147","pc":[205]},{"teal":241,"source":"contracts/validatorRegistry.algo.ts:147","pc":[206]},{"teal":242,"source":"contracts/validatorRegistry.algo.ts:147","pc":[207]},{"teal":243,"source":"contracts/validatorRegistry.algo.ts:147","pc":[208]},{"teal":249,"source":"contracts/validatorRegistry.algo.ts:147","pc":[209,210,211]},{"teal":265,"source":"contracts/validatorRegistry.algo.ts:154","pc":[212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253]},{"teal":266,"source":"contracts/validatorRegistry.algo.ts:155","pc":[254,255,256]},{"teal":267,"source":"contracts/validatorRegistry.algo.ts:155","pc":[257]},{"teal":268,"source":"contracts/validatorRegistry.algo.ts:155","pc":[258]},{"teal":269,"source":"contracts/validatorRegistry.algo.ts:156","pc":[259,260,261]},{"teal":270,"source":"contracts/validatorRegistry.algo.ts:156","pc":[262]},{"teal":271,"source":"contracts/validatorRegistry.algo.ts:156","pc":[263]},{"teal":272,"source":"contracts/validatorRegistry.algo.ts:157","pc":[264,265,266]},{"teal":273,"source":"contracts/validatorRegistry.algo.ts:157","pc":[267]},{"teal":274,"source":"contracts/validatorRegistry.algo.ts:157","pc":[268]},{"teal":275,"source":"contracts/validatorRegistry.algo.ts:158","pc":[269,270,271,272,273,274,275,276,277,278]},{"teal":276,"source":"contracts/validatorRegistry.algo.ts:158","pc":[279]},{"teal":277,"source":"contracts/validatorRegistry.algo.ts:159","pc":[280,281,282,283,284,285,286,287,288,289]},{"teal":278,"source":"contracts/validatorRegistry.algo.ts:159","pc":[290]},{"teal":279,"source":"contracts/validatorRegistry.algo.ts:160","pc":[291,292,293,294,295,296,297,298,299,300]},{"teal":280,"source":"contracts/validatorRegistry.algo.ts:160","pc":[301]},{"teal":281,"source":"contracts/validatorRegistry.algo.ts:147","pc":[302]},{"teal":286,"source":"contracts/validatorRegistry.algo.ts:167","pc":[303]},{"teal":289,"source":"contracts/validatorRegistry.algo.ts:167","pc":[304,305,306]},{"teal":290,"source":"contracts/validatorRegistry.algo.ts:167","pc":[307]},{"teal":291,"source":"contracts/validatorRegistry.algo.ts:167","pc":[308]},{"teal":292,"source":"contracts/validatorRegistry.algo.ts:167","pc":[309]},{"teal":293,"source":"contracts/validatorRegistry.algo.ts:167","pc":[310]},{"teal":294,"source":"contracts/validatorRegistry.algo.ts:167","pc":[311]},{"teal":300,"source":"contracts/validatorRegistry.algo.ts:167","pc":[312,313,314]},{"teal":304,"source":"contracts/validatorRegistry.algo.ts:169","pc":[315,316]},{"teal":305,"source":"contracts/validatorRegistry.algo.ts:169","pc":[317]},{"teal":306,"source":"contracts/validatorRegistry.algo.ts:167","pc":[318]},{"teal":311,"source":"contracts/validatorRegistry.algo.ts:172","pc":[319]},{"teal":314,"source":"contracts/validatorRegistry.algo.ts:173","pc":[320,321,322]},{"teal":315,"source":"contracts/validatorRegistry.algo.ts:173","pc":[323]},{"teal":318,"source":"contracts/validatorRegistry.algo.ts:172","pc":[324,325,326]},{"teal":319,"source":"contracts/validatorRegistry.algo.ts:172","pc":[327]},{"teal":320,"source":"contracts/validatorRegistry.algo.ts:172","pc":[328]},{"teal":321,"source":"contracts/validatorRegistry.algo.ts:172","pc":[329]},{"teal":322,"source":"contracts/validatorRegistry.algo.ts:172","pc":[330]},{"teal":326,"source":"contracts/validatorRegistry.algo.ts:172","pc":[331,332,333]},{"teal":330,"source":"contracts/validatorRegistry.algo.ts:174","pc":[334]},{"teal":331,"source":"contracts/validatorRegistry.algo.ts:174","pc":[335,336]},{"teal":332,"source":"contracts/validatorRegistry.algo.ts:174","pc":[337]},{"teal":333,"source":"contracts/validatorRegistry.algo.ts:174","pc":[338,339]},{"teal":334,"source":"contracts/validatorRegistry.algo.ts:174","pc":[340]},{"teal":335,"source":"contracts/validatorRegistry.algo.ts:174","pc":[341]},{"teal":336,"source":"contracts/validatorRegistry.algo.ts:174","pc":[342,343]},{"teal":337,"source":"contracts/validatorRegistry.algo.ts:174","pc":[344]},{"teal":338,"source":"contracts/validatorRegistry.algo.ts:172","pc":[345]},{"teal":343,"source":"contracts/validatorRegistry.algo.ts:177","pc":[346]},{"teal":346,"source":"contracts/validatorRegistry.algo.ts:178","pc":[347,348,349]},{"teal":347,"source":"contracts/validatorRegistry.algo.ts:178","pc":[350]},{"teal":350,"source":"contracts/validatorRegistry.algo.ts:177","pc":[351,352,353]},{"teal":351,"source":"contracts/validatorRegistry.algo.ts:177","pc":[354]},{"teal":352,"source":"contracts/validatorRegistry.algo.ts:177","pc":[355]},{"teal":353,"source":"contracts/validatorRegistry.algo.ts:177","pc":[356]},{"teal":354,"source":"contracts/validatorRegistry.algo.ts:177","pc":[357]},{"teal":358,"source":"contracts/validatorRegistry.algo.ts:177","pc":[358,359,360]},{"teal":362,"source":"contracts/validatorRegistry.algo.ts:179","pc":[361,362]},{"teal":363,"source":"contracts/validatorRegistry.algo.ts:179","pc":[363,364]},{"teal":364,"source":"contracts/validatorRegistry.algo.ts:179","pc":[365]},{"teal":365,"source":"contracts/validatorRegistry.algo.ts:179","pc":[366,367]},{"teal":366,"source":"contracts/validatorRegistry.algo.ts:179","pc":[368]},{"teal":367,"source":"contracts/validatorRegistry.algo.ts:179","pc":[369]},{"teal":368,"source":"contracts/validatorRegistry.algo.ts:179","pc":[370,371]},{"teal":369,"source":"contracts/validatorRegistry.algo.ts:179","pc":[372]},{"teal":370,"source":"contracts/validatorRegistry.algo.ts:177","pc":[373]},{"teal":375,"source":"contracts/validatorRegistry.algo.ts:182","pc":[374]},{"teal":378,"source":"contracts/validatorRegistry.algo.ts:183","pc":[375,376,377]},{"teal":379,"source":"contracts/validatorRegistry.algo.ts:183","pc":[378]},{"teal":382,"source":"contracts/validatorRegistry.algo.ts:182","pc":[379,380,381]},{"teal":383,"source":"contracts/validatorRegistry.algo.ts:182","pc":[382]},{"teal":384,"source":"contracts/validatorRegistry.algo.ts:182","pc":[383]},{"teal":385,"source":"contracts/validatorRegistry.algo.ts:182","pc":[384]},{"teal":386,"source":"contracts/validatorRegistry.algo.ts:182","pc":[385]},{"teal":390,"source":"contracts/validatorRegistry.algo.ts:182","pc":[386,387,388]},{"teal":397,"source":"contracts/validatorRegistry.algo.ts:185","pc":[389]},{"teal":398,"source":"contracts/validatorRegistry.algo.ts:185","pc":[390,391]},{"teal":399,"source":"contracts/validatorRegistry.algo.ts:185","pc":[392]},{"teal":400,"source":"contracts/validatorRegistry.algo.ts:185","pc":[393,394]},{"teal":401,"source":"contracts/validatorRegistry.algo.ts:185","pc":[395]},{"teal":402,"source":"contracts/validatorRegistry.algo.ts:185","pc":[396]},{"teal":403,"source":"contracts/validatorRegistry.algo.ts:185","pc":[397,398]},{"teal":404,"source":"contracts/validatorRegistry.algo.ts:185","pc":[399]},{"teal":405,"source":"contracts/validatorRegistry.algo.ts:186","pc":[400,401]},{"teal":406,"source":"contracts/validatorRegistry.algo.ts:186","pc":[402,403]},{"teal":407,"source":"contracts/validatorRegistry.algo.ts:186","pc":[404]},{"teal":408,"source":"contracts/validatorRegistry.algo.ts:186","pc":[405,406]},{"teal":409,"source":"contracts/validatorRegistry.algo.ts:186","pc":[407]},{"teal":410,"source":"contracts/validatorRegistry.algo.ts:186","pc":[408]},{"teal":411,"source":"contracts/validatorRegistry.algo.ts:186","pc":[409,410]},{"teal":412,"source":"contracts/validatorRegistry.algo.ts:186","pc":[411]},{"teal":413,"source":"contracts/validatorRegistry.algo.ts:186","pc":[412]},{"teal":414,"source":"contracts/validatorRegistry.algo.ts:182","pc":[413]},{"teal":419,"source":"contracts/validatorRegistry.algo.ts:196","pc":[414]},{"teal":422,"source":"contracts/validatorRegistry.algo.ts:197","pc":[415,416,417]},{"teal":423,"source":"contracts/validatorRegistry.algo.ts:197","pc":[418]},{"teal":426,"source":"contracts/validatorRegistry.algo.ts:196","pc":[419,420,421]},{"teal":427,"source":"contracts/validatorRegistry.algo.ts:196","pc":[422]},{"teal":428,"source":"contracts/validatorRegistry.algo.ts:196","pc":[423]},{"teal":429,"source":"contracts/validatorRegistry.algo.ts:196","pc":[424,425]},{"teal":430,"source":"contracts/validatorRegistry.algo.ts:196","pc":[426]},{"teal":431,"source":"contracts/validatorRegistry.algo.ts:196","pc":[427]},{"teal":432,"source":"contracts/validatorRegistry.algo.ts:196","pc":[428,429,430]},{"teal":433,"source":"contracts/validatorRegistry.algo.ts:196","pc":[431]},{"teal":434,"source":"contracts/validatorRegistry.algo.ts:196","pc":[432]},{"teal":435,"source":"contracts/validatorRegistry.algo.ts:196","pc":[433]},{"teal":436,"source":"contracts/validatorRegistry.algo.ts:196","pc":[434]},{"teal":437,"source":"contracts/validatorRegistry.algo.ts:196","pc":[435]},{"teal":438,"source":"contracts/validatorRegistry.algo.ts:196","pc":[436]},{"teal":447,"source":"contracts/validatorRegistry.algo.ts:196","pc":[437,438,439]},{"teal":450,"source":"contracts/validatorRegistry.algo.ts:196","pc":[440]},{"teal":451,"source":"contracts/validatorRegistry.algo.ts:196","pc":[441,442]},{"teal":455,"source":"contracts/validatorRegistry.algo.ts:198","pc":[443]},{"teal":456,"source":"contracts/validatorRegistry.algo.ts:198","pc":[444,445]},{"teal":460,"source":"contracts/validatorRegistry.algo.ts:199","pc":[446,447]},{"teal":461,"source":"contracts/validatorRegistry.algo.ts:199","pc":[448,449]},{"teal":462,"source":"contracts/validatorRegistry.algo.ts:199","pc":[450]},{"teal":463,"source":"contracts/validatorRegistry.algo.ts:199","pc":[451,452]},{"teal":464,"source":"contracts/validatorRegistry.algo.ts:199","pc":[453]},{"teal":465,"source":"contracts/validatorRegistry.algo.ts:199","pc":[454]},{"teal":466,"source":"contracts/validatorRegistry.algo.ts:199","pc":[455,456]},{"teal":467,"source":"contracts/validatorRegistry.algo.ts:199","pc":[457]},{"teal":468,"source":"contracts/validatorRegistry.algo.ts:199","pc":[458,459]},{"teal":472,"source":"contracts/validatorRegistry.algo.ts:200","pc":[460]},{"teal":473,"source":"contracts/validatorRegistry.algo.ts:200","pc":[461,462]},{"teal":478,"source":"contracts/validatorRegistry.algo.ts:200","pc":[463,464]},{"teal":479,"source":"contracts/validatorRegistry.algo.ts:200","pc":[465]},{"teal":480,"source":"contracts/validatorRegistry.algo.ts:200","pc":[466]},{"teal":481,"source":"contracts/validatorRegistry.algo.ts:200","pc":[467,468,469]},{"teal":486,"source":"contracts/validatorRegistry.algo.ts:201","pc":[470,471]},{"teal":487,"source":"contracts/validatorRegistry.algo.ts:201","pc":[472,473]},{"teal":488,"source":"contracts/validatorRegistry.algo.ts:201","pc":[474,475]},{"teal":489,"source":"contracts/validatorRegistry.algo.ts:201","pc":[476]},{"teal":490,"source":"contracts/validatorRegistry.algo.ts:201","pc":[477]},{"teal":491,"source":"contracts/validatorRegistry.algo.ts:201","pc":[478]},{"teal":492,"source":"contracts/validatorRegistry.algo.ts:201","pc":[479]},{"teal":493,"source":"contracts/validatorRegistry.algo.ts:201","pc":[480]},{"teal":494,"source":"contracts/validatorRegistry.algo.ts:201","pc":[481]},{"teal":495,"source":"contracts/validatorRegistry.algo.ts:201","pc":[482]},{"teal":496,"source":"contracts/validatorRegistry.algo.ts:201","pc":[483]},{"teal":497,"source":"contracts/validatorRegistry.algo.ts:201","pc":[484,485,486]},{"teal":500,"source":"contracts/validatorRegistry.algo.ts:203","pc":[487,488,489]},{"teal":505,"source":"contracts/validatorRegistry.algo.ts:205","pc":[490,491]},{"teal":506,"source":"contracts/validatorRegistry.algo.ts:205","pc":[492,493]},{"teal":507,"source":"contracts/validatorRegistry.algo.ts:205","pc":[494,495]},{"teal":508,"source":"contracts/validatorRegistry.algo.ts:205","pc":[496,497]},{"teal":509,"source":"contracts/validatorRegistry.algo.ts:205","pc":[498]},{"teal":510,"source":"contracts/validatorRegistry.algo.ts:205","pc":[499,500]},{"teal":511,"source":"contracts/validatorRegistry.algo.ts:205","pc":[501]},{"teal":512,"source":"contracts/validatorRegistry.algo.ts:205","pc":[502]},{"teal":513,"source":"contracts/validatorRegistry.algo.ts:205","pc":[503,504]},{"teal":518,"source":"contracts/validatorRegistry.algo.ts:200","pc":[505,506]},{"teal":519,"source":"contracts/validatorRegistry.algo.ts:200","pc":[507]},{"teal":520,"source":"contracts/validatorRegistry.algo.ts:200","pc":[508]},{"teal":521,"source":"contracts/validatorRegistry.algo.ts:200","pc":[509,510]},{"teal":522,"source":"contracts/validatorRegistry.algo.ts:200","pc":[511,512,513]},{"teal":527,"source":"contracts/validatorRegistry.algo.ts:207","pc":[514,515]},{"teal":530,"source":"contracts/validatorRegistry.algo.ts:196","pc":[516,517]},{"teal":533,"source":"contracts/validatorRegistry.algo.ts:196","pc":[518,519]},{"teal":534,"source":"contracts/validatorRegistry.algo.ts:196","pc":[520]},{"teal":539,"source":"contracts/validatorRegistry.algo.ts:215","pc":[521]},{"teal":542,"source":"contracts/validatorRegistry.algo.ts:216","pc":[522,523,524]},{"teal":543,"source":"contracts/validatorRegistry.algo.ts:216","pc":[525]},{"teal":546,"source":"contracts/validatorRegistry.algo.ts:216","pc":[526,527,528]},{"teal":547,"source":"contracts/validatorRegistry.algo.ts:216","pc":[529]},{"teal":550,"source":"contracts/validatorRegistry.algo.ts:215","pc":[530,531,532]},{"teal":551,"source":"contracts/validatorRegistry.algo.ts:215","pc":[533]},{"teal":552,"source":"contracts/validatorRegistry.algo.ts:215","pc":[534]},{"teal":553,"source":"contracts/validatorRegistry.algo.ts:215","pc":[535]},{"teal":554,"source":"contracts/validatorRegistry.algo.ts:215","pc":[536]},{"teal":555,"source":"contracts/validatorRegistry.algo.ts:215","pc":[537]},{"teal":563,"source":"contracts/validatorRegistry.algo.ts:215","pc":[538,539,540]},{"teal":570,"source":"contracts/validatorRegistry.algo.ts:218","pc":[541,542]},{"teal":571,"source":"contracts/validatorRegistry.algo.ts:218","pc":[543]},{"teal":572,"source":"contracts/validatorRegistry.algo.ts:218","pc":[544]},{"teal":573,"source":"contracts/validatorRegistry.algo.ts:218","pc":[545]},{"teal":574,"source":"contracts/validatorRegistry.algo.ts:218","pc":[546,547,548]},{"teal":575,"source":"contracts/validatorRegistry.algo.ts:218","pc":[549,550]},{"teal":576,"source":"contracts/validatorRegistry.algo.ts:218","pc":[551]},{"teal":577,"source":"contracts/validatorRegistry.algo.ts:218","pc":[552]},{"teal":578,"source":"contracts/validatorRegistry.algo.ts:218","pc":[553]},{"teal":582,"source":"contracts/validatorRegistry.algo.ts:217","errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[554]},{"teal":586,"source":"contracts/validatorRegistry.algo.ts:221","pc":[555,556]},{"teal":587,"source":"contracts/validatorRegistry.algo.ts:221","pc":[557,558]},{"teal":588,"source":"contracts/validatorRegistry.algo.ts:221","pc":[559]},{"teal":589,"source":"contracts/validatorRegistry.algo.ts:221","pc":[560]},{"teal":590,"source":"contracts/validatorRegistry.algo.ts:221","pc":[561,562]},{"teal":591,"source":"contracts/validatorRegistry.algo.ts:221","pc":[563]},{"teal":592,"source":"contracts/validatorRegistry.algo.ts:221","pc":[564]},{"teal":593,"source":"contracts/validatorRegistry.algo.ts:221","pc":[565]},{"teal":594,"source":"contracts/validatorRegistry.algo.ts:221","pc":[566]},{"teal":595,"source":"contracts/validatorRegistry.algo.ts:221","pc":[567]},{"teal":596,"source":"contracts/validatorRegistry.algo.ts:221","pc":[568]},{"teal":597,"source":"contracts/validatorRegistry.algo.ts:221","pc":[569,570]},{"teal":598,"source":"contracts/validatorRegistry.algo.ts:221","pc":[571]},{"teal":599,"source":"contracts/validatorRegistry.algo.ts:221","pc":[572]},{"teal":600,"source":"contracts/validatorRegistry.algo.ts:221","pc":[573,574]},{"teal":601,"source":"contracts/validatorRegistry.algo.ts:221","pc":[575]},{"teal":602,"source":"contracts/validatorRegistry.algo.ts:221","pc":[576]},{"teal":603,"source":"contracts/validatorRegistry.algo.ts:215","pc":[577]},{"teal":608,"source":"contracts/validatorRegistry.algo.ts:224","pc":[578]},{"teal":611,"source":"contracts/validatorRegistry.algo.ts:225","pc":[579,580,581]},{"teal":612,"source":"contracts/validatorRegistry.algo.ts:225","pc":[582]},{"teal":613,"source":"contracts/validatorRegistry.algo.ts:225","pc":[583]},{"teal":614,"source":"contracts/validatorRegistry.algo.ts:225","pc":[584]},{"teal":615,"source":"contracts/validatorRegistry.algo.ts:225","pc":[585]},{"teal":618,"source":"contracts/validatorRegistry.algo.ts:225","errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[586]},{"teal":621,"source":"contracts/validatorRegistry.algo.ts:224","pc":[587,588,589]},{"teal":622,"source":"contracts/validatorRegistry.algo.ts:224","pc":[590]},{"teal":623,"source":"contracts/validatorRegistry.algo.ts:224","pc":[591]},{"teal":624,"source":"contracts/validatorRegistry.algo.ts:224","pc":[592]},{"teal":625,"source":"contracts/validatorRegistry.algo.ts:224","pc":[593]},{"teal":629,"source":"contracts/validatorRegistry.algo.ts:224","pc":[594,595,596]},{"teal":633,"source":"contracts/validatorRegistry.algo.ts:226","pc":[597,598]},{"teal":634,"source":"contracts/validatorRegistry.algo.ts:226","pc":[599,600]},{"teal":635,"source":"contracts/validatorRegistry.algo.ts:226","pc":[601,602,603]},{"teal":636,"source":"contracts/validatorRegistry.algo.ts:226","pc":[604]},{"teal":637,"source":"contracts/validatorRegistry.algo.ts:226","pc":[605]},{"teal":638,"source":"contracts/validatorRegistry.algo.ts:226","pc":[606]},{"teal":639,"source":"contracts/validatorRegistry.algo.ts:226","pc":[607,608]},{"teal":640,"source":"contracts/validatorRegistry.algo.ts:226","pc":[609]},{"teal":641,"source":"contracts/validatorRegistry.algo.ts:226","pc":[610]},{"teal":642,"source":"contracts/validatorRegistry.algo.ts:226","pc":[611,612]},{"teal":643,"source":"contracts/validatorRegistry.algo.ts:226","pc":[613]},{"teal":644,"source":"contracts/validatorRegistry.algo.ts:226","pc":[614,615]},{"teal":645,"source":"contracts/validatorRegistry.algo.ts:226","pc":[616,617,618]},{"teal":646,"source":"contracts/validatorRegistry.algo.ts:226","pc":[619]},{"teal":647,"source":"contracts/validatorRegistry.algo.ts:226","pc":[620]},{"teal":648,"source":"contracts/validatorRegistry.algo.ts:226","pc":[621]},{"teal":649,"source":"contracts/validatorRegistry.algo.ts:226","pc":[622,623]},{"teal":650,"source":"contracts/validatorRegistry.algo.ts:226","pc":[624]},{"teal":651,"source":"contracts/validatorRegistry.algo.ts:224","pc":[625]},{"teal":656,"source":"contracts/validatorRegistry.algo.ts:236","pc":[626]},{"teal":659,"source":"contracts/validatorRegistry.algo.ts:237","pc":[627,628,629]},{"teal":660,"source":"contracts/validatorRegistry.algo.ts:237","pc":[630]},{"teal":663,"source":"contracts/validatorRegistry.algo.ts:236","pc":[631,632,633]},{"teal":664,"source":"contracts/validatorRegistry.algo.ts:236","pc":[634]},{"teal":665,"source":"contracts/validatorRegistry.algo.ts:236","pc":[635]},{"teal":666,"source":"contracts/validatorRegistry.algo.ts:236","pc":[636]},{"teal":667,"source":"contracts/validatorRegistry.algo.ts:236","pc":[637]},{"teal":668,"source":"contracts/validatorRegistry.algo.ts:236","pc":[638]},{"teal":678,"source":"contracts/validatorRegistry.algo.ts:236","pc":[639,640,641]},{"teal":681,"source":"contracts/validatorRegistry.algo.ts:236","pc":[642]},{"teal":682,"source":"contracts/validatorRegistry.algo.ts:236","pc":[643,644]},{"teal":686,"source":"contracts/validatorRegistry.algo.ts:238","pc":[645,646]},{"teal":687,"source":"contracts/validatorRegistry.algo.ts:238","pc":[647,648]},{"teal":688,"source":"contracts/validatorRegistry.algo.ts:238","pc":[649]},{"teal":689,"source":"contracts/validatorRegistry.algo.ts:238","pc":[650,651]},{"teal":690,"source":"contracts/validatorRegistry.algo.ts:238","pc":[652]},{"teal":691,"source":"contracts/validatorRegistry.algo.ts:238","pc":[653]},{"teal":692,"source":"contracts/validatorRegistry.algo.ts:238","pc":[654,655]},{"teal":693,"source":"contracts/validatorRegistry.algo.ts:238","pc":[656]},{"teal":694,"source":"contracts/validatorRegistry.algo.ts:238","pc":[657]},{"teal":695,"source":"contracts/validatorRegistry.algo.ts:238","pc":[658,659]},{"teal":699,"source":"contracts/validatorRegistry.algo.ts:239","pc":[660,661,662]},{"teal":700,"source":"contracts/validatorRegistry.algo.ts:239","pc":[663,664]},{"teal":701,"source":"contracts/validatorRegistry.algo.ts:239","pc":[665]},{"teal":702,"source":"contracts/validatorRegistry.algo.ts:239","pc":[666,667]},{"teal":706,"source":"contracts/validatorRegistry.algo.ts:240","pc":[668,669,670]},{"teal":707,"source":"contracts/validatorRegistry.algo.ts:240","pc":[671]},{"teal":708,"source":"contracts/validatorRegistry.algo.ts:240","pc":[672]},{"teal":709,"source":"contracts/validatorRegistry.algo.ts:240","pc":[673,674]},{"teal":710,"source":"contracts/validatorRegistry.algo.ts:240","pc":[675]},{"teal":711,"source":"contracts/validatorRegistry.algo.ts:240","pc":[676]},{"teal":712,"source":"contracts/validatorRegistry.algo.ts:240","pc":[677,678]},{"teal":713,"source":"contracts/validatorRegistry.algo.ts:240","pc":[679]},{"teal":714,"source":"contracts/validatorRegistry.algo.ts:240","pc":[680]},{"teal":715,"source":"contracts/validatorRegistry.algo.ts:240","pc":[681,682]},{"teal":720,"source":"contracts/validatorRegistry.algo.ts:241","pc":[683,684]},{"teal":721,"source":"contracts/validatorRegistry.algo.ts:241","pc":[685]},{"teal":722,"source":"contracts/validatorRegistry.algo.ts:241","pc":[686]},{"teal":723,"source":"contracts/validatorRegistry.algo.ts:241","pc":[687,688,689]},{"teal":728,"source":"contracts/validatorRegistry.algo.ts:242","pc":[690,691,692]},{"teal":729,"source":"contracts/validatorRegistry.algo.ts:242","pc":[693,694]},{"teal":735,"source":"contracts/validatorRegistry.algo.ts:244","pc":[695,696]},{"teal":736,"source":"contracts/validatorRegistry.algo.ts:244","pc":[697,698]},{"teal":737,"source":"contracts/validatorRegistry.algo.ts:244","pc":[699]},{"teal":738,"source":"contracts/validatorRegistry.algo.ts:244","pc":[700,701,702]},{"teal":743,"source":"contracts/validatorRegistry.algo.ts:245","pc":[703,704]},{"teal":744,"source":"contracts/validatorRegistry.algo.ts:245","pc":[705,706]},{"teal":749,"source":"contracts/validatorRegistry.algo.ts:247","pc":[707,708]},{"teal":752,"source":"contracts/validatorRegistry.algo.ts:236","pc":[709,710]},{"teal":755,"source":"contracts/validatorRegistry.algo.ts:236","pc":[711,712]},{"teal":756,"source":"contracts/validatorRegistry.algo.ts:236","pc":[713]},{"teal":761,"source":"contracts/validatorRegistry.algo.ts:254","pc":[714]},{"teal":764,"source":"contracts/validatorRegistry.algo.ts:255","pc":[715,716,717]},{"teal":765,"source":"contracts/validatorRegistry.algo.ts:255","pc":[718]},{"teal":766,"source":"contracts/validatorRegistry.algo.ts:255","pc":[719]},{"teal":767,"source":"contracts/validatorRegistry.algo.ts:255","pc":[720,721]},{"teal":768,"source":"contracts/validatorRegistry.algo.ts:255","pc":[722]},{"teal":771,"source":"contracts/validatorRegistry.algo.ts:255","errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[723]},{"teal":774,"source":"contracts/validatorRegistry.algo.ts:254","pc":[724,725,726]},{"teal":775,"source":"contracts/validatorRegistry.algo.ts:254","pc":[727,728]},{"teal":776,"source":"contracts/validatorRegistry.algo.ts:254","pc":[729]},{"teal":777,"source":"contracts/validatorRegistry.algo.ts:254","pc":[730,731]},{"teal":778,"source":"contracts/validatorRegistry.algo.ts:254","pc":[732]},{"teal":779,"source":"contracts/validatorRegistry.algo.ts:254","pc":[733]},{"teal":780,"source":"contracts/validatorRegistry.algo.ts:254","pc":[734]},{"teal":781,"source":"contracts/validatorRegistry.algo.ts:254","pc":[735]},{"teal":782,"source":"contracts/validatorRegistry.algo.ts:254","pc":[736]},{"teal":789,"source":"contracts/validatorRegistry.algo.ts:254","pc":[737,738,739]},{"teal":793,"source":"contracts/validatorRegistry.algo.ts:256","pc":[740]},{"teal":794,"source":"contracts/validatorRegistry.algo.ts:256","pc":[741,742]},{"teal":795,"source":"contracts/validatorRegistry.algo.ts:256","pc":[743]},{"teal":796,"source":"contracts/validatorRegistry.algo.ts:256","pc":[744]},{"teal":797,"source":"contracts/validatorRegistry.algo.ts:256","pc":[745]},{"teal":798,"source":"contracts/validatorRegistry.algo.ts:256","pc":[746]},{"teal":799,"source":"contracts/validatorRegistry.algo.ts:256","pc":[747]},{"teal":800,"source":"contracts/validatorRegistry.algo.ts:254","pc":[748]},{"teal":805,"source":"contracts/validatorRegistry.algo.ts:265","pc":[749]},{"teal":808,"source":"contracts/validatorRegistry.algo.ts:266","pc":[750,751,752]},{"teal":809,"source":"contracts/validatorRegistry.algo.ts:266","pc":[753]},{"teal":810,"source":"contracts/validatorRegistry.algo.ts:266","pc":[754]},{"teal":811,"source":"contracts/validatorRegistry.algo.ts:266","pc":[755,756]},{"teal":812,"source":"contracts/validatorRegistry.algo.ts:266","pc":[757]},{"teal":815,"source":"contracts/validatorRegistry.algo.ts:266","errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[758]},{"teal":818,"source":"contracts/validatorRegistry.algo.ts:265","pc":[759,760,761]},{"teal":819,"source":"contracts/validatorRegistry.algo.ts:265","pc":[762]},{"teal":820,"source":"contracts/validatorRegistry.algo.ts:265","pc":[763]},{"teal":821,"source":"contracts/validatorRegistry.algo.ts:265","pc":[764]},{"teal":822,"source":"contracts/validatorRegistry.algo.ts:265","pc":[765]},{"teal":823,"source":"contracts/validatorRegistry.algo.ts:265","pc":[766]},{"teal":824,"source":"contracts/validatorRegistry.algo.ts:265","pc":[767,768,769]},{"teal":825,"source":"contracts/validatorRegistry.algo.ts:265","pc":[770]},{"teal":826,"source":"contracts/validatorRegistry.algo.ts:265","pc":[771]},{"teal":827,"source":"contracts/validatorRegistry.algo.ts:265","pc":[772]},{"teal":828,"source":"contracts/validatorRegistry.algo.ts:265","pc":[773]},{"teal":829,"source":"contracts/validatorRegistry.algo.ts:265","pc":[774]},{"teal":830,"source":"contracts/validatorRegistry.algo.ts:265","pc":[775]},{"teal":839,"source":"contracts/validatorRegistry.algo.ts:265","pc":[776,777,778]},{"teal":842,"source":"contracts/validatorRegistry.algo.ts:265","pc":[779]},{"teal":843,"source":"contracts/validatorRegistry.algo.ts:265","pc":[780,781]},{"teal":848,"source":"contracts/validatorRegistry.algo.ts:267","pc":[782]},{"teal":849,"source":"contracts/validatorRegistry.algo.ts:267","pc":[783,784]},{"teal":850,"source":"contracts/validatorRegistry.algo.ts:267","pc":[785]},{"teal":851,"source":"contracts/validatorRegistry.algo.ts:267","pc":[786]},{"teal":852,"source":"contracts/validatorRegistry.algo.ts:267","pc":[787]},{"teal":853,"source":"contracts/validatorRegistry.algo.ts:267","pc":[788]},{"teal":854,"source":"contracts/validatorRegistry.algo.ts:267","pc":[789]},{"teal":855,"source":"contracts/validatorRegistry.algo.ts:267","pc":[790,791,792]},{"teal":860,"source":"contracts/validatorRegistry.algo.ts:268","pc":[793]},{"teal":861,"source":"contracts/validatorRegistry.algo.ts:268","pc":[794,795,796]},{"teal":866,"source":"contracts/validatorRegistry.algo.ts:270","pc":[797]},{"teal":867,"source":"contracts/validatorRegistry.algo.ts:270","pc":[798,799]},{"teal":871,"source":"contracts/validatorRegistry.algo.ts:271","pc":[800]},{"teal":872,"source":"contracts/validatorRegistry.algo.ts:271","pc":[801,802]},{"teal":873,"source":"contracts/validatorRegistry.algo.ts:271","pc":[803]},{"teal":874,"source":"contracts/validatorRegistry.algo.ts:271","pc":[804]},{"teal":877,"source":"contracts/validatorRegistry.algo.ts:271","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[805]},{"teal":878,"source":"contracts/validatorRegistry.algo.ts:271","pc":[806,807]},{"teal":882,"source":"contracts/validatorRegistry.algo.ts:272","pc":[808]},{"teal":883,"source":"contracts/validatorRegistry.algo.ts:272","pc":[809,810]},{"teal":888,"source":"contracts/validatorRegistry.algo.ts:272","pc":[811,812]},{"teal":889,"source":"contracts/validatorRegistry.algo.ts:272","pc":[813,814]},{"teal":890,"source":"contracts/validatorRegistry.algo.ts:272","pc":[815]},{"teal":891,"source":"contracts/validatorRegistry.algo.ts:272","pc":[816,817,818]},{"teal":896,"source":"contracts/validatorRegistry.algo.ts:273","pc":[819,820]},{"teal":897,"source":"contracts/validatorRegistry.algo.ts:273","pc":[821,822]},{"teal":898,"source":"contracts/validatorRegistry.algo.ts:273","pc":[823]},{"teal":899,"source":"contracts/validatorRegistry.algo.ts:273","pc":[824]},{"teal":900,"source":"contracts/validatorRegistry.algo.ts:273","pc":[825]},{"teal":901,"source":"contracts/validatorRegistry.algo.ts:273","pc":[826]},{"teal":902,"source":"contracts/validatorRegistry.algo.ts:273","pc":[827]},{"teal":903,"source":"contracts/validatorRegistry.algo.ts:273","pc":[828]},{"teal":904,"source":"contracts/validatorRegistry.algo.ts:273","pc":[829]},{"teal":905,"source":"contracts/validatorRegistry.algo.ts:273","pc":[830]},{"teal":906,"source":"contracts/validatorRegistry.algo.ts:273","pc":[831]},{"teal":907,"source":"contracts/validatorRegistry.algo.ts:273","pc":[832,833,834]},{"teal":912,"source":"contracts/validatorRegistry.algo.ts:274","pc":[835,836]},{"teal":913,"source":"contracts/validatorRegistry.algo.ts:274","pc":[837,838]},{"teal":914,"source":"contracts/validatorRegistry.algo.ts:274","pc":[839,840]},{"teal":915,"source":"contracts/validatorRegistry.algo.ts:274","pc":[841]},{"teal":916,"source":"contracts/validatorRegistry.algo.ts:274","pc":[842]},{"teal":917,"source":"contracts/validatorRegistry.algo.ts:274","pc":[843]},{"teal":918,"source":"contracts/validatorRegistry.algo.ts:274","pc":[844]},{"teal":919,"source":"contracts/validatorRegistry.algo.ts:274","pc":[845]},{"teal":920,"source":"contracts/validatorRegistry.algo.ts:274","pc":[846,847]},{"teal":927,"source":"contracts/validatorRegistry.algo.ts:272","pc":[848,849]},{"teal":928,"source":"contracts/validatorRegistry.algo.ts:272","pc":[850]},{"teal":929,"source":"contracts/validatorRegistry.algo.ts:272","pc":[851]},{"teal":930,"source":"contracts/validatorRegistry.algo.ts:272","pc":[852,853]},{"teal":931,"source":"contracts/validatorRegistry.algo.ts:272","pc":[854,855,856]},{"teal":936,"source":"contracts/validatorRegistry.algo.ts:277","pc":[857,858]},{"teal":940,"source":"contracts/validatorRegistry.algo.ts:265","pc":[859,860]},{"teal":943,"source":"contracts/validatorRegistry.algo.ts:265","pc":[861,862]},{"teal":944,"source":"contracts/validatorRegistry.algo.ts:265","pc":[863]},{"teal":949,"source":"contracts/validatorRegistry.algo.ts:287","pc":[864]},{"teal":952,"source":"contracts/validatorRegistry.algo.ts:288","pc":[865,866,867]},{"teal":953,"source":"contracts/validatorRegistry.algo.ts:288","pc":[868]},{"teal":956,"source":"contracts/validatorRegistry.algo.ts:287","pc":[869,870,871]},{"teal":957,"source":"contracts/validatorRegistry.algo.ts:287","pc":[872]},{"teal":958,"source":"contracts/validatorRegistry.algo.ts:287","pc":[873]},{"teal":959,"source":"contracts/validatorRegistry.algo.ts:287","pc":[874]},{"teal":960,"source":"contracts/validatorRegistry.algo.ts:287","pc":[875]},{"teal":970,"source":"contracts/validatorRegistry.algo.ts:287","pc":[876,877,878]},{"teal":974,"source":"contracts/validatorRegistry.algo.ts:289","pc":[879,880]},{"teal":975,"source":"contracts/validatorRegistry.algo.ts:289","pc":[881,882]},{"teal":976,"source":"contracts/validatorRegistry.algo.ts:289","pc":[883]},{"teal":977,"source":"contracts/validatorRegistry.algo.ts:289","pc":[884,885]},{"teal":978,"source":"contracts/validatorRegistry.algo.ts:289","pc":[886]},{"teal":979,"source":"contracts/validatorRegistry.algo.ts:289","pc":[887]},{"teal":980,"source":"contracts/validatorRegistry.algo.ts:289","pc":[888,889]},{"teal":981,"source":"contracts/validatorRegistry.algo.ts:289","pc":[890]},{"teal":982,"source":"contracts/validatorRegistry.algo.ts:287","pc":[891]},{"teal":987,"source":"contracts/validatorRegistry.algo.ts:292","pc":[892]},{"teal":990,"source":"contracts/validatorRegistry.algo.ts:293","pc":[893,894,895]},{"teal":991,"source":"contracts/validatorRegistry.algo.ts:293","pc":[896]},{"teal":994,"source":"contracts/validatorRegistry.algo.ts:292","pc":[897,898,899]},{"teal":995,"source":"contracts/validatorRegistry.algo.ts:292","pc":[900]},{"teal":996,"source":"contracts/validatorRegistry.algo.ts:292","pc":[901]},{"teal":997,"source":"contracts/validatorRegistry.algo.ts:292","pc":[902]},{"teal":998,"source":"contracts/validatorRegistry.algo.ts:292","pc":[903]},{"teal":1002,"source":"contracts/validatorRegistry.algo.ts:292","pc":[904,905,906]},{"teal":1006,"source":"contracts/validatorRegistry.algo.ts:294","pc":[907]},{"teal":1007,"source":"contracts/validatorRegistry.algo.ts:294","pc":[908,909]},{"teal":1008,"source":"contracts/validatorRegistry.algo.ts:294","pc":[910]},{"teal":1009,"source":"contracts/validatorRegistry.algo.ts:294","pc":[911]},{"teal":1010,"source":"contracts/validatorRegistry.algo.ts:294","pc":[912]},{"teal":1011,"source":"contracts/validatorRegistry.algo.ts:294","pc":[913]},{"teal":1012,"source":"contracts/validatorRegistry.algo.ts:294","pc":[914]},{"teal":1015,"source":"contracts/validatorRegistry.algo.ts:294","errorMessage":"the specified validator id doesn't exist","pc":[915]},{"teal":1019,"source":"contracts/validatorRegistry.algo.ts:296","pc":[916,917]},{"teal":1020,"source":"contracts/validatorRegistry.algo.ts:296","pc":[918,919]},{"teal":1021,"source":"contracts/validatorRegistry.algo.ts:296","pc":[920]},{"teal":1022,"source":"contracts/validatorRegistry.algo.ts:296","pc":[921,922]},{"teal":1023,"source":"contracts/validatorRegistry.algo.ts:296","pc":[923]},{"teal":1024,"source":"contracts/validatorRegistry.algo.ts:296","pc":[924]},{"teal":1025,"source":"contracts/validatorRegistry.algo.ts:296","pc":[925,926]},{"teal":1026,"source":"contracts/validatorRegistry.algo.ts:296","pc":[927]},{"teal":1027,"source":"contracts/validatorRegistry.algo.ts:292","pc":[928]},{"teal":1032,"source":"contracts/validatorRegistry.algo.ts:299","pc":[929]},{"teal":1035,"source":"contracts/validatorRegistry.algo.ts:299","pc":[930,931,932]},{"teal":1036,"source":"contracts/validatorRegistry.algo.ts:299","pc":[933]},{"teal":1037,"source":"contracts/validatorRegistry.algo.ts:299","pc":[934]},{"teal":1038,"source":"contracts/validatorRegistry.algo.ts:299","pc":[935]},{"teal":1039,"source":"contracts/validatorRegistry.algo.ts:299","pc":[936]},{"teal":1040,"source":"contracts/validatorRegistry.algo.ts:299","pc":[937]},{"teal":1044,"source":"contracts/validatorRegistry.algo.ts:299","pc":[938,939,940]},{"teal":1048,"source":"contracts/validatorRegistry.algo.ts:301","pc":[941,942]},{"teal":1049,"source":"contracts/validatorRegistry.algo.ts:299","pc":[943]},{"teal":1054,"source":"contracts/validatorRegistry.algo.ts:312","pc":[944]},{"teal":1057,"source":"contracts/validatorRegistry.algo.ts:312","pc":[945,946,947]},{"teal":1058,"source":"contracts/validatorRegistry.algo.ts:312","pc":[948]},{"teal":1059,"source":"contracts/validatorRegistry.algo.ts:312","pc":[949]},{"teal":1060,"source":"contracts/validatorRegistry.algo.ts:312","pc":[950,951]},{"teal":1061,"source":"contracts/validatorRegistry.algo.ts:312","pc":[952]},{"teal":1064,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[953]},{"teal":1067,"source":"contracts/validatorRegistry.algo.ts:312","pc":[954,955,956]},{"teal":1068,"source":"contracts/validatorRegistry.algo.ts:312","pc":[957,958,959]},{"teal":1071,"source":"contracts/validatorRegistry.algo.ts:312","pc":[960,961]},{"teal":1072,"source":"contracts/validatorRegistry.algo.ts:312","pc":[962]},{"teal":1073,"source":"contracts/validatorRegistry.algo.ts:312","pc":[963]},{"teal":1074,"source":"contracts/validatorRegistry.algo.ts:312","pc":[964]},{"teal":1075,"source":"contracts/validatorRegistry.algo.ts:312","pc":[965,966]},{"teal":1076,"source":"contracts/validatorRegistry.algo.ts:312","pc":[967]},{"teal":1077,"source":"contracts/validatorRegistry.algo.ts:312","pc":[968]},{"teal":1080,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[969]},{"teal":1083,"source":"contracts/validatorRegistry.algo.ts:312","pc":[970,971,972]},{"teal":1084,"source":"contracts/validatorRegistry.algo.ts:312","pc":[973]},{"teal":1085,"source":"contracts/validatorRegistry.algo.ts:312","pc":[974]},{"teal":1086,"source":"contracts/validatorRegistry.algo.ts:312","pc":[975]},{"teal":1087,"source":"contracts/validatorRegistry.algo.ts:312","pc":[976]},{"teal":1088,"source":"contracts/validatorRegistry.algo.ts:312","pc":[977]},{"teal":1100,"source":"contracts/validatorRegistry.algo.ts:312","pc":[978,979,980]},{"teal":1103,"source":"contracts/validatorRegistry.algo.ts:312","pc":[981]},{"teal":1107,"source":"contracts/validatorRegistry.algo.ts:313","pc":[982,983]},{"teal":1108,"source":"contracts/validatorRegistry.algo.ts:313","pc":[984,985,986]},{"teal":1113,"source":"contracts/validatorRegistry.algo.ts:315","pc":[987,988]},{"teal":1114,"source":"contracts/validatorRegistry.algo.ts:315","pc":[989,990]},{"teal":1115,"source":"contracts/validatorRegistry.algo.ts:315","pc":[991,992]},{"teal":1116,"source":"contracts/validatorRegistry.algo.ts:315","pc":[993]},{"teal":1119,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[994]},{"teal":1122,"source":"contracts/validatorRegistry.algo.ts:315","pc":[995,996]},{"teal":1123,"source":"contracts/validatorRegistry.algo.ts:315","pc":[997,998]},{"teal":1124,"source":"contracts/validatorRegistry.algo.ts:315","pc":[999,1000,1001]},{"teal":1125,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1002,1003,1004]},{"teal":1126,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1005]},{"teal":1127,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1006]},{"teal":1130,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1007]},{"teal":1134,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1008,1009]},{"teal":1135,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1010,1011]},{"teal":1136,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1012,1013,1014,1015,1016]},{"teal":1137,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1017]},{"teal":1140,"source":"contracts/validatorRegistry.algo.ts:317","errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1018]},{"teal":1144,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1019,1020]},{"teal":1145,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1021]},{"teal":1146,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1022]},{"teal":1147,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1023]},{"teal":1148,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1024,1025]},{"teal":1152,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1026,1027]},{"teal":1153,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1028,1029]},{"teal":1154,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1030]},{"teal":1158,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1031]},{"teal":1159,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1032,1033]},{"teal":1160,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1034]},{"teal":1161,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1035]},{"teal":1162,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1036,1037,1038]},{"teal":1163,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1039]},{"teal":1164,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1040]},{"teal":1168,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1041]},{"teal":1169,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1042,1043]},{"teal":1170,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1044]},{"teal":1171,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1045,1046]},{"teal":1172,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1047]},{"teal":1173,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1048]},{"teal":1174,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1049,1050]},{"teal":1175,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1051]},{"teal":1179,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1052]},{"teal":1180,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1053,1054]},{"teal":1181,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1055]},{"teal":1182,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1056]},{"teal":1183,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1057,1058]},{"teal":1184,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1059]},{"teal":1185,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1060]},{"teal":1186,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1061,1062]},{"teal":1187,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1063]},{"teal":1192,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1064,1065]},{"teal":1193,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1066,1067,1068]},{"teal":1194,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1069]},{"teal":1195,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1070]},{"teal":1196,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1071]},{"teal":1197,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1072,1073,1074]},{"teal":1202,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1075,1076]},{"teal":1203,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1077,1078,1079]},{"teal":1204,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1080]},{"teal":1205,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1081,1082,1083]},{"teal":1208,"source":"contracts/validatorRegistry.algo.ts:330","errorMessage":"provided NFD must be valid","pc":[1084]},{"teal":1215,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1085,1086]},{"teal":1216,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1087,1088]},{"teal":1217,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1089,1090,1091]},{"teal":1218,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1092]},{"teal":1219,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1093,1094]},{"teal":1220,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1095]},{"teal":1223,"source":"contracts/validatorRegistry.algo.ts:333","errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1096]},{"teal":1224,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1097]},{"teal":1227,"source":"contracts/validatorRegistry.algo.ts:332","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1098]},{"teal":1234,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1099,1100]},{"teal":1235,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1101,1102,1103]},{"teal":1236,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1104]},{"teal":1237,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1105,1106]},{"teal":1238,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1107]},{"teal":1239,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1108]},{"teal":1240,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1109,1110,1111]},{"teal":1241,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1112,1113]},{"teal":1242,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1114,1115,1116]},{"teal":1243,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1117]},{"teal":1244,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1118,1119]},{"teal":1245,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1120]},{"teal":1246,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1121]},{"teal":1249,"source":"contracts/validatorRegistry.algo.ts:337","pc":[1122,1123,1124]},{"teal":1257,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1125,1126]},{"teal":1258,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1127,1128,1129]},{"teal":1259,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1130]},{"teal":1260,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1131,1132,1133]},{"teal":1263,"source":"contracts/validatorRegistry.algo.ts:342","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1134]},{"teal":1268,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1135,1136,1137,1138,1139,1140]},{"teal":1269,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1141,1142]},{"teal":1270,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1143]},{"teal":1271,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1144,1145]},{"teal":1272,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1146,1147,1148]},{"teal":1273,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1149]},{"teal":1274,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1150,1151]},{"teal":1275,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1152,1153,1154]},{"teal":1276,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1155]},{"teal":1277,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1156]},{"teal":1278,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1157]},{"teal":1282,"source":"contracts/validatorRegistry.algo.ts:348","pc":[1158,1159]},{"teal":1285,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1160,1161]},{"teal":1286,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1162]},{"teal":1291,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1163,1164,1165]},{"teal":1292,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1166]},{"teal":1293,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1167]},{"teal":1294,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1168,1169]},{"teal":1295,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1170]},{"teal":1298,"source":"contracts/validatorRegistry.algo.ts:358","errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1171]},{"teal":1301,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1172,1173,1174]},{"teal":1302,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1175]},{"teal":1305,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1176,1177,1178]},{"teal":1306,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1179]},{"teal":1307,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1180]},{"teal":1317,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1181,1182,1183]},{"teal":1321,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1184,1185]},{"teal":1322,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1186,1187,1188]},{"teal":1326,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1189,1190]},{"teal":1327,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1191,1192]},{"teal":1328,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1193]},{"teal":1331,"source":"contracts/validatorRegistry.algo.ts:360","errorMessage":"needs to at least be valid address","pc":[1194]},{"teal":1335,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1195,1196]},{"teal":1336,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1197,1198]},{"teal":1337,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1199]},{"teal":1338,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1200,1201]},{"teal":1339,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1202]},{"teal":1340,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1203]},{"teal":1341,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1204,1205]},{"teal":1342,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1206]},{"teal":1343,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1207]},{"teal":1348,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1208,1209,1210]},{"teal":1349,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1211]},{"teal":1352,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1212,1213,1214]},{"teal":1353,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1215]},{"teal":1356,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1216,1217,1218]},{"teal":1357,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1219]},{"teal":1360,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1220,1221,1222]},{"teal":1361,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1223]},{"teal":1362,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1224]},{"teal":1373,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1225,1226,1227]},{"teal":1377,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1228,1229]},{"teal":1378,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1230,1231,1232]},{"teal":1382,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1233,1234]},{"teal":1383,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1235,1236]},{"teal":1384,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1237]},{"teal":1385,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1238]},{"teal":1386,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1239,1240]},{"teal":1387,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1241]},{"teal":1388,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1242]},{"teal":1389,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1243,1244]},{"teal":1390,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1245]},{"teal":1394,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1246,1247,1248]},{"teal":1395,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1249,1250]},{"teal":1396,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1251]},{"teal":1397,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1252]},{"teal":1398,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1253,1254]},{"teal":1399,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1255]},{"teal":1400,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1256]},{"teal":1401,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1257,1258]},{"teal":1402,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1259]},{"teal":1403,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1260]},{"teal":1408,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1261,1262,1263]},{"teal":1409,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1264,1265,1266]},{"teal":1412,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1267,1268,1269]},{"teal":1413,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1270]},{"teal":1416,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1271,1272,1273]},{"teal":1417,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1274]},{"teal":1420,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1275,1276,1277]},{"teal":1421,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1278]},{"teal":1422,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1279]},{"teal":1433,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1280,1281,1282]},{"teal":1437,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1283,1284]},{"teal":1438,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1285,1286,1287]},{"teal":1442,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1288,1289]},{"teal":1443,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1290,1291,1292]},{"teal":1446,"source":"contracts/validatorRegistry.algo.ts:389","errorMessage":"provided NFD must be valid","pc":[1293]},{"teal":1453,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1294,1295]},{"teal":1454,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1296,1297]},{"teal":1455,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1298,1299]},{"teal":1456,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1300]},{"teal":1459,"source":"contracts/validatorRegistry.algo.ts:392","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1301]},{"teal":1460,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1302]},{"teal":1463,"source":"contracts/validatorRegistry.algo.ts:391","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1303]},{"teal":1467,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1304,1305]},{"teal":1468,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1306,1307]},{"teal":1469,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1308]},{"teal":1470,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1309]},{"teal":1471,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1310,1311]},{"teal":1472,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1312]},{"teal":1473,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1313]},{"teal":1474,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1314,1315]},{"teal":1475,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1316]},{"teal":1476,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1317]},{"teal":1481,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1318,1319,1320]},{"teal":1482,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1321]},{"teal":1483,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1322]},{"teal":1484,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1323,1324]},{"teal":1485,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1325]},{"teal":1488,"source":"contracts/validatorRegistry.algo.ts:402","errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1326]},{"teal":1491,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1327,1328,1329]},{"teal":1492,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1330]},{"teal":1495,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1331,1332,1333]},{"teal":1496,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1334]},{"teal":1497,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1335]},{"teal":1504,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1336,1337,1338]},{"teal":1508,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1339,1340]},{"teal":1509,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1341,1342,1343]},{"teal":1513,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1344,1345]},{"teal":1514,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1346,1347]},{"teal":1515,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1348]},{"teal":1516,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1349]},{"teal":1520,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1350,1351,1352]},{"teal":1521,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1353,1354]},{"teal":1522,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1355]},{"teal":1523,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1356,1357]},{"teal":1524,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1358]},{"teal":1525,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1359]},{"teal":1526,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1360,1361]},{"teal":1527,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1362]},{"teal":1528,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1363]},{"teal":1533,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1364,1365,1366]},{"teal":1534,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1367]},{"teal":1537,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1368,1369,1370]},{"teal":1538,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1371]},{"teal":1541,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1372,1373,1374]},{"teal":1542,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1375]},{"teal":1543,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1376]},{"teal":1544,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1377,1378]},{"teal":1545,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1379]},{"teal":1548,"source":"contracts/validatorRegistry.algo.ts:416","errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1380]},{"teal":1551,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1381,1382,1383]},{"teal":1552,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1384]},{"teal":1553,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1385]},{"teal":1554,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1386,1387]},{"teal":1555,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1388]},{"teal":1558,"source":"contracts/validatorRegistry.algo.ts:415","errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1389]},{"teal":1561,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1390,1391,1392]},{"teal":1562,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1393]},{"teal":1563,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1394]},{"teal":1564,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1395]},{"teal":1565,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1396]},{"teal":1568,"source":"contracts/validatorRegistry.algo.ts:414","errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1397]},{"teal":1569,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1398]},{"teal":1572,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1399,1400,1401]},{"teal":1573,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1402]},{"teal":1576,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1403,1404,1405]},{"teal":1577,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1406]},{"teal":1578,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1407]},{"teal":1585,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1408,1409,1410]},{"teal":1589,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1411,1412]},{"teal":1590,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1413,1414,1415]},{"teal":1597,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1416,1417]},{"teal":1598,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1418]},{"teal":1599,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1419]},{"teal":1600,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1420]},{"teal":1601,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1421,1422,1423]},{"teal":1602,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1424,1425]},{"teal":1603,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1426,1427]},{"teal":1604,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1428]},{"teal":1605,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1429]},{"teal":1609,"source":"contracts/validatorRegistry.algo.ts:422","errorMessage":"invalid Entry gating type","pc":[1430]},{"teal":1614,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1431,1432]},{"teal":1615,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1433]},{"teal":1616,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1434]},{"teal":1617,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1435,1436,1437]},{"teal":1622,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1438,1439]},{"teal":1623,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1440,1441]},{"teal":1624,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1442]},{"teal":1625,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1443]},{"teal":1632,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1444,1445]},{"teal":1633,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1446,1447]},{"teal":1634,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1448]},{"teal":1635,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1449]},{"teal":1636,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1450,1451,1452]},{"teal":1637,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1453,1454]},{"teal":1638,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1455,1456]},{"teal":1639,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1457]},{"teal":1640,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1458]},{"teal":1643,"source":"contracts/validatorRegistry.algo.ts:429","pc":[1459,1460,1461]},{"teal":1648,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1462,1463]},{"teal":1649,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1464,1465,1466]},{"teal":1650,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1467]},{"teal":1651,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1468,1469,1470]},{"teal":1654,"source":"contracts/validatorRegistry.algo.ts:433","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1471]},{"teal":1659,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1472,1473]},{"teal":1660,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1474,1475]},{"teal":1661,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1476]},{"teal":1662,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1477,1478,1479]},{"teal":1663,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1480]},{"teal":1664,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1481,1482]},{"teal":1665,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1483]},{"teal":1666,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1484]},{"teal":1667,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1485,1486]},{"teal":1668,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1487]},{"teal":1672,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1488,1489]},{"teal":1673,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1490,1491]},{"teal":1674,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1492]},{"teal":1675,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1493,1494]},{"teal":1676,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1495]},{"teal":1677,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1496]},{"teal":1678,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1497,1498]},{"teal":1679,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1499]},{"teal":1683,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1500,1501]},{"teal":1684,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1502,1503]},{"teal":1685,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1504]},{"teal":1686,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1505,1506]},{"teal":1687,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1507]},{"teal":1688,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1508]},{"teal":1689,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1509,1510]},{"teal":1690,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1511]},{"teal":1694,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1512,1513]},{"teal":1695,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1514,1515]},{"teal":1696,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1516]},{"teal":1697,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1517]},{"teal":1698,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1518,1519]},{"teal":1699,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1520]},{"teal":1700,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1521]},{"teal":1701,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1522,1523]},{"teal":1702,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1524]},{"teal":1706,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1525,1526,1527]},{"teal":1707,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1528,1529]},{"teal":1708,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1530]},{"teal":1709,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1531]},{"teal":1710,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1532,1533]},{"teal":1711,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1534]},{"teal":1712,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1535]},{"teal":1713,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1536,1537]},{"teal":1714,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1538]},{"teal":1715,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1539]},{"teal":1720,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1540]},{"teal":1723,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1541,1542,1543]},{"teal":1724,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1544]},{"teal":1727,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1545,1546,1547]},{"teal":1728,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1548]},{"teal":1731,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1549,1550]},{"teal":1732,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1551]},{"teal":1733,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1552]},{"teal":1734,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1553]},{"teal":1735,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1554,1555]},{"teal":1736,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1556]},{"teal":1737,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1557]},{"teal":1740,"source":"contracts/validatorRegistry.algo.ts:453","errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1558]},{"teal":1743,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1559,1560,1561]},{"teal":1744,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1562]},{"teal":1745,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1563]},{"teal":1746,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1564]},{"teal":1747,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1565]},{"teal":1760,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1566,1567,1568]},{"teal":1763,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1569]},{"teal":1764,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1570]},{"teal":1768,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1571,1572]},{"teal":1769,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1573,1574,1575]},{"teal":1774,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1576,1577]},{"teal":1775,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1578,1579]},{"teal":1776,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1580,1581]},{"teal":1777,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1582]},{"teal":1780,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1583]},{"teal":1783,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1584,1585]},{"teal":1784,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1586,1587]},{"teal":1785,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1588,1589,1590]},{"teal":1786,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1591,1592,1593]},{"teal":1787,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1594]},{"teal":1788,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1595]},{"teal":1791,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1596]},{"teal":1795,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1597]},{"teal":1796,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1598,1599]},{"teal":1797,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1600]},{"teal":1798,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1601]},{"teal":1799,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1602]},{"teal":1800,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1603]},{"teal":1801,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1604]},{"teal":1804,"source":"contracts/validatorRegistry.algo.ts:459","errorMessage":"specified validator id isn't valid","pc":[1605]},{"teal":1808,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1606,1607]},{"teal":1809,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1608,1609]},{"teal":1810,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1610]},{"teal":1811,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1611,1612]},{"teal":1812,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1613]},{"teal":1813,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1614]},{"teal":1814,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1615,1616]},{"teal":1815,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1617]},{"teal":1816,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1618]},{"teal":1817,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1619,1620]},{"teal":1822,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1621,1622]},{"teal":1823,"source":"contracts/constants.algo.ts:30","pc":[1623]},{"teal":1824,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1624]},{"teal":1825,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1625,1626,1627]},{"teal":1829,"source":"contracts/validatorRegistry.algo.ts:463","errorMessage":"already at max pool size","pc":[1628]},{"teal":1834,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1629,1630]},{"teal":1835,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1631]},{"teal":1836,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1632]},{"teal":1837,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1633,1634]},{"teal":1859,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1635]},{"teal":1860,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1636,1637]},{"teal":1861,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1638,1639]},{"teal":1865,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1640]},{"teal":1866,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1641,1642]},{"teal":1873,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1643,1644]},{"teal":1874,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1645]},{"teal":1875,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1646,1647]},{"teal":1876,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1648]},{"teal":1877,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1649,1650]},{"teal":1878,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1651,1652]},{"teal":1879,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1653,1654]},{"teal":1880,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1655,1656]},{"teal":1881,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1657]},{"teal":1884,"source":"contracts/validatorRegistry.algo.ts:472","errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1658]},{"teal":1885,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1659,1660]},{"teal":1886,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1661]},{"teal":1887,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1662]},{"teal":1888,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1663,1664]},{"teal":1892,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1665,1666,1667]},{"teal":1893,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1668,1669]},{"teal":1897,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1670,1671]},{"teal":1898,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1672,1673]},{"teal":1902,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1674,1675]},{"teal":1903,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1676,1677]},{"teal":1907,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1678,1679]},{"teal":1908,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1680,1681]},{"teal":1919,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1682,1683,1684,1685,1686,1687]},{"teal":1920,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1688,1689]},{"teal":1921,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1690,1691,1692]},{"teal":1922,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1693]},{"teal":1923,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1694,1695]},{"teal":1924,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1696,1697]},{"teal":1925,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1698]},{"teal":1926,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1699,1700]},{"teal":1927,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1701,1702]},{"teal":1928,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1703]},{"teal":1929,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1704,1705]},{"teal":1930,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1706,1707]},{"teal":1931,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1708]},{"teal":1932,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1709]},{"teal":1933,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1710,1711]},{"teal":1934,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1712]},{"teal":1935,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1713]},{"teal":1936,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1714,1715]},{"teal":1937,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1716]},{"teal":1938,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1717]},{"teal":1939,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1718]},{"teal":1940,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1719,1720]},{"teal":1943,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1721]},{"teal":1944,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1722,1723]},{"teal":1947,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1724]},{"teal":1951,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1725,1726]},{"teal":1952,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1727,1728]},{"teal":1953,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1729]},{"teal":1954,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1730,1731,1732]},{"teal":1955,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1733]},{"teal":1956,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1734,1735]},{"teal":1957,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1736]},{"teal":1958,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1737]},{"teal":1959,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1738,1739]},{"teal":1960,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1740]},{"teal":1964,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1741,1742]},{"teal":1965,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1743,1744]},{"teal":1969,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1745,1746]},{"teal":1970,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1747,1748]},{"teal":1971,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1749]},{"teal":1972,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1750]},{"teal":1973,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1751,1752]},{"teal":1974,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1753]},{"teal":1975,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1754]},{"teal":1976,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1755]},{"teal":1977,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1756]},{"teal":1978,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1757,1758]},{"teal":1979,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1759]},{"teal":1980,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1760]},{"teal":1981,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1761,1762]},{"teal":1982,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1763]},{"teal":1983,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1764]},{"teal":1984,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1765,1766]},{"teal":1985,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1767]},{"teal":1989,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1768,1769]},{"teal":1990,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1770,1771]},{"teal":1991,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1772,1773]},{"teal":1992,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1774,1775,1776]},{"teal":2000,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1777,1778,1779,1780,1781,1782]},{"teal":2001,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1783,1784]},{"teal":2002,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1785]},{"teal":2003,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1786,1787]},{"teal":2004,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1788]},{"teal":2005,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1789]},{"teal":2006,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1790]},{"teal":2007,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1791,1792]},{"teal":2008,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1793]},{"teal":2011,"source":"contracts/validatorRegistry.algo.ts:497","errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1794]},{"teal":2012,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1795,1796,1797]},{"teal":2013,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1798]},{"teal":2014,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1799,1800]},{"teal":2015,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1801]},{"teal":2016,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1802]},{"teal":2017,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1803]},{"teal":2018,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1804]},{"teal":2022,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1805,1806]},{"teal":2023,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1807]},{"teal":2024,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1808,1809]},{"teal":2025,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1810]},{"teal":2026,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1811]},{"teal":2027,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1812,1813]},{"teal":2028,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1814]},{"teal":2029,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1815]},{"teal":2032,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1816,1817]},{"teal":2035,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1818,1819]},{"teal":2036,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1820]},{"teal":2041,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1821]},{"teal":2044,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1822,1823,1824]},{"teal":2045,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1825]},{"teal":2048,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1826,1827,1828]},{"teal":2049,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1829]},{"teal":2052,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1830,1831]},{"teal":2053,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1832]},{"teal":2054,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1833]},{"teal":2055,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1834]},{"teal":2056,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1835,1836]},{"teal":2057,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1837]},{"teal":2058,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1838]},{"teal":2061,"source":"contracts/validatorRegistry.algo.ts:513","errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[1839]},{"teal":2064,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1840,1841,1842]},{"teal":2065,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1843]},{"teal":2066,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1844]},{"teal":2067,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1845]},{"teal":2068,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1846]},{"teal":2080,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1847,1848,1849]},{"teal":2083,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1850]},{"teal":2084,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1851,1852]},{"teal":2088,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1853]},{"teal":2089,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1854,1855]},{"teal":2090,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1856]},{"teal":2091,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1857]},{"teal":2092,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1858]},{"teal":2093,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1859]},{"teal":2094,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1860]},{"teal":2097,"source":"contracts/validatorRegistry.algo.ts:514","errorMessage":"specified validator id isn't valid","pc":[1861]},{"teal":2102,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1862,1863]},{"teal":2103,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1864]},{"teal":2104,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1865]},{"teal":2105,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1866,1867]},{"teal":2106,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1868]},{"teal":2107,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1869]},{"teal":2108,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1870,1871]},{"teal":2109,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1872]},{"teal":2110,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1873]},{"teal":2111,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1874]},{"teal":2112,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1875]},{"teal":2113,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1876,1877,1878]},{"teal":2121,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1879,1880]},{"teal":2122,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1881]},{"teal":2123,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1882]},{"teal":2124,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1883,1884]},{"teal":2125,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1885]},{"teal":2126,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1886]},{"teal":2127,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1887,1888]},{"teal":2128,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1889]},{"teal":2129,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1890]},{"teal":2130,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1891,1892]},{"teal":2131,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1893]},{"teal":2134,"source":"contracts/validatorRegistry.algo.ts:519","errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[1894]},{"teal":2139,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1895,1896]},{"teal":2140,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1897,1898]},{"teal":2148,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1899,1900]},{"teal":2149,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1901,1902]},{"teal":2150,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1903,1904]},{"teal":2151,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1905]},{"teal":2154,"source":"contracts/validatorRegistry.algo.ts:530","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[1906]},{"teal":2157,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1907,1908]},{"teal":2158,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1909,1910]},{"teal":2159,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1911,1912]},{"teal":2160,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1913]},{"teal":2163,"source":"contracts/validatorRegistry.algo.ts:531","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1914]},{"teal":2167,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1915,1916]},{"teal":2168,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1917,1918]},{"teal":2169,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1919,1920,1921]},{"teal":2173,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1922,1923]},{"teal":2174,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1924,1925]},{"teal":2175,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1926,1927]},{"teal":2179,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1928]},{"teal":2180,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1929,1930]},{"teal":2185,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1931,1932]},{"teal":2186,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1933,1934,1935]},{"teal":2187,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1936,1937,1938]},{"teal":2192,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1939,1940,1941]},{"teal":2193,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1942,1943,1944]},{"teal":2194,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1945]},{"teal":2195,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1946,1947]},{"teal":2199,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1948,1949]},{"teal":2200,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1950,1951]},{"teal":2201,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1952]},{"teal":2202,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1953,1954]},{"teal":2206,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1955]},{"teal":2207,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1956,1957]},{"teal":2208,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1958]},{"teal":2209,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1959,1960,1961]},{"teal":2210,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1962]},{"teal":2211,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1963]},{"teal":2219,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1964,1965]},{"teal":2220,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1966]},{"teal":2221,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1967]},{"teal":2222,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1968,1969]},{"teal":2223,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1970]},{"teal":2224,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1971]},{"teal":2225,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1972,1973]},{"teal":2226,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1974]},{"teal":2227,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1975]},{"teal":2228,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1976,1977]},{"teal":2229,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1978]},{"teal":2230,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1979,1980,1981]},{"teal":2231,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1982]},{"teal":2234,"source":"contracts/validatorRegistry.algo.ts:551","errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[1983]},{"teal":2238,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1984,1985]},{"teal":2239,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1986,1987]},{"teal":2240,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1988,1989]},{"teal":2241,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1990,1991,1992]},{"teal":2242,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1993,1994]},{"teal":2248,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1995,1996]},{"teal":2249,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1997,1998]},{"teal":2250,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1999,2000]},{"teal":2251,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2001,2002]},{"teal":2252,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2003]},{"teal":2253,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2004,2005]},{"teal":2257,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2006,2007]},{"teal":2258,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2008,2009]},{"teal":2259,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2010,2011]},{"teal":2260,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2012,2013,2014]},{"teal":2261,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2015]},{"teal":2262,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2016,2017]},{"teal":2267,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2018,2019]},{"teal":2268,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2020,2021]},{"teal":2269,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2022,2023]},{"teal":2270,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2024,2025,2026]},{"teal":2271,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2027]},{"teal":2272,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2028]},{"teal":2273,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2029]},{"teal":2274,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2030,2031,2032]},{"teal":2278,"source":"contracts/validatorRegistry.algo.ts:563","errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2033]},{"teal":2283,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2034,2035]},{"teal":2284,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2036,2037]},{"teal":2285,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2038,2039]},{"teal":2286,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2040,2041,2042]},{"teal":2287,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2043,2044]},{"teal":2288,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2045,2046,2047]},{"teal":2298,"source":"contracts/validatorRegistry.algo.ts:575","pc":[2048,2049]},{"teal":2299,"source":"contracts/validatorRegistry.algo.ts:574","pc":[2050,2051]},{"teal":2300,"source":"contracts/validatorRegistry.algo.ts:573","pc":[2052,2053]},{"teal":2301,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2054,2055]},{"teal":2302,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2056,2057]},{"teal":2303,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2058,2059]},{"teal":2304,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2060,2061,2062]},{"teal":2305,"source":"contracts/validatorRegistry.algo.ts:571","pc":[2063,2064]},{"teal":2306,"source":"contracts/validatorRegistry.algo.ts:570","pc":[2065,2066,2067]},{"teal":2316,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2068,2069,2070,2071,2072,2073]},{"teal":2317,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2074,2075]},{"teal":2318,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2076]},{"teal":2319,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2077,2078]},{"teal":2320,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2079,2080]},{"teal":2321,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2081,2082]},{"teal":2322,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2083,2084,2085]},{"teal":2323,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2086]},{"teal":2324,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2087]},{"teal":2325,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2088]},{"teal":2326,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2089]},{"teal":2327,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2090,2091]},{"teal":2328,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2092]},{"teal":2331,"source":"contracts/validatorRegistry.algo.ts:579","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2093]},{"teal":2332,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2094,2095,2096]},{"teal":2333,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2097]},{"teal":2334,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2098,2099]},{"teal":2335,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2100,2101]},{"teal":2336,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2102,2103]},{"teal":2337,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2104,2105,2106]},{"teal":2338,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2107]},{"teal":2339,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2108]},{"teal":2340,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2109]},{"teal":2341,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2110,2111]},{"teal":2342,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2112]},{"teal":2343,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2113,2114]},{"teal":2344,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2115]},{"teal":2345,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2116]},{"teal":2346,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2117]},{"teal":2347,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2118]},{"teal":2351,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2119,2120]},{"teal":2352,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2121,2122]},{"teal":2353,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2123,2124]},{"teal":2354,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2125,2126,2127]},{"teal":2357,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2128,2129]},{"teal":2360,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2130,2131]},{"teal":2361,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2132]},{"teal":2366,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2133]},{"teal":2369,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2134,2135,2136]},{"teal":2370,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2137]},{"teal":2373,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2138,2139,2140]},{"teal":2374,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2141]},{"teal":2375,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2142]},{"teal":2376,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2143]},{"teal":2377,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2144]},{"teal":2395,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2145,2146,2147]},{"teal":2398,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2148]},{"teal":2399,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2149,2150]},{"teal":2403,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2151,2152]},{"teal":2404,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2153]},{"teal":2405,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2154]},{"teal":2406,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2155,2156]},{"teal":2407,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2157]},{"teal":2408,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2158]},{"teal":2409,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2159,2160]},{"teal":2410,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2161]},{"teal":2411,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2162]},{"teal":2412,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2163,2164]},{"teal":2416,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2165,2166]},{"teal":2417,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2167]},{"teal":2418,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2168]},{"teal":2419,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2169]},{"teal":2424,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2170,2171]},{"teal":2425,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2172,2173]},{"teal":2426,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2174,2175]},{"teal":2427,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2176]},{"teal":2428,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2177]},{"teal":2429,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2178,2179,2180]},{"teal":2434,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2181,2182]},{"teal":2435,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2183,2184]},{"teal":2436,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2185]},{"teal":2437,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2186,2187]},{"teal":2438,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2188]},{"teal":2439,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2189]},{"teal":2440,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2190,2191]},{"teal":2441,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2192]},{"teal":2442,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2193,2194,2195]},{"teal":2447,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2196,2197]},{"teal":2448,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2198,2199]},{"teal":2452,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2200,2201]},{"teal":2453,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2202]},{"teal":2454,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2203]},{"teal":2455,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2204,2205]},{"teal":2456,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2206]},{"teal":2457,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2207]},{"teal":2458,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2208,2209]},{"teal":2459,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2210]},{"teal":2460,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2211]},{"teal":2461,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2212,2213]},{"teal":2466,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2214,2215]},{"teal":2467,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2216]},{"teal":2468,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2217]},{"teal":2469,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2218,2219,2220]},{"teal":2475,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2221,2222]},{"teal":2476,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234]},{"teal":2477,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2235]},{"teal":2480,"source":"contracts/validatorRegistry.algo.ts:619","errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2236]},{"teal":2481,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2237,2238]},{"teal":2482,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2239]},{"teal":2483,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2240,2241,2242]},{"teal":2488,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2243,2244]},{"teal":2489,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2245,2246]},{"teal":2490,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2247]},{"teal":2491,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2248,2249]},{"teal":2492,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2250]},{"teal":2493,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2251]},{"teal":2494,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2252,2253]},{"teal":2495,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2254]},{"teal":2496,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2255,2256,2257]},{"teal":2501,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2258,2259,2260]},{"teal":2502,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2261,2262]},{"teal":2503,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2263]},{"teal":2504,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2264,2265]},{"teal":2505,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2266]},{"teal":2506,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2267]},{"teal":2507,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2268,2269]},{"teal":2508,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2270]},{"teal":2509,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2271]},{"teal":2510,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2272,2273]},{"teal":2514,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2274,2275]},{"teal":2515,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2276,2277]},{"teal":2516,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2278,2279]},{"teal":2517,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2280]},{"teal":2518,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2281]},{"teal":2519,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2282,2283]},{"teal":2524,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2284,2285]},{"teal":2525,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2286,2287]},{"teal":2526,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2288,2289]},{"teal":2527,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2290]},{"teal":2528,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2291]},{"teal":2529,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2292,2293]},{"teal":2530,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2294]},{"teal":2531,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2295,2296,2297]},{"teal":2536,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2298,2299]},{"teal":2537,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2300,2301]},{"teal":2538,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2302]},{"teal":2539,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2303,2304]},{"teal":2540,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2305]},{"teal":2541,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2306]},{"teal":2542,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2307,2308]},{"teal":2543,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2309]},{"teal":2544,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2310,2311,2312]},{"teal":2551,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2313,2314]},{"teal":2552,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2315,2316]},{"teal":2553,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2317]},{"teal":2554,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2318]},{"teal":2555,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2319,2320]},{"teal":2556,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2321]},{"teal":2557,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2322]},{"teal":2558,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2323,2324]},{"teal":2559,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2325]},{"teal":2563,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2326,2327]},{"teal":2564,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2328,2329]},{"teal":2565,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2330]},{"teal":2566,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2331,2332]},{"teal":2567,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2333]},{"teal":2568,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2334]},{"teal":2569,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2335,2336]},{"teal":2570,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2337]},{"teal":2571,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2338]},{"teal":2572,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2339,2340]},{"teal":2576,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2341,2342]},{"teal":2577,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2343]},{"teal":2578,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2344]},{"teal":2579,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2345,2346]},{"teal":2580,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2347]},{"teal":2581,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2348]},{"teal":2582,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2349,2350]},{"teal":2583,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2351]},{"teal":2584,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2352]},{"teal":2585,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2353,2354]},{"teal":2589,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2355]},{"teal":2590,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2356,2357]},{"teal":2595,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2358,2359]},{"teal":2596,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2360,2361]},{"teal":2597,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2362]},{"teal":2598,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2363,2364,2365]},{"teal":2605,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2366,2367]},{"teal":2606,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2368,2369]},{"teal":2607,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2370,2371]},{"teal":2608,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2372]},{"teal":2609,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2373]},{"teal":2610,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2374,2375]},{"teal":2611,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2376]},{"teal":2612,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2377]},{"teal":2613,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2378]},{"teal":2614,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2379,2380]},{"teal":2615,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2381]},{"teal":2616,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2382]},{"teal":2617,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2383,2384]},{"teal":2618,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2385]},{"teal":2619,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2386]},{"teal":2620,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2387,2388,2389,2390]},{"teal":2621,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2391]},{"teal":2622,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2392]},{"teal":2623,"source":"contracts/validatorRegistry.algo.ts:640","pc":[2393,2394]},{"teal":2624,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2395]},{"teal":2625,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2396]},{"teal":2626,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2397]},{"teal":2627,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2398]},{"teal":2628,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2399]},{"teal":2631,"source":"contracts/validatorRegistry.algo.ts:638","errorMessage":"wideRatio failed","pc":[2400]},{"teal":2632,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2401,2402]},{"teal":2636,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2403,2404]},{"teal":2637,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2405,2406]},{"teal":2638,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2407]},{"teal":2639,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2408]},{"teal":2640,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2409]},{"teal":2641,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2410,2411]},{"teal":2642,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2412]},{"teal":2643,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2413]},{"teal":2644,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2414,2415]},{"teal":2645,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2416]},{"teal":2646,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2417]},{"teal":2647,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2418,2419]},{"teal":2648,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2420]},{"teal":2653,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2421,2422]},{"teal":2654,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2423]},{"teal":2655,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2424]},{"teal":2656,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2425,2426]},{"teal":2657,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2427,2428,2429]},{"teal":2662,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2430,2431]},{"teal":2663,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2432,2433]},{"teal":2664,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2434]},{"teal":2665,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2435,2436]},{"teal":2666,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2437]},{"teal":2667,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2438]},{"teal":2668,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2439,2440]},{"teal":2669,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2441]},{"teal":2673,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2442,2443]},{"teal":2676,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2444,2445]},{"teal":2677,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2446]},{"teal":2682,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2447,2448,2449]},{"teal":2683,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2450]},{"teal":2686,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2451,2452,2453]},{"teal":2687,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2454]},{"teal":2690,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2455,2456,2457]},{"teal":2691,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2458]},{"teal":2694,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2459,2460,2461]},{"teal":2695,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2462]},{"teal":2698,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2463,2464,2465]},{"teal":2699,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2466]},{"teal":2700,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2467]},{"teal":2701,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2468]},{"teal":2702,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2469]},{"teal":2705,"source":"contracts/validatorRegistry.algo.ts:659","errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2470]},{"teal":2708,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2471,2472,2473]},{"teal":2709,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2474]},{"teal":2710,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2475]},{"teal":2724,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2476,2477,2478]},{"teal":2728,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2479,2480]},{"teal":2729,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2481,2482,2483]},{"teal":2733,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2484,2485]},{"teal":2734,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2486,2487]},{"teal":2735,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2488,2489,2490]},{"teal":2736,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2491]},{"teal":2737,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2492]},{"teal":2738,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2493]},{"teal":2739,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2494,2495]},{"teal":2740,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2496]},{"teal":2741,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2497]},{"teal":2742,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2498,2499]},{"teal":2743,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2500]},{"teal":2744,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2501,2502]},{"teal":2745,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2503,2504]},{"teal":2746,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2505,2506,2507]},{"teal":2747,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2508]},{"teal":2748,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2509]},{"teal":2749,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2510]},{"teal":2750,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2511,2512]},{"teal":2751,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2513]},{"teal":2752,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2514]},{"teal":2753,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2515,2516]},{"teal":2754,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2517]},{"teal":2755,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2518]},{"teal":2756,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2519]},{"teal":2757,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2520,2521]},{"teal":2758,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2522,2523,2524]},{"teal":2759,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2525]},{"teal":2760,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2526]},{"teal":2761,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2527]},{"teal":2762,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2528,2529]},{"teal":2763,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2530]},{"teal":2764,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2531]},{"teal":2765,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2532,2533]},{"teal":2766,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2534]},{"teal":2767,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2535]},{"teal":2768,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2536]},{"teal":2769,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2537,2538]},{"teal":2770,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2539,2540,2541]},{"teal":2771,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2542]},{"teal":2772,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2543]},{"teal":2773,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2544]},{"teal":2774,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2545,2546]},{"teal":2775,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2547]},{"teal":2779,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2548,2549]},{"teal":2780,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2550]},{"teal":2781,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2551]},{"teal":2782,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2552]},{"teal":2783,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2553,2554]},{"teal":2784,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2555,2556,2557]},{"teal":2785,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2558]},{"teal":2786,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2559]},{"teal":2787,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2560]},{"teal":2788,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2561,2562]},{"teal":2789,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2563]},{"teal":2790,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2564]},{"teal":2791,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2565,2566]},{"teal":2792,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2567]},{"teal":2793,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2568]},{"teal":2794,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2569]},{"teal":2795,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2570,2571]},{"teal":2796,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2572,2573,2574]},{"teal":2797,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2575]},{"teal":2798,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2576]},{"teal":2799,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2577]},{"teal":2800,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2578,2579]},{"teal":2801,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2580]},{"teal":2805,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2581,2582]},{"teal":2806,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2583]},{"teal":2807,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2584]},{"teal":2808,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2585]},{"teal":2809,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2586,2587]},{"teal":2810,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2588,2589,2590]},{"teal":2811,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2591]},{"teal":2812,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2592]},{"teal":2813,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2593]},{"teal":2814,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2594,2595]},{"teal":2815,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2596]},{"teal":2816,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2597]},{"teal":2817,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2598,2599]},{"teal":2818,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2600]},{"teal":2819,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2601]},{"teal":2820,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2602]},{"teal":2821,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2603,2604]},{"teal":2822,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2605,2606,2607]},{"teal":2823,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2608]},{"teal":2824,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2609]},{"teal":2825,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2610]},{"teal":2826,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2611,2612]},{"teal":2827,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2613]},{"teal":2831,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2614,2615]},{"teal":2832,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2616]},{"teal":2833,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2617,2618]},{"teal":2834,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2619]},{"teal":2835,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2620,2621]},{"teal":2836,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2622]},{"teal":2837,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2623]},{"teal":2841,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2624,2625]},{"teal":2842,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2626,2627,2628]},{"teal":2843,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2629]},{"teal":2844,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2630,2631,2632]},{"teal":2856,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2633,2634,2635,2636,2637,2638]},{"teal":2857,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2639,2640]},{"teal":2858,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2641,2642,2643]},{"teal":2859,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2644]},{"teal":2860,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2645]},{"teal":2861,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2646,2647]},{"teal":2862,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2648,2649,2650]},{"teal":2863,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2651]},{"teal":2864,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2652]},{"teal":2865,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2653]},{"teal":2866,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2654]},{"teal":2867,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2655,2656]},{"teal":2868,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2657]},{"teal":2871,"source":"contracts/validatorRegistry.algo.ts:679","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2658]},{"teal":2872,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2659,2660,2661]},{"teal":2873,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2662]},{"teal":2874,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2663,2664]},{"teal":2875,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2665,2666,2667]},{"teal":2876,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2668]},{"teal":2877,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2669]},{"teal":2878,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2670]},{"teal":2879,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2671,2672]},{"teal":2880,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2673]},{"teal":2881,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2674]},{"teal":2882,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2675,2676]},{"teal":2883,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2677]},{"teal":2884,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2678]},{"teal":2885,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2679,2680]},{"teal":2886,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2681]},{"teal":2887,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2682]},{"teal":2888,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2683,2684]},{"teal":2889,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2685]},{"teal":2890,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2686]},{"teal":2891,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2687]},{"teal":2892,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2688]},{"teal":2893,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2689]},{"teal":2898,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2690,2691,2692]},{"teal":2899,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2693]},{"teal":2900,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2694]},{"teal":2901,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2695]},{"teal":2902,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2696]},{"teal":2905,"source":"contracts/validatorRegistry.algo.ts:705","errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2697]},{"teal":2906,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2698]},{"teal":2907,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2699]},{"teal":2910,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2700,2701,2702]},{"teal":2911,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2703]},{"teal":2914,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2704,2705,2706]},{"teal":2915,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2707]},{"teal":2918,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2708,2709,2710]},{"teal":2919,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2711]},{"teal":2920,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2712]},{"teal":2921,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2713,2714]},{"teal":2922,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2715]},{"teal":2925,"source":"contracts/validatorRegistry.algo.ts:702","errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2716]},{"teal":2928,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2717,2718,2719]},{"teal":2929,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2720]},{"teal":2930,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2721]},{"teal":2931,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2722]},{"teal":2932,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2723]},{"teal":2935,"source":"contracts/validatorRegistry.algo.ts:701","errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2724]},{"teal":2938,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2725,2726,2727]},{"teal":2939,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2728]},{"teal":2940,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2729]},{"teal":2955,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2730,2731,2732]},{"teal":2958,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2733]},{"teal":2959,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2734,2735]},{"teal":2964,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2736,2737]},{"teal":2965,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2738,2739]},{"teal":2966,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2740]},{"teal":2967,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2741,2742,2743]},{"teal":2972,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2744]},{"teal":2973,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2745,2746]},{"teal":2974,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2747,2748]},{"teal":2975,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2749]},{"teal":2976,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2750,2751]},{"teal":2977,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2752,2753]},{"teal":2978,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2754]},{"teal":2979,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2755,2756]},{"teal":2980,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2757,2758]},{"teal":2981,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2759,2760]},{"teal":2982,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2761,2762]},{"teal":2983,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2763]},{"teal":2988,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2764,2765]},{"teal":2989,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2766,2767,2768]},{"teal":2993,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2769,2770]},{"teal":2994,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2771]},{"teal":2995,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2772]},{"teal":2996,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2773]},{"teal":2997,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2774,2775,2776]},{"teal":2998,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2777,2778]},{"teal":2999,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2779]},{"teal":3000,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2780]},{"teal":3001,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2781]},{"teal":3005,"source":"contracts/validatorRegistry.algo.ts:714","errorMessage":"should only be called if algo or reward was removed","pc":[2782]},{"teal":3009,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2783,2784]},{"teal":3010,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2785,2786]},{"teal":3011,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2787,2788,2789]},{"teal":3012,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2790]},{"teal":3013,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2791]},{"teal":3014,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2792]},{"teal":3015,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2793,2794]},{"teal":3016,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2795]},{"teal":3017,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2796]},{"teal":3018,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2797,2798]},{"teal":3019,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2799]},{"teal":3020,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2800,2801]},{"teal":3021,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2802,2803]},{"teal":3022,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2804,2805,2806]},{"teal":3023,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2807]},{"teal":3024,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2808]},{"teal":3025,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2809]},{"teal":3026,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2810,2811]},{"teal":3027,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2812]},{"teal":3028,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2813]},{"teal":3029,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2814,2815]},{"teal":3030,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2816]},{"teal":3031,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2817]},{"teal":3032,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2818]},{"teal":3033,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2819,2820]},{"teal":3034,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2821,2822,2823]},{"teal":3035,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2824]},{"teal":3036,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2825]},{"teal":3037,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2826]},{"teal":3038,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2827,2828]},{"teal":3039,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2829]},{"teal":3040,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2830]},{"teal":3041,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2831,2832]},{"teal":3042,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2833]},{"teal":3043,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2834]},{"teal":3044,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2835]},{"teal":3045,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2836,2837]},{"teal":3046,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2838,2839,2840]},{"teal":3047,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2841]},{"teal":3048,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2842]},{"teal":3049,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2843]},{"teal":3050,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2844,2845]},{"teal":3051,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2846]},{"teal":3055,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2847,2848]},{"teal":3056,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2849]},{"teal":3057,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2850]},{"teal":3058,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2851]},{"teal":3059,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2852,2853]},{"teal":3060,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2854,2855,2856]},{"teal":3061,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2857]},{"teal":3062,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2858]},{"teal":3063,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2859]},{"teal":3064,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2860,2861]},{"teal":3065,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2862]},{"teal":3066,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2863]},{"teal":3067,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2864,2865]},{"teal":3068,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2866]},{"teal":3069,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2867]},{"teal":3070,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2868]},{"teal":3071,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2869,2870]},{"teal":3072,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2871,2872,2873]},{"teal":3073,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2874]},{"teal":3074,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2875]},{"teal":3075,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2876]},{"teal":3076,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2877,2878]},{"teal":3077,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2879]},{"teal":3081,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2880,2881]},{"teal":3082,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2882]},{"teal":3083,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2883,2884]},{"teal":3084,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2885]},{"teal":3085,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2886,2887]},{"teal":3086,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2888]},{"teal":3087,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2889]},{"teal":3092,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2890,2891]},{"teal":3093,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2892]},{"teal":3094,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2893]},{"teal":3095,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2894,2895,2896]},{"teal":3100,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2897,2898]},{"teal":3101,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2899]},{"teal":3102,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2900]},{"teal":3103,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2901,2902]},{"teal":3104,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2903,2904,2905]},{"teal":3105,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2906]},{"teal":3106,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2907]},{"teal":3107,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2908]},{"teal":3108,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2909,2910]},{"teal":3109,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2911]},{"teal":3110,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2912]},{"teal":3111,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2913,2914]},{"teal":3115,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2915,2916]},{"teal":3116,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2917]},{"teal":3117,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2918]},{"teal":3120,"source":"contracts/validatorRegistry.algo.ts:723","errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[2919]},{"teal":3127,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2920,2921]},{"teal":3128,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2922]},{"teal":3129,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2923]},{"teal":3130,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2924,2925]},{"teal":3131,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2926,2927,2928]},{"teal":3132,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2929]},{"teal":3133,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2930]},{"teal":3134,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2931]},{"teal":3135,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2932,2933]},{"teal":3136,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2934]},{"teal":3137,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2935]},{"teal":3138,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2936,2937]},{"teal":3139,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2938]},{"teal":3142,"source":"contracts/validatorRegistry.algo.ts:724","errorMessage":"reward being removed must be covered by hold back amount","pc":[2939]},{"teal":3146,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2940,2941]},{"teal":3147,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2942]},{"teal":3148,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2943]},{"teal":3149,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2944]},{"teal":3150,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2945,2946]},{"teal":3151,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2947,2948,2949]},{"teal":3152,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2950]},{"teal":3153,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2951]},{"teal":3154,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2952]},{"teal":3155,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2953,2954]},{"teal":3156,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2955]},{"teal":3157,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2956]},{"teal":3158,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2957,2958]},{"teal":3159,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2959]},{"teal":3160,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2960]},{"teal":3161,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2961]},{"teal":3162,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2962,2963]},{"teal":3163,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2964,2965,2966]},{"teal":3164,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2967]},{"teal":3165,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2968]},{"teal":3166,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2969]},{"teal":3167,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2970,2971]},{"teal":3168,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2972]},{"teal":3173,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2973,2974]},{"teal":3174,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2975,2976,2977]},{"teal":3175,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2978]},{"teal":3176,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2979]},{"teal":3177,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2980]},{"teal":3178,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2981,2982,2983]},{"teal":3186,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2984]},{"teal":3187,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2985,2986]},{"teal":3188,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2987,2988]},{"teal":3189,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2989,2990]},{"teal":3190,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2991,2992]},{"teal":3194,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2993,2994]},{"teal":3195,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2995]},{"teal":3196,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2996]},{"teal":3197,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2997,2998]},{"teal":3198,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2999,3000,3001]},{"teal":3199,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3002]},{"teal":3200,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3003]},{"teal":3201,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3004]},{"teal":3202,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3005,3006]},{"teal":3203,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3007]},{"teal":3204,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3008]},{"teal":3205,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3009,3010]},{"teal":3209,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3011,3012]},{"teal":3210,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3013,3014]},{"teal":3211,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3015,3016]},{"teal":3212,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3017]},{"teal":3213,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3018,3019]},{"teal":3214,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3020,3021]},{"teal":3215,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3022]},{"teal":3216,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3023,3024]},{"teal":3219,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3025]},{"teal":3220,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3026,3027]},{"teal":3223,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3028]},{"teal":3236,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3029,3030]},{"teal":3237,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3031,3032]},{"teal":3238,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3033,3034,3035]},{"teal":3239,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3036]},{"teal":3240,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3037]},{"teal":3241,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3038,3039]},{"teal":3242,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3040,3041,3042]},{"teal":3243,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3043]},{"teal":3244,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3044]},{"teal":3245,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3045]},{"teal":3246,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3046]},{"teal":3247,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3047,3048]},{"teal":3248,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3049]},{"teal":3251,"source":"contracts/validatorRegistry.algo.ts:743","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3050]},{"teal":3252,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3051,3052,3053]},{"teal":3253,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3054]},{"teal":3254,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3055,3056]},{"teal":3255,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3057,3058,3059]},{"teal":3256,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3060]},{"teal":3257,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3061]},{"teal":3258,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3062]},{"teal":3259,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3063,3064]},{"teal":3260,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3065]},{"teal":3261,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3066,3067]},{"teal":3262,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3068]},{"teal":3263,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3069]},{"teal":3264,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3070,3071]},{"teal":3265,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3072]},{"teal":3266,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3073]},{"teal":3267,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3074,3075]},{"teal":3268,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3076]},{"teal":3269,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3077]},{"teal":3270,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3078]},{"teal":3271,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3079]},{"teal":3272,"source":"contracts/validatorRegistry.algo.ts:721","pc":[3080,3081,3082]},{"teal":3286,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3083,3084]},{"teal":3287,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3085,3086]},{"teal":3288,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3087,3088,3089]},{"teal":3289,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3090]},{"teal":3290,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3091]},{"teal":3291,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3092,3093]},{"teal":3292,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3094,3095,3096]},{"teal":3293,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3097]},{"teal":3294,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3098]},{"teal":3295,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3099]},{"teal":3296,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3100]},{"teal":3297,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3101,3102]},{"teal":3298,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3103]},{"teal":3301,"source":"contracts/validatorRegistry.algo.ts:753","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3104]},{"teal":3302,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3105,3106,3107]},{"teal":3303,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3108]},{"teal":3304,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3109,3110]},{"teal":3305,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3111,3112,3113]},{"teal":3306,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3114]},{"teal":3307,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3115]},{"teal":3308,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3116]},{"teal":3309,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3117,3118]},{"teal":3310,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3119]},{"teal":3311,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3120,3121]},{"teal":3312,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3122]},{"teal":3313,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3123]},{"teal":3314,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3124,3125]},{"teal":3315,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3126]},{"teal":3316,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3127,3128]},{"teal":3317,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3129]},{"teal":3318,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3130]},{"teal":3319,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3131]},{"teal":3325,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3132,3133]},{"teal":3326,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3134,3135,3136]},{"teal":3331,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3137,3138]},{"teal":3332,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3139,3140]},{"teal":3333,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3141,3142,3143]},{"teal":3334,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3144]},{"teal":3335,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3145]},{"teal":3336,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3146]},{"teal":3337,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3147,3148]},{"teal":3338,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3149]},{"teal":3339,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3150]},{"teal":3340,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3151]},{"teal":3341,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3152]},{"teal":3342,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3153,3154]},{"teal":3343,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3155,3156]},{"teal":3344,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3157,3158,3159]},{"teal":3345,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3160]},{"teal":3346,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3161]},{"teal":3347,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3162]},{"teal":3348,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3163,3164]},{"teal":3349,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3165]},{"teal":3350,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3166]},{"teal":3351,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3167]},{"teal":3352,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3168]},{"teal":3353,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3169,3170]},{"teal":3354,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3171]},{"teal":3355,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3172,3173]},{"teal":3356,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3174,3175,3176]},{"teal":3357,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3177]},{"teal":3358,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3178]},{"teal":3359,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3179]},{"teal":3360,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3180,3181]},{"teal":3361,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3182]},{"teal":3362,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3183]},{"teal":3363,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3184]},{"teal":3364,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3185]},{"teal":3365,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3186]},{"teal":3366,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3187,3188,3189]},{"teal":3367,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3190]},{"teal":3368,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3191,3192]},{"teal":3369,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3193,3194,3195]},{"teal":3370,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3196]},{"teal":3371,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3197]},{"teal":3372,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3198]},{"teal":3373,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3199,3200]},{"teal":3374,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3201]},{"teal":3382,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3202,3203]},{"teal":3383,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3204,3205,3206]},{"teal":3384,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3207]},{"teal":3385,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3208]},{"teal":3386,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3209,3210]},{"teal":3387,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3211,3212,3213]},{"teal":3388,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3214]},{"teal":3389,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3215]},{"teal":3390,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3216]},{"teal":3391,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3217,3218]},{"teal":3392,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3219,3220,3221]},{"teal":3393,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3222]},{"teal":3394,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3223]},{"teal":3395,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3224]},{"teal":3396,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3225,3226]},{"teal":3397,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3227,3228,3229]},{"teal":3398,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3230,3231]},{"teal":3402,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3232,3233]},{"teal":3403,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3234,3235]},{"teal":3404,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3236,3237]},{"teal":3405,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3238]},{"teal":3406,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3239]},{"teal":3407,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3240,3241]},{"teal":3411,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3242,3243]},{"teal":3412,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3244,3245]},{"teal":3413,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3246,3247]},{"teal":3414,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3248]},{"teal":3415,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3249]},{"teal":3416,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3250,3251]},{"teal":3421,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3252,3253]},{"teal":3422,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3254,3255,3256]},{"teal":3427,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3257,3258]},{"teal":3428,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3259]},{"teal":3429,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3260]},{"teal":3430,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3261]},{"teal":3431,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3262,3263]},{"teal":3432,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3264,3265,3266]},{"teal":3433,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3267]},{"teal":3434,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3268]},{"teal":3435,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3269]},{"teal":3436,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3270,3271]},{"teal":3437,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3272]},{"teal":3438,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3273]},{"teal":3439,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3274]},{"teal":3440,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3275]},{"teal":3441,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3276]},{"teal":3442,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3277]},{"teal":3443,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3278,3279]},{"teal":3444,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3280,3281,3282]},{"teal":3445,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3283]},{"teal":3446,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3284]},{"teal":3447,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3285]},{"teal":3448,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3286,3287]},{"teal":3449,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3288]},{"teal":3455,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3289,3290]},{"teal":3456,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3291,3292,3293]},{"teal":3461,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3294,3295]},{"teal":3462,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3296]},{"teal":3463,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3297]},{"teal":3464,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3298]},{"teal":3465,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3299,3300]},{"teal":3466,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3301]},{"teal":3467,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3302]},{"teal":3472,"source":"contracts/validatorRegistry.algo.ts:700","pc":[3303]},{"teal":3477,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3304]},{"teal":3480,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3305,3306,3307]},{"teal":3481,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3308]},{"teal":3484,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3309,3310,3311]},{"teal":3485,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3312]},{"teal":3486,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3313]},{"teal":3487,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3314,3315]},{"teal":3488,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3316]},{"teal":3491,"source":"contracts/validatorRegistry.algo.ts:799","errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3317]},{"teal":3494,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3318,3319,3320]},{"teal":3495,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3321]},{"teal":3498,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3322,3323,3324]},{"teal":3499,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3325]},{"teal":3500,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3326]},{"teal":3501,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3327]},{"teal":3502,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3328]},{"teal":3516,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3329,3330,3331]},{"teal":3519,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3332]},{"teal":3520,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3333,3334]},{"teal":3524,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3335]},{"teal":3525,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3336,3337]},{"teal":3529,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3338]},{"teal":3530,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3339,3340]},{"teal":3534,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3341,3342]},{"teal":3535,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3343,3344,3345]},{"teal":3536,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3346,3347]},{"teal":3541,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3348]},{"teal":3542,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3349,3350]},{"teal":3543,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3351]},{"teal":3544,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3352]},{"teal":3545,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3353]},{"teal":3546,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3354]},{"teal":3547,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3355,3356,3357]},{"teal":3552,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3358]},{"teal":3553,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3359,3360]},{"teal":3554,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3361]},{"teal":3555,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3362]},{"teal":3558,"source":"contracts/validatorRegistry.algo.ts:815","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3363]},{"teal":3559,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3364,3365]},{"teal":3563,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3366,3367]},{"teal":3564,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3368]},{"teal":3565,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3369]},{"teal":3566,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3370]},{"teal":3570,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3371]},{"teal":3571,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3372,3373]},{"teal":3576,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3374,3375]},{"teal":3577,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3376,3377]},{"teal":3578,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3378]},{"teal":3579,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3379,3380,3381]},{"teal":3584,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3382,3383]},{"teal":3585,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3384,3385]},{"teal":3586,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3386]},{"teal":3587,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3387,3388,3389]},{"teal":3592,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3390]},{"teal":3593,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3391,3392]},{"teal":3594,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3393,3394]},{"teal":3595,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3395]},{"teal":3596,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3396,3397]},{"teal":3597,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3398,3399]},{"teal":3598,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3400]},{"teal":3599,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3401,3402]},{"teal":3600,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3403,3404]},{"teal":3601,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3405,3406]},{"teal":3602,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3407,3408]},{"teal":3603,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3409]},{"teal":3609,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3410,3411]},{"teal":3610,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3412,3413]},{"teal":3611,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3414]},{"teal":3612,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3415]},{"teal":3613,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3416]},{"teal":3614,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3417]},{"teal":3615,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3418]},{"teal":3616,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3419]},{"teal":3617,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3420]},{"teal":3618,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3421]},{"teal":3619,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3422]},{"teal":3620,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3423,3424,3425]},{"teal":3623,"source":"contracts/validatorRegistry.algo.ts:822","pc":[3426,3427,3428]},{"teal":3628,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3429]},{"teal":3629,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3430,3431]},{"teal":3634,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3432,3433]},{"teal":3635,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3434,3435]},{"teal":3636,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3436]},{"teal":3637,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3437]},{"teal":3638,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3438]},{"teal":3639,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3439]},{"teal":3640,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3440]},{"teal":3641,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3441]},{"teal":3642,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3442]},{"teal":3643,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3443,3444]},{"teal":3644,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3445]},{"teal":3645,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3446,3447,3448]},{"teal":3650,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3449]},{"teal":3651,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3450,3451]},{"teal":3658,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3452,3453]},{"teal":3659,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3454,3455]},{"teal":3660,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3456,3457]},{"teal":3661,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3458]},{"teal":3662,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3459]},{"teal":3663,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3460]},{"teal":3664,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3461]},{"teal":3665,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3462]},{"teal":3666,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3463]},{"teal":3667,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3464]},{"teal":3668,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3465]},{"teal":3669,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3466]},{"teal":3670,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3467,3468]},{"teal":3671,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3469]},{"teal":3672,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3470]},{"teal":3673,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3471,3472]},{"teal":3674,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3473]},{"teal":3675,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3474]},{"teal":3676,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3475]},{"teal":3677,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3476,3477]},{"teal":3678,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3478]},{"teal":3679,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3479]},{"teal":3680,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3480,3481]},{"teal":3681,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3482]},{"teal":3682,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3483]},{"teal":3683,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3484,3485]},{"teal":3684,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3486]},{"teal":3685,"source":"contracts/validatorRegistry.algo.ts:831","pc":[3487,3488]},{"teal":3686,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3489]},{"teal":3687,"source":"contracts/validatorRegistry.algo.ts:828","pc":[3490,3491,3492]},{"teal":3692,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3493,3494]},{"teal":3693,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3495,3496]},{"teal":3694,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3497]},{"teal":3695,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3498]},{"teal":3696,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3499]},{"teal":3697,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3500]},{"teal":3698,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3501,3502]},{"teal":3699,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3503]},{"teal":3700,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3504,3505]},{"teal":3701,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3506]},{"teal":3702,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3507]},{"teal":3703,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3508,3509]},{"teal":3704,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3510]},{"teal":3705,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3511]},{"teal":3706,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3512,3513,3514]},{"teal":3715,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3515,3516]},{"teal":3716,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3517]},{"teal":3717,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3518]},{"teal":3718,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3519,3520]},{"teal":3719,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3521,3522,3523]},{"teal":3729,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3524,3525]},{"teal":3730,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3526,3527]},{"teal":3731,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3528]},{"teal":3732,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3529]},{"teal":3733,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3530,3531]},{"teal":3734,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3532]},{"teal":3735,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3533]},{"teal":3736,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3534,3535]},{"teal":3737,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3536]},{"teal":3738,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3537]},{"teal":3739,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3538]},{"teal":3742,"source":"contracts/validatorRegistry.algo.ts:840","errorMessage":"must stake at least the minimum for this pool","pc":[3539]},{"teal":3746,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3540,3541]},{"teal":3747,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3542,3543]},{"teal":3748,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3544]},{"teal":3749,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3545,3546]},{"teal":3750,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3547]},{"teal":3751,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3548]},{"teal":3752,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3549,3550]},{"teal":3753,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3551]},{"teal":3754,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3552,3553]},{"teal":3758,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3554,3555]},{"teal":3759,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3556,3557]},{"teal":3760,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3558]},{"teal":3761,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3559,3560]},{"teal":3762,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3561]},{"teal":3763,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3562]},{"teal":3764,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3563,3564]},{"teal":3765,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3565]},{"teal":3766,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3566]},{"teal":3767,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3567,3568]},{"teal":3771,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3569]},{"teal":3772,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3570,3571]},{"teal":3777,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3572,3573]},{"teal":3778,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3574,3575]},{"teal":3779,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3576]},{"teal":3780,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3577,3578,3579]},{"teal":3785,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3580,3581]},{"teal":3786,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3582,3583]},{"teal":3787,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3584,3585]},{"teal":3788,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3586]},{"teal":3789,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3587,3588]},{"teal":3790,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3589]},{"teal":3791,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3590]},{"teal":3792,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3591]},{"teal":3793,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3592]},{"teal":3794,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3593,3594]},{"teal":3795,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3595]},{"teal":3796,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3596,3597]},{"teal":3797,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3598]},{"teal":3798,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3599,3600,3601]},{"teal":3807,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3602,3603]},{"teal":3808,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3604]},{"teal":3809,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3605,3606]},{"teal":3810,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3607]},{"teal":3811,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3608]},{"teal":3812,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3609]},{"teal":3813,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3610]},{"teal":3814,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3611,3612]},{"teal":3815,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3613,3614]},{"teal":3816,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3615,3616]},{"teal":3817,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3617]},{"teal":3818,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3618]},{"teal":3819,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3619]},{"teal":3820,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3620]},{"teal":3821,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3621]},{"teal":3822,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3622]},{"teal":3823,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3623]},{"teal":3824,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3624]},{"teal":3825,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3625,3626]},{"teal":3826,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3627]},{"teal":3827,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3628,3629]},{"teal":3828,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3630]},{"teal":3829,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3631]},{"teal":3830,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3632,3633]},{"teal":3831,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3634]},{"teal":3832,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3635]},{"teal":3833,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3636,3637,3638]},{"teal":3840,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3639,3640]},{"teal":3841,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3641]},{"teal":3842,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3642]},{"teal":3843,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3643,3644]},{"teal":3844,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3645,3646,3647]},{"teal":3849,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3648,3649]},{"teal":3850,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3650]},{"teal":3851,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3651,3652]},{"teal":3852,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3653]},{"teal":3853,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3654,3655]},{"teal":3854,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3656]},{"teal":3855,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3657,3658]},{"teal":3856,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3659]},{"teal":3857,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3660,3661]},{"teal":3858,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3662]},{"teal":3859,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3663]},{"teal":3860,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3664,3665]},{"teal":3861,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3666]},{"teal":3862,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3667]},{"teal":3866,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3668,3669]},{"teal":3869,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3670,3671]},{"teal":3870,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3672]},{"teal":3875,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3673,3674,3675]},{"teal":3876,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3676]},{"teal":3879,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3677,3678,3679]},{"teal":3880,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3680]},{"teal":3883,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3681,3682,3683]},{"teal":3884,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3684]},{"teal":3887,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3685,3686,3687]},{"teal":3888,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3688]},{"teal":3889,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3689]},{"teal":3903,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3690,3691,3692]},{"teal":3906,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3693]},{"teal":3907,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3694,3695]},{"teal":3911,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3696,3697]},{"teal":3912,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3698,3699,3700]},{"teal":3916,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3701,3702]},{"teal":3917,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3703,3704]},{"teal":3918,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3705]},{"teal":3919,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3706,3707]},{"teal":3920,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3708]},{"teal":3921,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3709]},{"teal":3922,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3710,3711]},{"teal":3923,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3712]},{"teal":3924,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3713,3714]},{"teal":3928,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3715,3716]},{"teal":3929,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3717]},{"teal":3930,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3718]},{"teal":3931,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3719]},{"teal":3932,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3720,3721,3722]},{"teal":3933,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3723,3724]},{"teal":3934,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3725]},{"teal":3935,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3726]},{"teal":3936,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3727]},{"teal":3940,"source":"contracts/validatorRegistry.algo.ts:876","errorMessage":"node number out of allowable range","pc":[3728]},{"teal":3944,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3729]},{"teal":3945,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3730,3731]},{"teal":3950,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3732,3733]},{"teal":3951,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3734]},{"teal":3952,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3735]},{"teal":3953,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3736,3737,3738]},{"teal":3957,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3739]},{"teal":3958,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3740,3741]},{"teal":3963,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3742,3743]},{"teal":3964,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3744,3745]},{"teal":3965,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3746]},{"teal":3966,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3747,3748,3749]},{"teal":3971,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3750,3751]},{"teal":3972,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3752]},{"teal":3973,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3753,3754]},{"teal":3974,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3755]},{"teal":3975,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3756]},{"teal":3976,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3757]},{"teal":3977,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3758]},{"teal":3978,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3759]},{"teal":3979,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3760,3761]},{"teal":3980,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3762]},{"teal":3981,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3763]},{"teal":3982,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3764]},{"teal":3983,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3765]},{"teal":3984,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3766]},{"teal":3985,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3767]},{"teal":3986,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3768,3769]},{"teal":3987,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3770]},{"teal":3988,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3771,3772,3773]},{"teal":3993,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3774,3775]},{"teal":3994,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3776]},{"teal":3995,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3777]},{"teal":3996,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3778,3779]},{"teal":3997,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3780]},{"teal":4000,"source":"contracts/validatorRegistry.algo.ts:881","errorMessage":"can't move to same node","pc":[3781]},{"teal":4004,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3782,3783]},{"teal":4005,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3784,3785]},{"teal":4006,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3786]},{"teal":4007,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3787]},{"teal":4008,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3788]},{"teal":4009,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3789]},{"teal":4010,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3790]},{"teal":4011,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3791,3792]},{"teal":4012,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3793]},{"teal":4013,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3794]},{"teal":4014,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3795]},{"teal":4015,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3796,3797]},{"teal":4016,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3798]},{"teal":4017,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3799,3800]},{"teal":4018,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3801]},{"teal":4019,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3802]},{"teal":4020,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3803,3804]},{"teal":4021,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3805]},{"teal":4027,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3806]},{"teal":4028,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3807,3808]},{"teal":4029,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3809,3810]},{"teal":4030,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3811,3812,3813,3814,3815,3816]},{"teal":4031,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3817,3818]},{"teal":4035,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3819,3820]},{"teal":4036,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3821,3822]},{"teal":4039,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3823]},{"teal":4040,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3824,3825]},{"teal":4043,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3826]},{"teal":4047,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3827,3828]},{"teal":4048,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3829,3830]},{"teal":4049,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3831,3832]},{"teal":4050,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3833,3834,3835]},{"teal":4054,"source":"contracts/validatorRegistry.algo.ts:892","pc":[3836]},{"teal":4061,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3837,3838]},{"teal":4062,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3839]},{"teal":4063,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3840]},{"teal":4064,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3841,3842]},{"teal":4065,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3843,3844,3845]},{"teal":4072,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3846,3847]},{"teal":4073,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3848]},{"teal":4074,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3849]},{"teal":4075,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3850,3851]},{"teal":4076,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3852,3853,3854]},{"teal":4080,"source":"contracts/validatorRegistry.algo.ts:896","errorMessage":"couldn't find pool app id in nodes to move","pc":[3855]},{"teal":4081,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3856]},{"teal":4086,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3857]},{"teal":4089,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3858,3859,3860]},{"teal":4090,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3861]},{"teal":4091,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3862]},{"teal":4092,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3863,3864]},{"teal":4093,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3865]},{"teal":4096,"source":"contracts/validatorRegistry.algo.ts:910","errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[3866]},{"teal":4099,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3867,3868,3869]},{"teal":4100,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3870]},{"teal":4103,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3871,3872,3873]},{"teal":4104,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3874]},{"teal":4105,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3875]},{"teal":4106,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3876]},{"teal":4107,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3877]},{"teal":4108,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3878]},{"teal":4122,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3879,3880,3881]},{"teal":4125,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3882]},{"teal":4126,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3883,3884]},{"teal":4130,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3885,3886]},{"teal":4131,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3887,3888,3889]},{"teal":4135,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3890,3891]},{"teal":4136,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3892]},{"teal":4137,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3893]},{"teal":4138,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3894,3895]},{"teal":4139,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3896]},{"teal":4140,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3897]},{"teal":4141,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3898,3899]},{"teal":4142,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3900]},{"teal":4143,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3901]},{"teal":4144,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3902,3903]},{"teal":4148,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3904,3905]},{"teal":4149,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3906]},{"teal":4150,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3907]},{"teal":4151,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3908,3909]},{"teal":4152,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3910]},{"teal":4153,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3911]},{"teal":4154,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3912,3913]},{"teal":4155,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3914]},{"teal":4156,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3915]},{"teal":4157,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3916,3917]},{"teal":4161,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3918,3919]},{"teal":4162,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3920]},{"teal":4163,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3921]},{"teal":4166,"source":"contracts/validatorRegistry.algo.ts:914","errorMessage":"this validator doesn't have a reward token defined","pc":[3922]},{"teal":4170,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3923,3924]},{"teal":4171,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3925]},{"teal":4172,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3926]},{"teal":4173,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3927,3928]},{"teal":4174,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3929]},{"teal":4175,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3930]},{"teal":4176,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3931,3932]},{"teal":4177,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3933]},{"teal":4178,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3934]},{"teal":4179,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3935,3936]},{"teal":4184,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3937,3938]},{"teal":4185,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3939,3940]},{"teal":4186,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3941]},{"teal":4187,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3942,3943]},{"teal":4188,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3944,3945]},{"teal":4189,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3946]},{"teal":4190,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3947,3948]},{"teal":4191,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3949]},{"teal":4192,"source":"contracts/validatorRegistry.algo.ts:917","pc":[3950,3951]},{"teal":4199,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3952]},{"teal":4200,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3953,3954]},{"teal":4201,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3955,3956]},{"teal":4202,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3957,3958]},{"teal":4203,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3959,3960]},{"teal":4207,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3961,3962]},{"teal":4208,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3963,3964]},{"teal":4212,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3965,3966]},{"teal":4213,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3967,3968]},{"teal":4214,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3969,3970]},{"teal":4215,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3971]},{"teal":4216,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3972,3973]},{"teal":4217,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3974,3975]},{"teal":4218,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3976]},{"teal":4219,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3977,3978]},{"teal":4222,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3979]},{"teal":4223,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3980,3981]},{"teal":4226,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3982]},{"teal":4233,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3983,3984]},{"teal":4234,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3985,3986]},{"teal":4235,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3987]},{"teal":4236,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3988,3989]},{"teal":4237,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3990,3991]},{"teal":4238,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3992]},{"teal":4239,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3993,3994]},{"teal":4240,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3995]},{"teal":4243,"source":"contracts/validatorRegistry.algo.ts:925","errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[3996]},{"teal":4247,"source":"contracts/validatorRegistry.algo.ts:929","pc":[3997,3998]},{"teal":4250,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3999,4000]},{"teal":4253,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4001,4002]},{"teal":4254,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4003]},{"teal":4258,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4004,4005,4006]},{"teal":4265,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4007,4008]},{"teal":4266,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4009]},{"teal":4267,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4010,4011]},{"teal":4268,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4012]},{"teal":4269,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4013,4014]},{"teal":4270,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4015]},{"teal":4271,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4016]},{"teal":4272,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4017,4018]},{"teal":4273,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4019]},{"teal":4274,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4020]},{"teal":4277,"source":"contracts/validatorRegistry.algo.ts:1022","errorMessage":"can only be called by validator owner","pc":[4021]},{"teal":4278,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4022]},{"teal":4282,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4023,4024,4025]},{"teal":4290,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4026,4027]},{"teal":4291,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4028]},{"teal":4292,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4029,4030]},{"teal":4293,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4031]},{"teal":4294,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4032,4033]},{"teal":4295,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4034]},{"teal":4296,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4035]},{"teal":4297,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4036,4037]},{"teal":4298,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4038]},{"teal":4299,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4039]},{"teal":4300,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4040]},{"teal":4301,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4041,4042,4043]},{"teal":4302,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4044,4045]},{"teal":4303,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4046,4047]},{"teal":4304,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4048,4049]},{"teal":4305,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4050]},{"teal":4306,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4051,4052]},{"teal":4307,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4053]},{"teal":4308,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4054]},{"teal":4309,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4055,4056]},{"teal":4310,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4057]},{"teal":4311,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4058]},{"teal":4312,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4059]},{"teal":4316,"source":"contracts/validatorRegistry.algo.ts:1029","errorMessage":"can only be called by owner or manager of validator","pc":[4060]},{"teal":4317,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4061]},{"teal":4325,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4062,4063,4064]},{"teal":4329,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4065]},{"teal":4330,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4066,4067]},{"teal":4331,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4068,4069,4070]},{"teal":4332,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4071]},{"teal":4333,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4072]},{"teal":4334,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4073]},{"teal":4335,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4074]},{"teal":4336,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4075]},{"teal":4337,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4076]},{"teal":4340,"source":"contracts/validatorRegistry.algo.ts:1042","errorMessage":"the specified validator id isn't valid","pc":[4077]},{"teal":4344,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4078,4079]},{"teal":4345,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4080,4081,4082]},{"teal":4346,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4083]},{"teal":4347,"source":"contracts/constants.algo.ts:30","pc":[4084]},{"teal":4348,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4085]},{"teal":4351,"source":"contracts/validatorRegistry.algo.ts:1043","errorMessage":"pool id not in valid range","pc":[4086]},{"teal":4358,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4087,4088]},{"teal":4359,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4089,4090,4091]},{"teal":4360,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4092]},{"teal":4361,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4093]},{"teal":4362,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4094]},{"teal":4363,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4095]},{"teal":4364,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4096,4097,4098]},{"teal":4365,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4099,4100]},{"teal":4366,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4101,4102,4103]},{"teal":4367,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4104]},{"teal":4368,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4105,4106]},{"teal":4369,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4107,4108]},{"teal":4370,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4109]},{"teal":4371,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4110,4111]},{"teal":4372,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4112,4113,4114]},{"teal":4373,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4115]},{"teal":4374,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4116]},{"teal":4375,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4117]},{"teal":4376,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4118,4119]},{"teal":4377,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4120]},{"teal":4378,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4121]},{"teal":4379,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4122]},{"teal":4380,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4123]},{"teal":4384,"source":"contracts/validatorRegistry.algo.ts:1044","errorMessage":"pool id outside of range of pools created for this validator","pc":[4124]},{"teal":4391,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4125,4126]},{"teal":4392,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4127,4128,4129]},{"teal":4393,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4130]},{"teal":4394,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4131,4132]},{"teal":4395,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4133,4134]},{"teal":4396,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4135,4136,4137]},{"teal":4397,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4138]},{"teal":4398,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4139]},{"teal":4399,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4140]},{"teal":4400,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4141,4142]},{"teal":4401,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4143]},{"teal":4402,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4144]},{"teal":4403,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4145]},{"teal":4404,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4146]},{"teal":4405,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4147]},{"teal":4406,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4148]},{"teal":4407,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4149,4150]},{"teal":4408,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4151,4152,4153]},{"teal":4409,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4154]},{"teal":4410,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4155]},{"teal":4411,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4156]},{"teal":4412,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4157,4158]},{"teal":4413,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4159]},{"teal":4414,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4160]},{"teal":4415,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4161]},{"teal":4418,"source":"contracts/validatorRegistry.algo.ts:1050","errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4162]},{"teal":4422,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4163,4164]},{"teal":4423,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4165,4166]},{"teal":4424,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4167,4168,4169]},{"teal":4425,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4170]},{"teal":4426,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4171,4172]},{"teal":4427,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4173]},{"teal":4428,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4174]},{"teal":4429,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4175]},{"teal":4433,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4176,4177]},{"teal":4434,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4178,4179,4180]},{"teal":4435,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4181]},{"teal":4436,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4182,4183]},{"teal":4437,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4184,4185,4186]},{"teal":4438,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4187]},{"teal":4439,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200]},{"teal":4440,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4201]},{"teal":4443,"source":"contracts/validatorRegistry.algo.ts:1057","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4202]},{"teal":4444,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4203]},{"teal":4445,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4204]},{"teal":4449,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4205,4206]},{"teal":4450,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4207,4208,4209]},{"teal":4451,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4210]},{"teal":4452,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4211,4212]},{"teal":4453,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4213,4214,4215]},{"teal":4454,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4216]},{"teal":4455,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4217,4218,4219,4220,4221,4222,4223,4224]},{"teal":4456,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4225]},{"teal":4459,"source":"contracts/validatorRegistry.algo.ts:1058","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4226]},{"teal":4460,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4227]},{"teal":4461,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4228]},{"teal":4462,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4229]},{"teal":4471,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4230,4231,4232]},{"teal":4474,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4233]},{"teal":4475,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4234]},{"teal":4479,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4235]},{"teal":4480,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4236,4237]},{"teal":4481,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4238]},{"teal":4482,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4239]},{"teal":4483,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4240,4241]},{"teal":4488,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4242,4243]},{"teal":4489,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4244]},{"teal":4490,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4245]},{"teal":4491,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4246,4247]},{"teal":4492,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4248]},{"teal":4493,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4249]},{"teal":4494,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4250,4251]},{"teal":4495,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4252]},{"teal":4496,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4253]},{"teal":4497,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4254]},{"teal":4498,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4255]},{"teal":4499,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4256,4257,4258]},{"teal":4504,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4259,4260]},{"teal":4505,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4261]},{"teal":4506,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4262]},{"teal":4507,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4263,4264]},{"teal":4508,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4265]},{"teal":4509,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4266]},{"teal":4510,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4267,4268]},{"teal":4511,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4269]},{"teal":4512,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4270]},{"teal":4513,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4271,4272]},{"teal":4514,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4273]},{"teal":4517,"source":"contracts/validatorRegistry.algo.ts:1072","errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4274]},{"teal":4518,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4275,4276]},{"teal":4523,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4277]},{"teal":4524,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4278,4279]},{"teal":4525,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4280]},{"teal":4526,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4281,4282]},{"teal":4527,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4283]},{"teal":4528,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4284]},{"teal":4529,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4285,4286]},{"teal":4530,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4287]},{"teal":4531,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4288,4289]},{"teal":4532,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4290]},{"teal":4533,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4291]},{"teal":4534,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4292,4293,4294]},{"teal":4535,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4295,4296]},{"teal":4536,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4297,4298]},{"teal":4537,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4299]},{"teal":4538,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4300,4301]},{"teal":4539,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4302]},{"teal":4540,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4303]},{"teal":4541,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4304,4305]},{"teal":4542,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4306]},{"teal":4543,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4307,4308]},{"teal":4544,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4309]},{"teal":4545,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4310]},{"teal":4548,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4311,4312,4313]},{"teal":4553,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4314,4315]},{"teal":4554,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4316,4317]},{"teal":4555,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4318]},{"teal":4556,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4319,4320]},{"teal":4557,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4321]},{"teal":4558,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4322]},{"teal":4559,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4323,4324]},{"teal":4560,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4325]},{"teal":4565,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4326]},{"teal":4569,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4327,4328,4329]},{"teal":4573,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4330,4331]},{"teal":4574,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4332,4333,4334]},{"teal":4575,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4335,4336]},{"teal":4576,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4337]},{"teal":4577,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4338]},{"teal":4581,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4339,4340]},{"teal":4582,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4341,4342,4343]},{"teal":4583,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4344,4345]},{"teal":4584,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4346]},{"teal":4585,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4347]},{"teal":4589,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4348,4349]},{"teal":4590,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4350,4351]},{"teal":4591,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4352,4353,4354]},{"teal":4592,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4355]},{"teal":4595,"source":"contracts/validatorRegistry.algo.ts:1085","errorMessage":"sender must be owner to add new validator","pc":[4356]},{"teal":4602,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4357,4358]},{"teal":4603,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4359,4360,4361]},{"teal":4604,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4362]},{"teal":4605,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4363]},{"teal":4606,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4364]},{"teal":4607,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4365]},{"teal":4608,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4366,4367,4368]},{"teal":4609,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4369,4370]},{"teal":4610,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4371,4372,4373]},{"teal":4611,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4374]},{"teal":4612,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4375,4376]},{"teal":4613,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4377]},{"teal":4614,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4378]},{"teal":4618,"source":"contracts/validatorRegistry.algo.ts:1087","errorMessage":"gating type not valid","pc":[4379]},{"teal":4625,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4380,4381]},{"teal":4626,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4382,4383,4384]},{"teal":4627,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4385]},{"teal":4628,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4386]},{"teal":4629,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4387]},{"teal":4630,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4388]},{"teal":4631,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4389,4390,4391]},{"teal":4632,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4392,4393]},{"teal":4633,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4394,4395,4396]},{"teal":4634,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4397]},{"teal":4635,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4398,4399]},{"teal":4636,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4400]},{"teal":4637,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4401]},{"teal":4641,"source":"contracts/validatorRegistry.algo.ts:1091","errorMessage":"epoch length not in allowable range","pc":[4402]},{"teal":4648,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4403,4404]},{"teal":4649,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4405,4406,4407]},{"teal":4650,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4408]},{"teal":4651,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4409]},{"teal":4652,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4410]},{"teal":4653,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4411]},{"teal":4654,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4412,4413,4414]},{"teal":4655,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4415,4416]},{"teal":4656,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4417,4418,4419]},{"teal":4657,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4420]},{"teal":4658,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4421,4422]},{"teal":4659,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4423]},{"teal":4660,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4424]},{"teal":4664,"source":"contracts/validatorRegistry.algo.ts:1095","errorMessage":"commission percentage not valid","pc":[4425]},{"teal":4669,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4426,4427]},{"teal":4670,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4428,4429,4430]},{"teal":4671,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4431]},{"teal":4672,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4432]},{"teal":4673,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4433]},{"teal":4674,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4434,4435,4436]},{"teal":4682,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4437,4438]},{"teal":4683,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4439,4440,4441]},{"teal":4684,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4442,4443]},{"teal":4685,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4444]},{"teal":4688,"source":"contracts/validatorRegistry.algo.ts:1100","errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4445]},{"teal":4693,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4446,4447]},{"teal":4694,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4448,4449,4450]},{"teal":4695,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4451]},{"teal":4696,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4452,4453]},{"teal":4697,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4454]},{"teal":4700,"source":"contracts/validatorRegistry.algo.ts:1105","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4455]},{"teal":4707,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4456,4457]},{"teal":4708,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4458,4459,4460]},{"teal":4709,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4461]},{"teal":4710,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4462]},{"teal":4711,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4463]},{"teal":4712,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4464]},{"teal":4713,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4465,4466,4467]},{"teal":4714,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4468,4469]},{"teal":4715,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4470,4471,4472]},{"teal":4716,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4473]},{"teal":4717,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4474,4475]},{"teal":4718,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4476]},{"teal":4719,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4477]},{"teal":4723,"source":"contracts/validatorRegistry.algo.ts:1107","errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4478]},{"teal":4728,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4479,4480]},{"teal":4729,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4481,4482,4483]},{"teal":4730,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4484]},{"teal":4731,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4485]},{"teal":4732,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4486]},{"teal":4733,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4487,4488,4489]},{"teal":4738,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4490,4491]},{"teal":4739,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4492,4493,4494]},{"teal":4740,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4495]},{"teal":4741,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4496,4497]},{"teal":4742,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4498]},{"teal":4745,"source":"contracts/validatorRegistry.algo.ts:1112","errorMessage":"sunsettingOn must be later than now if set","pc":[4499]},{"teal":4748,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4500]},{"teal":4762,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4501,4502,4503]},{"teal":4765,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4504]},{"teal":4766,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4505,4506]},{"teal":4770,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4507,4508]},{"teal":4771,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4509,4510]},{"teal":4772,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4511,4512,4513]},{"teal":4773,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4514]},{"teal":4774,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4515]},{"teal":4775,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4516]},{"teal":4776,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4517,4518]},{"teal":4777,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4519]},{"teal":4778,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4520]},{"teal":4779,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4521]},{"teal":4780,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4522]},{"teal":4781,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4523]},{"teal":4782,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4524]},{"teal":4783,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4525,4526]},{"teal":4784,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4527,4528,4529]},{"teal":4785,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4530]},{"teal":4786,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4531]},{"teal":4787,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4532]},{"teal":4788,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4533,4534]},{"teal":4789,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4535]},{"teal":4790,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4536]},{"teal":4791,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4537,4538]},{"teal":4804,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4539]},{"teal":4805,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4540]},{"teal":4806,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4541,4542]},{"teal":4810,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4543,4544]},{"teal":4811,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4545,4546]},{"teal":4812,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4547,4548]},{"teal":4813,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4549]},{"teal":4814,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4550,4551]},{"teal":4818,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4552,4553]},{"teal":4819,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4554,4555]},{"teal":4820,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4556]},{"teal":4821,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4557,4558]},{"teal":4824,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4559]},{"teal":4825,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4560,4561]},{"teal":4826,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4562]},{"teal":4827,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4563,4564]},{"teal":4828,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4565,4566]},{"teal":4829,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4567,4568,4569,4570,4571,4572]},{"teal":4830,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4573,4574]},{"teal":4834,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4575,4576]},{"teal":4835,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4577,4578]},{"teal":4845,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4579,4580]},{"teal":4846,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4581,4582]},{"teal":4847,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4583,4584]},{"teal":4850,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4585]},{"teal":4851,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4586,4587]},{"teal":4854,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4588]},{"teal":4855,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4589,4590]},{"teal":4856,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4591]},{"teal":4857,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4592]},{"teal":4858,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4593,4594]},{"teal":4859,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4595,4596,4597]},{"teal":4860,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4598]},{"teal":4865,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4599,4600]},{"teal":4866,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4601,4602,4603]},{"teal":4867,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4604]},{"teal":4868,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4605,4606,4607]},{"teal":4873,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4608]},{"teal":4874,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4609,4610]},{"teal":4875,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4611,4612]},{"teal":4876,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4613]},{"teal":4877,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4614,4615]},{"teal":4878,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4616,4617]},{"teal":4879,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4618]},{"teal":4880,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4619,4620]},{"teal":4881,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4621,4622]},{"teal":4882,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4623,4624]},{"teal":4883,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4625,4626]},{"teal":4884,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4627]},{"teal":4889,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4628,4629]},{"teal":4890,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4630,4631]},{"teal":4891,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4632]},{"teal":4894,"source":"contracts/validatorRegistry.algo.ts:1153","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4633]},{"teal":4895,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4634,4635]},{"teal":4899,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4636,4637]},{"teal":4900,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4638,4639]},{"teal":4901,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4640]},{"teal":4904,"source":"contracts/validatorRegistry.algo.ts:1154","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4641]},{"teal":4905,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4642,4643]},{"teal":4909,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4644,4645]},{"teal":4910,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4646,4647]},{"teal":4911,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4648,4649,4650]},{"teal":4912,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4651]},{"teal":4913,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4652]},{"teal":4914,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4653]},{"teal":4915,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4654,4655]},{"teal":4916,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4656]},{"teal":4917,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4657]},{"teal":4918,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4658]},{"teal":4919,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4659]},{"teal":4920,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4660,4661]},{"teal":4921,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4662]},{"teal":4922,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4663,4664,4665]},{"teal":4923,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4666]},{"teal":4924,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4667,4668]},{"teal":4925,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4669,4670,4671]},{"teal":4926,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4672]},{"teal":4927,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4673]},{"teal":4928,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4674]},{"teal":4929,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4675,4676]},{"teal":4930,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4677]},{"teal":4934,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4678,4679]},{"teal":4935,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4680,4681]},{"teal":4936,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4682,4683,4684]},{"teal":4937,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4685]},{"teal":4938,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4686]},{"teal":4939,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4687]},{"teal":4940,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4688,4689]},{"teal":4941,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4690]},{"teal":4942,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4691]},{"teal":4943,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4692,4693]},{"teal":4944,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4694]},{"teal":4945,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4695,4696]},{"teal":4946,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4697]},{"teal":4947,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4698]},{"teal":4948,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4699,4700]},{"teal":4949,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4701,4702,4703]},{"teal":4950,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4704]},{"teal":4951,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4705]},{"teal":4952,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4706]},{"teal":4953,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4707,4708]},{"teal":4954,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4709]},{"teal":4959,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4710,4711]},{"teal":4960,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4712,4713,4714]},{"teal":4965,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4715,4716]},{"teal":4966,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4717]},{"teal":4967,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4718]},{"teal":4968,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4719]},{"teal":4969,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4720,4721]},{"teal":4970,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4722,4723,4724]},{"teal":4971,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4725]},{"teal":4972,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4726]},{"teal":4973,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4727]},{"teal":4974,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4728,4729]},{"teal":4975,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4730]},{"teal":4976,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4731]},{"teal":4977,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4732]},{"teal":4978,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4733]},{"teal":4979,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4734]},{"teal":4980,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4735]},{"teal":4981,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4736,4737]},{"teal":4982,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4738,4739,4740]},{"teal":4983,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4741]},{"teal":4984,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4742]},{"teal":4985,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4743]},{"teal":4986,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4744,4745]},{"teal":4987,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4746]},{"teal":4993,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4747,4748]},{"teal":4994,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4749,4750,4751]},{"teal":4999,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4752,4753]},{"teal":5000,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4754]},{"teal":5001,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4755]},{"teal":5002,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4756]},{"teal":5003,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4757,4758]},{"teal":5004,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4759]},{"teal":5005,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4760]},{"teal":5010,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4761,4762]},{"teal":5011,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4763]},{"teal":5012,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4764]},{"teal":5013,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4765]},{"teal":5014,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4766,4767]},{"teal":5015,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4768,4769,4770]},{"teal":5016,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4771]},{"teal":5017,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4772]},{"teal":5018,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4773]},{"teal":5019,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4774,4775]},{"teal":5020,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4776]},{"teal":5021,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4777]},{"teal":5022,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4778,4779]},{"teal":5023,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4780,4781]},{"teal":5024,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4782,4783]},{"teal":5025,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4784]},{"teal":5026,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4785]},{"teal":5027,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4786]},{"teal":5028,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4787]},{"teal":5029,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4788,4789]},{"teal":5030,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4790,4791,4792]},{"teal":5031,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4793]},{"teal":5032,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4794]},{"teal":5033,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4795]},{"teal":5034,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4796,4797]},{"teal":5035,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4798]},{"teal":5039,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4799,4800]},{"teal":5040,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4801]},{"teal":5041,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4802,4803]},{"teal":5042,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4804,4805]},{"teal":5043,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4806,4807]},{"teal":5044,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4808]},{"teal":5045,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4809]},{"teal":5046,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4810,4811]},{"teal":5047,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4812]},{"teal":5048,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4813]},{"teal":5049,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4814]},{"teal":5053,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4815,4816,4817]},{"teal":5056,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4818]},{"teal":5057,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4819,4820]},{"teal":5061,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4821]},{"teal":5062,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4822,4823]},{"teal":5063,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4824]},{"teal":5064,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4825]},{"teal":5065,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4826]},{"teal":5066,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4827]},{"teal":5067,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4828]},{"teal":5071,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4829]},{"teal":5072,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4830,4831]},{"teal":5073,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4832]},{"teal":5074,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4833]},{"teal":5077,"source":"contracts/validatorRegistry.algo.ts:1172","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4834]},{"teal":5078,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4835,4836]},{"teal":5082,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4837]},{"teal":5083,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4838,4839]},{"teal":5087,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4840]},{"teal":5088,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4841,4842]},{"teal":5093,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4843,4844]},{"teal":5094,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4845,4846]},{"teal":5095,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4847]},{"teal":5096,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4848,4849,4850]},{"teal":5101,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4851,4852]},{"teal":5102,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4853,4854]},{"teal":5103,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4855]},{"teal":5104,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4856]},{"teal":5105,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4857]},{"teal":5106,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4858]},{"teal":5107,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4859,4860]},{"teal":5108,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4861]},{"teal":5109,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4862,4863,4864]},{"teal":5114,"source":"contracts/validatorRegistry.algo.ts:1177","pc":[4865]},{"teal":5120,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4866,4867]},{"teal":5121,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4868]},{"teal":5122,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4869]},{"teal":5123,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4870]},{"teal":5124,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4871,4872,4873]},{"teal":5125,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4874,4875]},{"teal":5126,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4876,4877]},{"teal":5127,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4878]},{"teal":5128,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4879]},{"teal":5129,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4880]},{"teal":5130,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4881]},{"teal":5131,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4882]},{"teal":5132,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4883]},{"teal":5133,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4884]},{"teal":5134,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4885]},{"teal":5135,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4886]},{"teal":5136,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4887]},{"teal":5139,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4888,4889,4890]},{"teal":5144,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4891,4892]},{"teal":5145,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4893]},{"teal":5146,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4894]},{"teal":5147,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4895,4896]},{"teal":5154,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4897,4898]},{"teal":5155,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4899]},{"teal":5156,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4900]},{"teal":5157,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4901,4902]},{"teal":5158,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4903,4904,4905]},{"teal":5164,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4906,4907]},{"teal":5165,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4908]},{"teal":5166,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4909]},{"teal":5167,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4910,4911,4912]},{"teal":5171,"source":"contracts/validatorRegistry.algo.ts:1184","errorMessage":"No empty slot available in the staker pool set","pc":[4913]},{"teal":5176,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4914,4915]},{"teal":5177,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4916]},{"teal":5178,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4917]},{"teal":5179,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4918]},{"teal":5180,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4919]},{"teal":5181,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4920,4921]},{"teal":5182,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4922]},{"teal":5183,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4923,4924]},{"teal":5184,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4925]},{"teal":5185,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4926,4927]},{"teal":5186,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4928]},{"teal":5187,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4929]},{"teal":5198,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4930,4931,4932]},{"teal":5201,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4933]},{"teal":5202,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4934,4935]},{"teal":5206,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4936]},{"teal":5207,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4937,4938]},{"teal":5211,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4939]},{"teal":5212,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4940,4941]},{"teal":5216,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4942]},{"teal":5217,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4943,4944]},{"teal":5221,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4945]},{"teal":5222,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4946,4947]},{"teal":5223,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4948]},{"teal":5224,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4949]},{"teal":5227,"source":"contracts/validatorRegistry.algo.ts:1203","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4950]},{"teal":5228,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4951,4952]},{"teal":5232,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4953]},{"teal":5233,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4954,4955]},{"teal":5238,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4956,4957]},{"teal":5239,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4958,4959]},{"teal":5240,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4960]},{"teal":5241,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4961,4962,4963]},{"teal":5246,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4964,4965]},{"teal":5247,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4966,4967]},{"teal":5248,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4968]},{"teal":5249,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4969]},{"teal":5250,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4970]},{"teal":5251,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4971]},{"teal":5252,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4972]},{"teal":5253,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4973]},{"teal":5254,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4974]},{"teal":5255,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4975]},{"teal":5256,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4976]},{"teal":5257,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4977,4978,4979]},{"teal":5260,"source":"contracts/validatorRegistry.algo.ts:1206","pc":[4980,4981,4982]},{"teal":5265,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4983,4984]},{"teal":5266,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4985]},{"teal":5267,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4986]},{"teal":5268,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4987,4988]},{"teal":5273,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4989,4990]},{"teal":5274,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4991,4992]},{"teal":5275,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4993]},{"teal":5276,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4994]},{"teal":5277,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4995]},{"teal":5278,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4996]},{"teal":5279,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4997]},{"teal":5280,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4998]},{"teal":5281,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4999]},{"teal":5282,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5000,5001]},{"teal":5283,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5002,5003,5004]},{"teal":5284,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5005]},{"teal":5285,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5006]},{"teal":5286,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5007,5008,5009]},{"teal":5292,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5010,5011]},{"teal":5293,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5012,5013]},{"teal":5294,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5014]},{"teal":5295,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5015]},{"teal":5296,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5016]},{"teal":5297,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5017]},{"teal":5298,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5018,5019]},{"teal":5299,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5020]},{"teal":5300,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5021,5022,5023]},{"teal":5305,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5024]},{"teal":5306,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5025,5026]},{"teal":5310,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5027,5028]},{"teal":5311,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5029]},{"teal":5312,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5030]},{"teal":5313,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056]},{"teal":5314,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5057]},{"teal":5315,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5058,5059]},{"teal":5316,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5060]},{"teal":5317,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5061,5062]},{"teal":5318,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5063]},{"teal":5319,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5064,5065,5066]},{"teal":5324,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5067,5068]},{"teal":5325,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5069]},{"teal":5326,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5070]},{"teal":5327,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5071,5072]},{"teal":5336,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5073,5074]},{"teal":5337,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5075]},{"teal":5338,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5076]},{"teal":5339,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5077,5078]},{"teal":5340,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5079,5080,5081]},{"teal":5346,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5082,5083]},{"teal":5347,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5084]},{"teal":5348,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5085,5086,5087]},{"teal":5352,"source":"contracts/validatorRegistry.algo.ts:1220","errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5088]},{"teal":5357,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5089,5090]},{"teal":5358,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5091]},{"teal":5359,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5092,5093]},{"teal":5360,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5094]},{"teal":5361,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5095]},{"teal":5362,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5096]},{"teal":5363,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5097]},{"teal":5364,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5098,5099]},{"teal":5365,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5100]},{"teal":5366,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5101]},{"teal":5367,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5102]},{"teal":5370,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5103,5104]},{"teal":5373,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5105,5106]},{"teal":5374,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5107]},{"teal":5378,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5108,5109,5110]},{"teal":5381,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5111]},{"teal":5382,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5112,5113]},{"teal":5386,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5114,5115]},{"teal":5387,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5116,5117]},{"teal":5388,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5118]},{"teal":5389,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5119,5120]},{"teal":5390,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5121]},{"teal":5391,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5122]},{"teal":5392,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5123,5124]},{"teal":5393,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5125]},{"teal":5394,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5126,5127]},{"teal":5398,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5128,5129,5130]},{"teal":5399,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5131]},{"teal":5400,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5132]},{"teal":5401,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5133,5134]},{"teal":5402,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5135]},{"teal":5403,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5136]},{"teal":5404,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5137,5138]},{"teal":5405,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5139]},{"teal":5406,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5140]},{"teal":5407,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5141,5142]},{"teal":5411,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5143,5144]},{"teal":5412,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5145]},{"teal":5413,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5146]},{"teal":5414,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5147]},{"teal":5415,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5148,5149,5150]},{"teal":5416,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5151,5152]},{"teal":5417,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5153]},{"teal":5418,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5154]},{"teal":5419,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5155]},{"teal":5423,"source":"contracts/validatorRegistry.algo.ts:1230","errorMessage":"node number not in valid range","pc":[5156]},{"teal":5427,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5157]},{"teal":5428,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5158,5159]},{"teal":5433,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5160,5161]},{"teal":5434,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5162,5163]},{"teal":5435,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5164]},{"teal":5436,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5165,5166,5167]},{"teal":5441,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5168,5169]},{"teal":5442,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5170]},{"teal":5443,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5171,5172]},{"teal":5444,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5173]},{"teal":5445,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5174]},{"teal":5446,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5175]},{"teal":5447,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5176]},{"teal":5448,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5177]},{"teal":5449,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5178]},{"teal":5450,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5179]},{"teal":5451,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5180,5181]},{"teal":5452,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5182]},{"teal":5453,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5183]},{"teal":5454,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5184]},{"teal":5455,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5185]},{"teal":5456,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5186]},{"teal":5457,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5187]},{"teal":5458,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5188]},{"teal":5459,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5189]},{"teal":5460,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5190,5191,5192]},{"teal":5465,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5193,5194]},{"teal":5466,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5195,5196]},{"teal":5467,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5197]},{"teal":5468,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5198]},{"teal":5469,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5199]},{"teal":5470,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5200]},{"teal":5471,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5201]},{"teal":5472,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5202]},{"teal":5473,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5203]},{"teal":5474,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5204,5205]},{"teal":5475,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5206]},{"teal":5476,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5207]},{"teal":5477,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5208]},{"teal":5478,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5209,5210]},{"teal":5479,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5211]},{"teal":5480,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5212]},{"teal":5481,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5213,5214]},{"teal":5482,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5215]},{"teal":5483,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5216]},{"teal":5484,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5217,5218]},{"teal":5485,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5219]},{"teal":5489,"source":"contracts/validatorRegistry.algo.ts:1236","pc":[5220]},{"teal":5496,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5221,5222]},{"teal":5497,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5223]},{"teal":5498,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5224]},{"teal":5499,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5225,5226]},{"teal":5500,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5227,5228,5229]},{"teal":5504,"source":"contracts/validatorRegistry.algo.ts:1239","errorMessage":"no available space in specified node for this pool","pc":[5230]},{"teal":5505,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5231]},{"teal":5515,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5232,5233,5234]},{"teal":5518,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5235]},{"teal":5519,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5236,5237]},{"teal":5523,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5238,5239]},{"teal":5524,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5240]},{"teal":5525,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5241]},{"teal":5526,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5242,5243]},{"teal":5527,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5244]},{"teal":5528,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5245]},{"teal":5529,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5246,5247]},{"teal":5530,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5248]},{"teal":5531,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5249]},{"teal":5532,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5250,5251]},{"teal":5537,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5252,5253]},{"teal":5538,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5254]},{"teal":5539,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5255]},{"teal":5540,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5256,5257,5258]},{"teal":5545,"source":"contracts/validatorRegistry.algo.ts:1252","pc":[5259]},{"teal":5550,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5260,5261]},{"teal":5551,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5262,5263]},{"teal":5555,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5264]},{"teal":5556,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5265,5266]},{"teal":5557,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5267]},{"teal":5558,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5268,5269]},{"teal":5559,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5270]},{"teal":5560,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5271]},{"teal":5561,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5272,5273]},{"teal":5562,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5274]},{"teal":5563,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5275,5276]},{"teal":5570,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5277,5278]},{"teal":5571,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5279]},{"teal":5572,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5280]},{"teal":5573,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5281]},{"teal":5574,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5282,5283,5284]},{"teal":5575,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5285,5286]},{"teal":5576,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5287,5288]},{"teal":5577,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5289]},{"teal":5578,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5290]},{"teal":5581,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5291]},{"teal":5582,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5292,5293,5294]},{"teal":5583,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5295,5296]},{"teal":5584,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5297,5298]},{"teal":5585,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5299]},{"teal":5586,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5300]},{"teal":5589,"source":"contracts/validatorRegistry.algo.ts:1258","pc":[5301,5302,5303]},{"teal":5594,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5304,5305]},{"teal":5595,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5306]},{"teal":5596,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5307]},{"teal":5597,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5308]},{"teal":5601,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5309,5310]},{"teal":5602,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5311]},{"teal":5603,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5312]},{"teal":5604,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5313,5314]},{"teal":5605,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5315]},{"teal":5606,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5316]},{"teal":5607,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5317,5318]},{"teal":5608,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5319]},{"teal":5609,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5320]},{"teal":5610,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5321,5322]},{"teal":5615,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5323,5324]},{"teal":5616,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5325]},{"teal":5617,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5326]},{"teal":5618,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5327,5328,5329]},{"teal":5623,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5330]},{"teal":5624,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5331,5332]},{"teal":5632,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5333,5334]},{"teal":5633,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5335,5336]},{"teal":5634,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5337,5338]},{"teal":5635,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5339]},{"teal":5636,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5340,5341]},{"teal":5637,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5342]},{"teal":5640,"source":"contracts/validatorRegistry.algo.ts:1268","errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5343]},{"teal":5646,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5344,5345]},{"teal":5647,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5346]},{"teal":5648,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5347]},{"teal":5649,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5348,5349,5350]},{"teal":5657,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5351,5352]},{"teal":5658,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5353,5354]},{"teal":5659,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5355]},{"teal":5660,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5356,5357]},{"teal":5661,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5358,5359,5360]},{"teal":5662,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5361]},{"teal":5665,"source":"contracts/validatorRegistry.algo.ts:1274","errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5362]},{"teal":5671,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5363,5364]},{"teal":5672,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5365,5366]},{"teal":5673,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5367]},{"teal":5674,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5368,5369,5370]},{"teal":5679,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5371]},{"teal":5680,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5372,5373]},{"teal":5684,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5374,5375]},{"teal":5685,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5376,5377,5378]},{"teal":5686,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5379]},{"teal":5687,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5380,5381]},{"teal":5688,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5382,5383,5384]},{"teal":5689,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5385]},{"teal":5690,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5386,5387]},{"teal":5691,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5388]},{"teal":5692,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5389,5390]},{"teal":5698,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5391,5392]},{"teal":5699,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5393,5394]},{"teal":5700,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5395]},{"teal":5701,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5396,5397,5398]},{"teal":5706,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5399]},{"teal":5707,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5400,5401]},{"teal":5708,"source":"contracts/validatorRegistry.algo.ts:1284","pc":[5402,5403,5404]},{"teal":5714,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5405,5406]},{"teal":5715,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5407]},{"teal":5716,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5408]},{"teal":5717,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5409]},{"teal":5718,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5410,5411]},{"teal":5719,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5412]},{"teal":5720,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5413,5414,5415]},{"teal":5721,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5416,5417]},{"teal":5722,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5418,5419]},{"teal":5723,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5420,5421]},{"teal":5724,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5422]},{"teal":5725,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5423]},{"teal":5726,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5424]},{"teal":5727,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5425,5426]},{"teal":5728,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5427,5428,5429]},{"teal":5733,"source":"contracts/validatorRegistry.algo.ts:1287","pc":[5430,5431]},{"teal":5736,"source":"contracts/validatorRegistry.algo.ts:1287","errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5432]},{"teal":5742,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5433,5434]},{"teal":5743,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5435,5436]},{"teal":5744,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5437]},{"teal":5745,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5438,5439,5440]},{"teal":5753,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5441,5442]},{"teal":5754,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5443,5444]},{"teal":5755,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5445]},{"teal":5756,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5446,5447]},{"teal":5757,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5448,5449,5450]},{"teal":5758,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5451]},{"teal":5759,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5452,5453,5454]},{"teal":5762,"source":"contracts/validatorRegistry.algo.ts:1292","errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5455]},{"teal":5768,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5456,5457]},{"teal":5769,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5458,5459]},{"teal":5770,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5460]},{"teal":5771,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5461,5462,5463]},{"teal":5776,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5464,5465]},{"teal":5777,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5466,5467]},{"teal":5781,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5468,5469]},{"teal":5782,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5470,5471,5472]},{"teal":5785,"source":"contracts/validatorRegistry.algo.ts:1300","errorMessage":"provided NFD must be valid","pc":[5473]},{"teal":5793,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5474,5475]},{"teal":5794,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5476,5477]},{"teal":5795,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5478]},{"teal":5798,"source":"contracts/validatorRegistry.algo.ts:1304","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5479]},{"teal":5799,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5480,5481]},{"teal":5800,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5482]},{"teal":5801,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5483]},{"teal":5802,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5484,5485,5486]},{"teal":5803,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5487,5488]},{"teal":5804,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5489,5490]},{"teal":5805,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5491,5492,5493]},{"teal":5806,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5494]},{"teal":5810,"source":"contracts/validatorRegistry.algo.ts:1303","errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5495]},{"teal":5818,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5496,5497]},{"teal":5819,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512]},{"teal":5820,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5513]},{"teal":5823,"source":"contracts/validatorRegistry.algo.ts:1311","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5514]},{"teal":5824,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5515]},{"teal":5825,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5516,5517]},{"teal":5826,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5518,5519,5520]},{"teal":5827,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5521]},{"teal":5828,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5522]},{"teal":5831,"source":"contracts/validatorRegistry.algo.ts:1310","errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5523]},{"teal":5834,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5524]},{"teal":5846,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5525,5526,5527]},{"teal":5849,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5528]},{"teal":5853,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5529,5530]},{"teal":5854,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5531,5532,5533,5534,5535,5536,5537,5538]},{"teal":5855,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5539]},{"teal":5858,"source":"contracts/validatorRegistry.algo.ts:1329","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5540]},{"teal":5859,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5541,5542]},{"teal":5867,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5543]},{"teal":5868,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5544,5545]},{"teal":5869,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5546,5547]},{"teal":5870,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5548,5549,5550,5551,5552,5553]},{"teal":5871,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5554,5555]},{"teal":5875,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5556,5557]},{"teal":5876,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5558,5559]},{"teal":5880,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5560,5561]},{"teal":5881,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5562]},{"teal":5882,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5563]},{"teal":5883,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5564]},{"teal":5884,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5565,5566,5567]},{"teal":5885,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5568]},{"teal":5886,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5569]},{"teal":5887,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5570,5571]},{"teal":5888,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5572,5573]},{"teal":5889,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5574]},{"teal":5890,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5575,5576]},{"teal":5893,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5577]},{"teal":5894,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5578,5579]},{"teal":5897,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5580]},{"teal":5898,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5581,5582]},{"teal":5899,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5583]},{"teal":5900,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5584]},{"teal":5901,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5585,5586]},{"teal":5902,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5587,5588,5589]},{"teal":5903,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5590]},{"teal":5904,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5591]},{"teal":5907,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5592,5593]},{"teal":5908,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5594]},{"teal":5919,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5595,5596,5597]},{"teal":5922,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5598]},{"teal":5923,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5599,5600]},{"teal":5930,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5601]},{"teal":5931,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5602,5603]},{"teal":5932,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5604,5605]},{"teal":5936,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5606,5607]},{"teal":5937,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5608,5609]},{"teal":5941,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624]},{"teal":5942,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5625,5626]},{"teal":5943,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641]},{"teal":5944,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5642,5643]},{"teal":5947,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5644]},{"teal":5948,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5645,5646]},{"teal":5951,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5647]},{"teal":5955,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5648,5649]},{"teal":5956,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5650,5651]},{"teal":5960,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5652]},{"teal":5961,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5653,5654]},{"teal":5966,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5655,5656]},{"teal":5967,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5657,5658]},{"teal":5968,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5659]},{"teal":5969,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5660]},{"teal":5970,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5661,5662,5663]},{"teal":5974,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5664,5665]},{"teal":5975,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5666,5667]},{"teal":5976,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5668,5669]},{"teal":5977,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5670]},{"teal":5978,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5671,5672]},{"teal":5983,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5673,5674]},{"teal":5984,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5675,5676]},{"teal":5985,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5677]},{"teal":5986,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5678]},{"teal":5987,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5679,5680,5681]},{"teal":5988,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5682,5683]},{"teal":5989,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5684,5685]},{"teal":5990,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5686]},{"teal":5991,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5687]},{"teal":5994,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5688,5689,5690]},{"teal":5999,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5691]},{"teal":6000,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5692,5693,5694]},{"teal":6007,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5695,5696]},{"teal":6008,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5697,5698]},{"teal":6009,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5699]},{"teal":6010,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5700,5701]},{"teal":6011,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5702,5703,5704]},{"teal":6016,"source":"contracts/validatorRegistry.algo.ts:1358","pc":[5705]},{"teal":6020,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5706,5707]},{"teal":6023,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5708,5709]},{"teal":6024,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5710]},{"teal":6032,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5711,5712,5713]},{"teal":6035,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5714]},{"teal":6039,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5715,5716,5717]},{"teal":6040,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5718,5719]},{"teal":6044,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5720,5721]},{"teal":6045,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5722,5723]},{"teal":6046,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5724]},{"teal":6047,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5725]},{"teal":6048,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5726,5727]},{"teal":6049,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5728]},{"teal":6050,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5729]},{"teal":6051,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5730]},{"teal":6052,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5731]},{"teal":6053,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5732]},{"teal":6056,"source":"contracts/validatorRegistry.algo.ts:1369","errorMessage":"wideRatio failed","pc":[5733]},{"teal":6059,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5734,5735]},{"teal":6060,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5736]},{"teal":6067,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5737,5738,5739]},{"teal":6070,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5740]},{"teal":6074,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5741,5742,5743]},{"teal":6075,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5744,5745]},{"teal":6079,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5746,5747]},{"teal":6080,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5748,5749,5750]},{"teal":6081,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5751]},{"teal":6082,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5752]},{"teal":6083,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5753,5754]},{"teal":6084,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5755]},{"teal":6085,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5756]},{"teal":6086,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5757]},{"teal":6087,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5758]},{"teal":6088,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5759]},{"teal":6091,"source":"contracts/validatorRegistry.algo.ts:1379","errorMessage":"wideRatio failed","pc":[5760]},{"teal":6094,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5761,5762]},{"teal":6095,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5763]},{"teal":6101,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5764,5765,5766]},{"teal":6105,"source":"contracts/validatorRegistry.algo.ts:1386","pc":[5767,5768]},{"teal":6106,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5769]},{"teal":6110,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5770,5771,5772]},{"teal":6114,"source":"contracts/validatorRegistry.algo.ts:1390","pc":[5773]},{"teal":6115,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5774]},{"teal":6119,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5775,5776,5777]},{"teal":6122,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5778]},{"teal":6126,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5779,5780]},{"teal":6127,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5781,5782]},{"teal":6131,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5783,5784]},{"teal":6132,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5785,5786]},{"teal":6133,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5787,5788]},{"teal":6134,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5789]},{"teal":6135,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5790]},{"teal":6136,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5791,5792]},{"teal":6140,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5793,5794]},{"teal":6141,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5795,5796]},{"teal":6142,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5797,5798]},{"teal":6143,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5799]},{"teal":6144,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5800]},{"teal":6145,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5801,5802]},{"teal":6149,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5803,5804]},{"teal":6150,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5805,5806]},{"teal":6151,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5807,5808]},{"teal":6152,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5809]},{"teal":6153,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5810]},{"teal":6154,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5811,5812]},{"teal":6158,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5813,5814]},{"teal":6159,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5815,5816]},{"teal":6160,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5817,5818]},{"teal":6161,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5819]},{"teal":6162,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5820]},{"teal":6163,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5821,5822]},{"teal":6167,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5823,5824]},{"teal":6168,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5825,5826]},{"teal":6169,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5827,5828]},{"teal":6170,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5829]},{"teal":6171,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5830]},{"teal":6172,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5831,5832]},{"teal":6176,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5833,5834]},{"teal":6177,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5835,5836]},{"teal":6178,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5837,5838]},{"teal":6179,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5839]},{"teal":6180,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5840]},{"teal":6181,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5841,5842]},{"teal":6185,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5843,5844]},{"teal":6186,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5845,5846]},{"teal":6187,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5847,5848]},{"teal":6188,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5849]},{"teal":6189,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5850]},{"teal":6190,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5851,5852]},{"teal":6194,"source":"contracts/validatorRegistry.algo.ts:1410","pc":[5853,5854]},{"teal":6197,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5855,5856]},{"teal":6198,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5857]},{"teal":6202,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5858,5859,5860]},{"teal":6206,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5861,5862,5863]},{"teal":6207,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5864,5865]},{"teal":6208,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5866,5867,5868]},{"teal":6209,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5869]},{"teal":6210,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5870]},{"teal":6211,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5871]},{"teal":6214,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5872,5873,5874,5875,5876,5877]},{"teal":6215,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5878,5879,5880]},{"teal":6216,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5881,5882,5883,5884]},{"teal":6219,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[5885]},{"teal":6222,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5886,5887,5888,5889,5890,5891]},{"teal":6223,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5892,5893,5894,5895,5896,5897]},{"teal":6224,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5898,5899,5900,5901,5902,5903]},{"teal":6225,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5904,5905,5906,5907,5908,5909]},{"teal":6226,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5910,5911,5912,5913,5914,5915]},{"teal":6227,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5916,5917,5918,5919,5920,5921]},{"teal":6228,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5922,5923,5924,5925,5926,5927]},{"teal":6229,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5928,5929,5930,5931,5932,5933]},{"teal":6230,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5934,5935,5936,5937,5938,5939]},{"teal":6231,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5940,5941,5942,5943,5944,5945]},{"teal":6232,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5946,5947,5948,5949,5950,5951]},{"teal":6233,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5952,5953,5954,5955,5956,5957]},{"teal":6234,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5958,5959,5960,5961,5962,5963]},{"teal":6235,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5964,5965,5966,5967,5968,5969]},{"teal":6236,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5970,5971,5972,5973,5974,5975]},{"teal":6237,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5976,5977,5978,5979,5980,5981]},{"teal":6238,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5982,5983,5984,5985,5986,5987]},{"teal":6239,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5988,5989,5990,5991,5992,5993]},{"teal":6240,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5994,5995,5996,5997,5998,5999]},{"teal":6241,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6000,6001,6002,6003,6004,6005]},{"teal":6242,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6006,6007,6008,6009,6010,6011]},{"teal":6243,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6012,6013,6014,6015,6016,6017]},{"teal":6244,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6018,6019,6020,6021,6022,6023]},{"teal":6245,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6024,6025,6026,6027,6028,6029]},{"teal":6246,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6030,6031,6032,6033,6034,6035]},{"teal":6247,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6036,6037,6038,6039,6040,6041]},{"teal":6248,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6042,6043,6044,6045,6046,6047]},{"teal":6249,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6048,6049,6050,6051,6052,6053]},{"teal":6250,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6054,6055,6056,6057,6058,6059]},{"teal":6251,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6060,6061,6062,6063,6064,6065]},{"teal":6252,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6066,6067,6068,6069,6070,6071]},{"teal":6253,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6072,6073,6074,6075,6076,6077]},{"teal":6254,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6078,6079,6080,6081,6082,6083]},{"teal":6255,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6084,6085,6086]},{"teal":6256,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154]},{"teal":6259,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6155]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract /** * A state record containing binary data @@ -62,54 +63,42 @@ export type Expand = T extends (...args: infer A) => infer R : never -// Aliases for non-encoded ABI values - -type uint64 = bigint; -type byte = number; -type address = string; -type uint8 = number; -type uint32 = number; -type uint16 = number; -type bool = boolean; -type pay = AppMethodCallTransactionArgument; -type AVMBytes = Uint8Array; - // Type definitions for ARC-56 structs export type ValidatorInfo = { config: { - id: uint64, - owner: address, - manager: address, - nfdForInfo: uint64, - entryGatingType: uint8, - entryGatingAddress: address, - entryGatingAssets: uint64[], - gatingAssetMinBalance: uint64, - rewardTokenId: uint64, - rewardPerPayout: uint64, - epochRoundLength: uint32, - percentToValidator: uint32, - validatorCommissionAddress: address, - minEntryStake: uint64, - maxAlgoPerPool: uint64, - poolsPerNode: uint8, - sunsettingOn: uint64, - sunsettingTo: uint64 + id: bigint, + owner: string, + manager: string, + nfdForInfo: bigint, + entryGatingType: number, + entryGatingAddress: string, + entryGatingAssets: [bigint, bigint, bigint, bigint], + gatingAssetMinBalance: bigint, + rewardTokenId: bigint, + rewardPerPayout: bigint, + epochRoundLength: number, + percentToValidator: number, + validatorCommissionAddress: string, + minEntryStake: bigint, + maxAlgoPerPool: bigint, + poolsPerNode: number, + sunsettingOn: bigint, + sunsettingTo: bigint }, state: { - numPools: uint16, - totalStakers: uint64, - totalAlgoStaked: uint64, - rewardTokenHeldBack: uint64 + numPools: number, + totalStakers: bigint, + totalAlgoStaked: bigint, + rewardTokenHeldBack: bigint }, - pools: [uint64,uint16,uint64][], + pools: [[bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint]], tokenPayoutRatio: { - poolPctOfWhole: uint64[], - updatedForPayout: uint64 + poolPctOfWhole: [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint], + updatedForPayout: bigint }, nodePoolAssignments: { - nodes: [uint64[]][] + nodes: [[[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]]] } } @@ -122,10 +111,10 @@ export function ValidatorInfoFromTuple(abiTuple: [[bigint, string, string, bigin } export type MbrAmounts = { - addValidatorMbr: uint64, - addPoolMbr: uint64, - poolInitMbr: uint64, - addStakerMbr: uint64 + addValidatorMbr: bigint, + addPoolMbr: bigint, + poolInitMbr: bigint, + addStakerMbr: bigint } @@ -137,17 +126,17 @@ export function MbrAmountsFromTuple(abiTuple: [bigint, bigint, bigint, bigint]) } export type Constraints = { - epochPayoutRoundsMin: uint64, - epochPayoutRoundsMax: uint64, - minPctToValidatorWFourDecimals: uint64, - maxPctToValidatorWFourDecimals: uint64, - minEntryStake: uint64, - maxAlgoPerPool: uint64, - maxAlgoPerValidator: uint64, - amtConsideredSaturated: uint64, - maxNodes: uint64, - maxPoolsPerNode: uint64, - maxStakersPerPool: uint64 + epochPayoutRoundsMin: bigint, + epochPayoutRoundsMax: bigint, + minPctToValidatorWFourDecimals: bigint, + maxPctToValidatorWFourDecimals: bigint, + minEntryStake: bigint, + maxAlgoPerPool: bigint, + maxAlgoPerValidator: bigint, + amtConsideredSaturated: bigint, + maxNodes: bigint, + maxPoolsPerNode: bigint, + maxStakersPerPool: bigint } @@ -159,24 +148,24 @@ export function ConstraintsFromTuple(abiTuple: [bigint, bigint, bigint, bigint, } export type ValidatorConfig = { - id: uint64, - owner: address, - manager: address, - nfdForInfo: uint64, - entryGatingType: uint8, - entryGatingAddress: address, - entryGatingAssets: [uint64,uint64,uint64,uint64], - gatingAssetMinBalance: uint64, - rewardTokenId: uint64, - rewardPerPayout: uint64, - epochRoundLength: uint32, - percentToValidator: uint32, - validatorCommissionAddress: address, - minEntryStake: uint64, - maxAlgoPerPool: uint64, - poolsPerNode: uint8, - sunsettingOn: uint64, - sunsettingTo: uint64 + id: bigint, + owner: string, + manager: string, + nfdForInfo: bigint, + entryGatingType: number, + entryGatingAddress: string, + entryGatingAssets: [bigint, bigint, bigint, bigint], + gatingAssetMinBalance: bigint, + rewardTokenId: bigint, + rewardPerPayout: bigint, + epochRoundLength: number, + percentToValidator: number, + validatorCommissionAddress: string, + minEntryStake: bigint, + maxAlgoPerPool: bigint, + poolsPerNode: number, + sunsettingOn: bigint, + sunsettingTo: bigint } @@ -188,10 +177,10 @@ export function ValidatorConfigFromTuple(abiTuple: [bigint, string, string, bigi } export type ValidatorCurState = { - numPools: uint16, - totalStakers: uint64, - totalAlgoStaked: uint64, - rewardTokenHeldBack: uint64 + numPools: number, + totalStakers: bigint, + totalAlgoStaked: bigint, + rewardTokenHeldBack: bigint } @@ -203,9 +192,9 @@ export function ValidatorCurStateFromTuple(abiTuple: [number, bigint, bigint, bi } export type PoolInfo = { - poolAppId: uint64, - totalStakers: uint16, - totalAlgoStaked: uint64 + poolAppId: bigint, + totalStakers: number, + totalAlgoStaked: bigint } @@ -217,9 +206,9 @@ export function PoolInfoFromTuple(abiTuple: [bigint, number, bigint]) { } export type ValidatorPoolKey = { - id: uint64, - poolId: uint64, - poolAppId: uint64 + id: bigint, + poolId: bigint, + poolAppId: bigint } @@ -231,8 +220,8 @@ export function ValidatorPoolKeyFromTuple(abiTuple: [bigint, bigint, bigint]) { } export type PoolTokenPayoutRatio = { - poolPctOfWhole: uint64[], - updatedForPayout: uint64 + poolPctOfWhole: [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint], + updatedForPayout: bigint } @@ -244,7 +233,7 @@ export function PoolTokenPayoutRatioFromTuple(abiTuple: [[bigint, bigint, bigint } export type NodePoolAssignmentConfig = { - nodes: [uint64[]][] + nodes: [[[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]]] } @@ -259,7 +248,7 @@ export function NodePoolAssignmentConfigFromTuple(abiTuple: [[[[bigint, bigint, * Deploy-time template variables */ export type TemplateVariables = { - nfdRegistryAppId: uint64, + nfdRegistryAppId: bigint, } /** @@ -1291,8 +1280,8 @@ export abstract class ValidatorRegistryParamsFactory { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -1331,8 +1320,8 @@ export abstract class ValidatorRegistryParamsFactory { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -1464,22 +1453,22 @@ export class ValidatorRegistryFactory { appSpec: APP_SPEC, }) } - + /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */ public get appName() { return this.appFactory.appName } - + /** The ARC-56 app spec being used */ get appSpec() { return APP_SPEC } - + /** A reference to the underlying `AlgorandClient` this app factory is using. */ public get algorand(): AlgorandClientInterface { return this.appFactory.algorand } - + /** * Returns a new `AppClient` client for an app instance of the given ID. * @@ -1491,7 +1480,7 @@ export class ValidatorRegistryFactory { public getAppClientById(params: AppFactoryAppClientParams) { return new ValidatorRegistryClient(this.appFactory.getAppClientById(params)) } - + /** * Returns a new `AppClient` client, resolving the app by creator address and name * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note). @@ -1613,7 +1602,7 @@ export class ValidatorRegistryClient { appSpec: APP_SPEC, }) } - + /** * Checks for decode errors on the given return value and maps the return value to the return type for the given method * @returns The typed return value or undefined if there was no value @@ -1621,7 +1610,7 @@ export class ValidatorRegistryClient { decodeReturnValue(method: TSignature, returnValue: ABIReturn | undefined) { return returnValue !== undefined ? getArc56ReturnValue>(returnValue, this.appClient.getABIMethod(method), APP_SPEC.structs) : undefined } - + /** * Returns a new `ValidatorRegistryClient` client, resolving the app by creator address and name * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note). @@ -1630,7 +1619,7 @@ export class ValidatorRegistryClient { public static async fromCreatorAndName(params: Omit): Promise { return new ValidatorRegistryClient(await AppClient.fromCreatorAndName({...params, appSpec: APP_SPEC})) } - + /** * Returns an `ValidatorRegistryClient` instance for the current network based on * pre-determined network-specific app IDs specified in the ARC-56 app spec. @@ -1643,27 +1632,27 @@ export class ValidatorRegistryClient { ): Promise { return new ValidatorRegistryClient(await AppClient.fromNetwork({...params, appSpec: APP_SPEC})) } - + /** The ID of the app instance this client is linked to. */ public get appId() { return this.appClient.appId } - + /** The app address of the app instance this client is linked to. */ public get appAddress() { return this.appClient.appAddress } - + /** The name of the app. */ public get appName() { return this.appClient.appName } - + /** The ARC-56 app spec being used */ public get appSpec() { return this.appClient.appSpec } - + /** A reference to the underlying `AlgorandClient` this app client is using. */ public get algorand(): AlgorandClientInterface { return this.appClient.algorand @@ -1727,7 +1716,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -1748,7 +1737,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -1762,7 +1751,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -1776,7 +1765,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1788,7 +1777,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1800,7 +1789,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1812,7 +1801,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -1826,7 +1815,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -1843,7 +1832,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1855,7 +1844,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -1872,7 +1861,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -1886,7 +1875,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -1900,7 +1889,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -1916,7 +1905,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1928,7 +1917,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2027,8 +2016,8 @@ export class ValidatorRegistryClient { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -2061,8 +2050,8 @@ export class ValidatorRegistryClient { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -2107,7 +2096,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -2218,7 +2207,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -2239,7 +2228,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -2253,7 +2242,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -2267,7 +2256,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2279,7 +2268,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2291,7 +2280,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2303,7 +2292,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -2317,7 +2306,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -2334,7 +2323,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2346,7 +2335,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -2363,7 +2352,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -2377,7 +2366,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -2391,7 +2380,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -2407,7 +2396,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2419,7 +2408,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2518,8 +2507,8 @@ export class ValidatorRegistryClient { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -2552,8 +2541,8 @@ export class ValidatorRegistryClient { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -2598,7 +2587,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -2713,7 +2702,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -2735,7 +2724,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -2750,7 +2739,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -2765,7 +2754,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2778,7 +2767,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2791,7 +2780,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2804,7 +2793,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -2819,7 +2808,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -2837,7 +2826,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2850,7 +2839,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -2868,7 +2857,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -2883,7 +2872,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -2898,7 +2887,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -2915,7 +2904,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2928,7 +2917,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3034,8 +3023,8 @@ export class ValidatorRegistryClient { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -3070,8 +3059,8 @@ export class ValidatorRegistryClient { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -3119,7 +3108,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -3176,8 +3165,18 @@ export class ValidatorRegistryClient { } /** - * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. + * Clone this app client with different params * + * @param params The params to use for the the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value. + * @returns A new app client with the altered params + */ + public clone(params: CloneAppClientParams) { + return new ValidatorRegistryClient(this.appClient.clone(params)) + } + + /** + * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -3199,7 +3198,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -3214,7 +3213,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -3229,7 +3228,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3242,7 +3241,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3255,7 +3254,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3268,7 +3267,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -3283,7 +3282,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -3301,7 +3300,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3314,7 +3313,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -3332,7 +3331,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -3347,7 +3346,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -3362,7 +3361,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -3379,7 +3378,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3392,7 +3391,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3405,7 +3404,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -4100,8 +4099,8 @@ export type ValidatorRegistryComposer = { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -4132,8 +4131,8 @@ export type ValidatorRegistryComposer = { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. diff --git a/contracts/package.json b/contracts/package.json index ec5230c2..0d876922 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -3,7 +3,7 @@ "version": "0.11.8", "license": "MIT", "scripts": { - "generate-client": "pnpx @algorandfoundation/algokit-client-generator@4.0.0-beta.5 generate -a contracts/artifacts/StakingPool.arc56_draft.json -o contracts/clients/StakingPoolClient.ts && pnpx @algorandfoundation/algokit-client-generator@4.0.0-beta.5 generate -a contracts/artifacts/ValidatorRegistry.arc56_draft.json -o contracts/clients/ValidatorRegistryClient.ts && ./update_contract_artifacts.sh", + "generate-client": "pnpx @algorandfoundation/algokit-client-generator@4.0.0-beta.7 generate -a contracts/artifacts/StakingPool.arc56_draft.json -o contracts/clients/StakingPoolClient.ts && pnpx @algorandfoundation/algokit-client-generator@4.0.0-beta.7 generate -a contracts/artifacts/ValidatorRegistry.arc56_draft.json -o contracts/clients/ValidatorRegistryClient.ts && ./update_contract_artifacts.sh", "compile-contract": "tealscript contracts/*.algo.ts contracts/artifacts", "generate-components": "algokit-generate-component contracts/artifacts/validatorRegistry.arc32.json contracts/artifacts/components", "noalgobuild": "pnpm run compile-contract -- --skip-algod && pnpm run generate-client", @@ -17,12 +17,12 @@ "prettier:fix": "npx prettier --write ." }, "dependencies": { - "@algorandfoundation/algokit-utils": "7.0.0-beta.16", + "@algorandfoundation/algokit-utils": "7.0.0-beta.21", "algosdk": "2.9.0" }, "devDependencies": { - "@algorandfoundation/algokit-client-generator": "4.0.0-beta.5", - "@algorandfoundation/tealscript": "0.103.2", + "@algorandfoundation/algokit-client-generator": "4.0.0-beta.7", + "@algorandfoundation/tealscript": "0.105.5", "@joe-p/algokit-generate-component": "0.2.1", "@typescript-eslint/eslint-plugin": "8.8.1", "@typescript-eslint/parser": "8.8.1", diff --git a/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json b/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json index 62e7cadd..b56ff928 100644 --- a/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json +++ b/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json @@ -156,7 +156,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gbWluRW50cnlTdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gY3JlYXRpbmdDb250cmFjdElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbihjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElELCB2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCwgbWluRW50cnlTdGFrZTogdWludDY0KTogdm9pZAovLwovLyBJbml0aWFsaXplIHRoZSBzdGFraW5nIHBvb2wgdy8gb3duZXIgYW5kIG1hbmFnZXIsIGJ1dCBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QuCi8vIEBwYXJhbSB7dWludDY0fSBjcmVhdGluZ0NvbnRyYWN0SWQgLSBpZCBvZiBjb250cmFjdCB0aGF0IGNvbnN0cnVjdGVkIHVzIC0gdGhlIHZhbGlkYXRvciBhcHBsaWNhdGlvbiAoc2luZ2xlIGdsb2JhbCBpbnN0YW5jZSkKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIC0gaWQgb2YgdmFsaWRhdG9yIHdlJ3JlIGEgc3Rha2luZyBwb29sIG9mCi8vIEBwYXJhbSB7dWludDY0fSBwb29sSWQgLSB3aGljaCBwb29sIGlkIGFyZSB3ZQovLyBAcGFyYW0ge3VpbnQ2NH0gbWluRW50cnlTdGFrZSAtIG1pbmltdW0gYW1vdW50IHRvIGJlIGluIHBvb2wsIGJ1dCBhbHNvIG1pbmltdW0gYW1vdW50IGJhbGFuY2UgY2FuJ3QgZ28gYmVsb3cgKHdpdGhvdXQgcmVtb3ZpbmcgYWxsISkKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byA0IDAKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyCgkvLyBjcmVhdGluZ0NvbnRyYWN0SWQgPT09IEFwcElELmZyb21VaW50NjQoMCkKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglpbnQgMAoJPT0KCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgPT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50IDAKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDUKCS8vIGFzc2VydChwb29sSWQgPT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgk9PQoJYXNzZXJ0CgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDcKCS8vIGFzc2VydCh2YWxpZGF0b3JJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwOAoJLy8gYXNzZXJ0KHBvb2xJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50IDAKCSE9Cglhc3NlcnQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEwCgkvLyBhc3NlcnQobWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC00IC8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJaW50IDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTExCgkvLyB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSA9IGNyZWF0aW5nQ29udHJhY3RJZAoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJZnJhbWVfZGlnIC0xIC8vIGNyZWF0aW5nQ29udHJhY3RJZDogQXBwSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEyCgkvLyB0aGlzLnZhbGlkYXRvcklkLnZhbHVlID0gdmFsaWRhdG9ySWQKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMwoJLy8gdGhpcy5wb29sSWQudmFsdWUgPSBwb29sSWQKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTQKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWludCAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIwCgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMQoJLy8gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlID0gZ2xvYmFscy5yb3VuZCAtIChnbG9iYWxzLnJvdW5kICUgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUpCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglnbG9iYWwgUm91bmQKCWdsb2JhbCBSb3VuZAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIyCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAwIGFzIHVpbnQxMjgKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjMKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEzNgoJLy8gcmV0dXJuIFNDQk9YX1BFUkJPWCArIHRvdGFsTnVtQnl0ZXMgKiBTQ0JPWF9QRVJCWVRFCglpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJaW50IDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMCAobWJyUGF5bWVudCkgZm9yIGluaXRTdG9yYWdlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgaW5pdFN0b3JhZ2UocGF5KXZvaWQKCWNhbGxzdWIgaW5pdFN0b3JhZ2UKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdG9yYWdlKG1iclBheW1lbnQ6IFBheVR4bik6IHZvaWQKLy8KLy8gQ2FsbGVkIGFmdGVyIHdlJ3JlIGNyZWF0ZWQgYW5kIHRoZW4gZnVuZGVkLCBzbyB3ZSBjYW4gY3JlYXRlIG91ciBsYXJnZSBzdGFrZXJzIGxlZGdlciBzdG9yYWdlCi8vIENhbGxlciBoYXMgdG8gZ2V0IE1CUiBhbW91bnRzIGZyb20gVmFsaWRhdG9yUmVnaXN0cnkgdG8ga25vdyBob3cgbXVjaCB0byBmdW5kIHVzIHRvIGNvdmVyIHRoZSBib3ggc3RvcmFnZSBjb3N0Ci8vIElmIHRoaXMgaXMgcG9vbCAxIEFORCB0aGUgdmFsaWRhdG9yIGhhcyBzcGVjaWZpZWQgYSByZXdhcmQgdG9rZW4sIG9wdC1pbiB0byB0aGF0IHRva2VuCi8vIHNvIHRoYXQgdGhlIHZhbGlkYXRvciBjYW4gc2VlZCB0aGUgcG9vbCB3aXRoIGZ1dHVyZSByZXdhcmRzIG9mIHRoYXQgdG9rZW4uCi8vIEBwYXJhbSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgc3Rha2luZyBwb29scycgc3RvcmFnZQppbml0U3RvcmFnZToKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDMKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNDcKCS8vIGFzc2VydCghdGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkJykKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTUyCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU0CgkvLyBpc1Rva2VuRWxpZ2libGUgPSB2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCAhPT0gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWludCAwCgkhPQoJZnJhbWVfYnVyeSAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NQoJLy8gZXh0cmFNQlIgPSBpc1Rva2VuRWxpZ2libGUgJiYgdGhpcy5wb29sSWQudmFsdWUgPT09IDEgPyBBU1NFVF9IT0xESU5HX0ZFRSA6IDAKCWZyYW1lX2RpZyAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJZHVwCglieiAqc2tpcF9hbmQwCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgkmJgoKKnNraXBfYW5kMDoKCWJ6ICp0ZXJuYXJ5MF9mYWxzZQoJaW50IDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnQgMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnQgMTAwMDAwCglmcmFtZV9kaWcgMiAvLyBleHRyYU1CUjogdWludDY0CgkrCglpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWZyYW1lX2J1cnkgMyAvLyBQb29sSW5pdE1icjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYyCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBQb29sSW5pdE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6IlBvb2xJbml0TWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2MwoJLy8gdGhpcy5zdGFrZXJzLmNyZWF0ZSgpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCglpbnQgMTI4MDAKCWJveF9jcmVhdGUKCXBvcAoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjUKCS8vIGlzVG9rZW5FbGlnaWJsZSAmJiB0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMQoJZnJhbWVfZGlnIDEgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCglkdXAKCWJ6ICpza2lwX2FuZDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjkKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNzAKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjFfZW5kOgoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9hZGRTdGFrZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnQgMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50IHBheQoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZWRBbW91bnRQYXltZW50KSBmb3IgYWRkU3Rha2UgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgYWRkU3Rha2UKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHN0YWtlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBBZGRzIHN0YWtlIHRvIHRoZSBnaXZlbiBhY2NvdW50LgovLyBDYW4gT05MWSBiZSBjYWxsZWQgYnkgdGhlIHZhbGlkYXRvciBjb250cmFjdCB0aGF0IGNyZWF0ZWQgdXMKLy8gTXVzdCByZWNlaXZlIHBheW1lbnQgZnJvbSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciBhbW91bnQgYmVpbmcgc3Rha2VkLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCBwcmlvciBwYXltZW50IGNvbWluZyBmcm9tIHZhbGlkYXRvciBjb250cmFjdCB0byB1cyBvbiBiZWhhbGYgb2Ygc3Rha2VyLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhY2NvdW50IGFkZGluZyBuZXcgc3Rha2UKLy8gQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdGFraW5nIHBvb2wgaXMgZnVsbC4KLy8gQHJldHVybnMge3VpbnQ2NH0gbmV3ICdlbnRyeSByb3VuZCcgcm91bmQgbnVtYmVyIG9mIHN0YWtlIGFkZAphZGRTdGFrZToKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxODYKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMuZXhpc3RzLCAnc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QnKQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyBzdGFrZSBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTkzCgkvLyBhc3NlcnQoc3Rha2VyICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTk2CgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjAwCgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50LAoJLy8gICAgICAgICB9KQoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSByZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgUmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoicmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50In0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIwOQoJLy8gZW50cnlSb3VuZCA9IGdsb2JhbHMucm91bmQgKyBBTEdPUkFORF9TVEFLSU5HX0JMT0NLX0RFTEFZCglnbG9iYWwgUm91bmQKCWludCAzMjAKCSsKCWZyYW1lX2J1cnkgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTAKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJKwoJZ2xvYmFsIFJvdW5kCgktCglmcmFtZV9idXJ5IDIgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9CgkvLyAgICAgICAgICAgICB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWl0b2IKCWZyYW1lX2RpZyAyIC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJYisKCWR1cAoJYml0bGVuCglpbnQgMTI4Cgk8PQoKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gaTogdWludDY0CgoqZm9yXzA6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMF9lbmQKCgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjNfZW5kCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjYKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNwoJLy8gY21wU3Rha2VyLmVudHJ5Um91bmQgPSBlbnRyeVJvdW5kCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzIKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWIgKmFkZFN0YWtlKnJldHVybgoKKmlmM19lbmQ6CgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIGNtcFN0YWtlci5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAwCgk9PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDI6CglieiAqaWY0X2VuZAoKCS8vICppZjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjRfZW5kOgoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMyAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzOQoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBTdGFraW5nIHBvb2wgZnVsbAoJZXJyCgoqaWY1X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI0NgoJLy8gYXNzZXJ0KHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50ID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcpCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ4CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXS5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMQoJLQoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgMzIKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglnbG9iYWwgWmVyb0FkZHJlc3MKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDkKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSB7CgkvLyAgICAgICAgICAgICBhY2NvdW50OiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBiYWxhbmNlOiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCwKCS8vICAgICAgICAgICAgIHRvdGFsUmV3YXJkZWQ6IDAsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkJhbGFuY2U6IDAsCgkvLyAgICAgICAgICAgICBlbnRyeVJvdW5kOiBlbnRyeVJvdW5kLAoJLy8gICAgICAgICB9CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAxCgktCglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NgoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlICs9IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNTcKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCiphZGRTdGFrZSpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZToKCS8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIHJlbW92ZVN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKCWNhbGxzdWIgcmVtb3ZlU3Rha2UKCWludCAxCglyZXR1cm4KCi8vIHJlbW92ZVN0YWtlKHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9VbnN0YWtlOiB1aW50NjQpOiB2b2lkCi8vCi8vIFJlbW92ZXMgc3Rha2Ugb24gYmVoYWxmIG9mIGNhbGxlciAocmVtb3Zpbmcgb3duIHN0YWtlKS4gIElmIGFueSB0b2tlbiByZXdhcmRzIGV4aXN0LCB0aG9zZSBhcmUgYWx3YXlzIHNlbnQgaW4KLy8gZnVsbC4gQWxzbyBub3RpZmllcyB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciB0aGlzIHBvb2xzIHZhbGlkYXRvciBvZiB0aGUgc3Rha2VyIC8gYmFsYW5jZSBjaGFuZ2VzLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIGFjY291bnQgdG8gcmVtb3ZlLiAgbm9ybWFsbHkgc2FtZSBhcyBzZW5kZXIsIGJ1dCB0aGUgdmFsaWRhdG9yIG93bmVyIG9yIG1hbmFnZXIgY2FuIGFsc28gY2FsbAovLyB0aGlzIHRvIHJlbW92ZSB0aGUgc3BlY2lmaWVkIHN0YWtlciBleHBsaWNpdGx5LiBUaGUgcmVtb3ZlZCBzdGFrZSBNVVNUIG9ubHkgZ28gdG8gdGhlIHN0YWtlciBvZiBjb3Vyc2UuICBUaGlzIGlzCi8vIHNvIGEgdmFsaWRhdG9yIGNhbiBzaHV0IGRvd24gYSBwb29vbCBhbmQgcmVmdW5kIHRoZSBzdGFrZXJzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBraWNrIG91dCBzdGFrZXJzIHdobyBubyBsb25nZXIKLy8gbWVldCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyAoZGV0ZXJtaW5lZCBieSB0aGUgbm9kZSBkYWVtb24pLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9VbnN0YWtlIC0gVGhlIGFtb3VudCBvZiBzdGFrZSB0byBiZSByZW1vdmVkLiAgU3BlY2lmeSAwIHRvIHJlbW92ZSBhbGwgc3Rha2UuCi8vIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWNjb3VudCBoYXMgaW5zdWZmaWNpZW50IGJhbGFuY2Ugb3IgaWYgdGhlIGFjY291bnQgaXMgbm90IGZvdW5kLgpyZW1vdmVTdGFrZToKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDYKCgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjc0CgkvLyBzdGFrZXIgIT09IHRoaXMudHhuLnNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJIT0KCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwKCS8vICAgICAgICAgICAgICAgICAnSWYgc3Rha2VyIGlzIG5vdCBzZW5kZXIgaW4gcmVtb3ZlU3Rha2UgY2FsbCwgdGhlbiBzZW5kZXIgTVVTVCBiZSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICAgICApCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCippZjZfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgxCgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgzCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMV9lbmQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg0CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg4CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjhfZW5kCgoJLy8gKmlmOF9jb25zZXF1ZW50CgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg5CgkvLyBhbW91bnRUb1Vuc3Rha2UgPT09IDAKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWY5X2VuZAoKCS8vICppZjlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjkxCgkvLyBhbW91bnRUb1Vuc3Rha2UgPSBjbXBTdGFrZXIuYmFsYW5jZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2J1cnkgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCippZjlfZW5kOgoJLy8gKmlmMTBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTMKCS8vIGNtcFN0YWtlci5iYWxhbmNlIDwgYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgk8CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZQoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTYKCS8vIGNtcFN0YWtlci5iYWxhbmNlIC09IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMzIgLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTkKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA+IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglpbnQgMAoJPgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDIKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzA0CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwNQoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMyAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxMl9lbmQKCippZjEyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjIKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjMKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTJfZW5kOgoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzI4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgICAgIGNtcFN0YWtlci5iYWxhbmNlID09PSAwIHx8IGNtcFN0YWtlci5iYWxhbmNlID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkJywKCS8vICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJaW50IDAKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglieXRlIDB4NmQ2OTZlNDU2ZTc0NzI3OTUzNzQ2MTZiNjUgLy8gIm1pbkVudHJ5U3Rha2UiCglhcHBfZ2xvYmFsX2dldAoJPj0KCXx8Cgoqc2tpcF9vcjA6CgkvLyBjYW5ub3QgcmVkdWNlIGJhbGFuY2UgYmVsb3cgbWluaW11bSBhbGxvd2VkIHN0YWtlIHVubGVzcyBhbGwgaXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM2CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICBub3RlOiAndW5zdGFrZWQnLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJYnl0ZSAweDc1NmU3Mzc0NjE2YjY1NjQgLy8gInVuc3Rha2VkIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MQoJLy8gc3Rha2VyUmVtb3ZlZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCgkvLyAqaWYxM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNDUKCS8vIGNtcFN0YWtlci5hY2NvdW50ID0gZ2xvYmFscy56ZXJvQWRkcmVzcwoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMAoJZ2xvYmFsIFplcm9BZGRyZXNzCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ4CgkvLyBzdGFrZXJSZW1vdmVkID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgNCAvLyBzdGFrZXJSZW1vdmVkOiBib29sCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTEKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzU0CgkvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOCA9IChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKGFtb3VudFRvVW5zdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgNiAvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYxCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM2MgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludCAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTEKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50IDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjE3X2Vsc2UKCgkvLyAqaWYxN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTkKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDAxCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA0IC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA2CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQwNwoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgNCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDgKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDkKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTEKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTIKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxN19lbmQKCippZjE3X2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTcKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MjcKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc3Rha2VSZW1vdmVkPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvLyBubyBhbGdvIHJlbW92ZWQKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBzdGFrZXIgaXNuJ3QgYmVpbmcgcmVtb3ZlZC4KCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDI4CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJY29uY2F0Cgl0eG5hIEFwcGxpY2F0aW9ucyAwCglpdG9iCgljb25jYXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlckluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VySW5mbyhhZGRyZXNzKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0U3Rha2VySW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFN0YWtlckluZm8oc3Rha2VyOiBBZGRyZXNzKTogU3Rha2VkSW5mbwovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHJldHVybnMge1N0YWtlZEluZm99IC0gVGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHN0YWtlci4KLy8gQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHN0YWtlcidzIGFjY291bnQgaXMgbm90IGZvdW5kLgpnZXRTdGFrZXJJbmZvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmMThfZW5kCgoJLy8gKmlmMThfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDU0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxOF9lbmQ6CgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NgoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCAzMgoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKmdldFN0YWtlckluZm8qcmV0dXJuCgoqaWYxOV9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCgoqZ2V0U3Rha2VySW5mbypyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9wYXlUb2tlblJld2FyZDoKCS8vIGFtb3VudFRvU2VuZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChzdGFrZXIpIGZvciBwYXlUb2tlblJld2FyZCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBwYXlUb2tlblJld2FyZAoJaW50IDEKCXJldHVybgoKLy8gcGF5VG9rZW5SZXdhcmQoc3Rha2VyOiBBZGRyZXNzLCByZXdhcmRUb2tlbjogdWludDY0LCBhbW91bnRUb1NlbmQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gW0ludGVybmFsIHByb3RvY29sIG1ldGhvZF0gUmVtb3ZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiAnY29tbXVuaXR5IHRva2VuJyByZXdhcmRzIGZvciBhIHN0YWtlci4KLy8gVGhpcyBjYW4gT05MWSBiZSBjYWxsZWQgYnkgb3VyIHZhbGlkYXRvciBhbmQgb25seSBpZiB3ZSdyZSBwb29sIDEgLSB3aXRoIHRoZSB0b2tlbi4KLy8gTm90ZTogdGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIGFzIHBhcnQgb2YgT1dORVIgd2FudGluZyB0byBzZW5kIHRoZSByZXdhcmQgdG9rZW5zCi8vIHNvbWV3aGVyZSBlbHNlIChpZSBpZiB0aGV5J3JlIHN1bnNldHRpbmcgdGhlaXIgdmFsaWRhdG9yIGFuZCBuZWVkIHRoZSByZXdhcmQgdG9rZW5zIGJhY2spLgovLyBJdCdzIHVwIHRvIHRoZSB2YWxpZGF0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGJhbGFuY2UgaW4gcmV3YXJkVG9rZW5IZWxkQmFjayBpcyBob25vcmVkLgovLyBAcGFyYW0gc3Rha2VyIC0gdGhlIHN0YWtlciBhY2NvdW50IHRvIHNlbmQgcmV3YXJkcyB0bwovLyBAcGFyYW0gcmV3YXJkVG9rZW4gLSBpZCBvZiByZXdhcmQgdG9rZW4gKHRvIGF2b2lkIHJlLWVudHJhbmN5IGluIGNhbGxpbmcgdmFsaWRhdG9yIGJhY2sgdG8gZ2V0IGlkKQovLyBAcGFyYW0gYW1vdW50VG9TZW5kIC0gYW1vdW50IHRvIHNlbmQgdGhlIHN0YWtlciAodGhlcmUgaXMgc2lnbmlmaWNhbnQgdHJ1c3QgaGVyZSghKSAtIGFsc28gd2h5IG9ubHkgdmFsaWRhdG9yIGNhbiBjYWxsIHVzCnBheVRva2VuUmV3YXJkOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICAndGhpcyBjYW4gb25seSBiZSBjYWxsZWQgdmlhIHRoZSB2YWxpZGF0b3IgY29udHJhY3QnLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzkKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ211c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMnKQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgk9PQoKCS8vIG11c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuICE9PSAwLCAnY2FuIG9ubHkgY2xhaW0gdG9rZW4gcmV3YXJkcyBmcm9tIHZhbGlkYXRvciB0aGF0IGhhcyB0aGVtJykKCWZyYW1lX2RpZyAtMiAvLyByZXdhcmRUb2tlbjogdWludDY0CglpbnQgMAoJIT0KCgkvLyBjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pLAoJLy8gICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZCwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pCglmcmFtZV9kaWcgLTIgLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODUKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg2CgkvLyBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCiphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXI6CgkvLyBhbGdvZFZlcjogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGV4ZWN1dGUgdXBkYXRlQWxnb2RWZXIoc3RyaW5nKXZvaWQKCWNhbGxzdWIgdXBkYXRlQWxnb2RWZXIKCWludCAxCglyZXR1cm4KCi8vIHVwZGF0ZUFsZ29kVmVyKGFsZ29kVmVyOiBzdHJpbmcpOiB2b2lkCi8vCi8vIFVwZGF0ZSB0aGUgKGhvbm9yIHN5c3RlbSkgYWxnb2QgdmVyc2lvbiBmb3IgdGhlIG5vZGUgYXNzb2NpYXRlZCB0byB0aGlzIHBvb2wuICBUaGUgbm9kZSBtYW5hZ2VtZW50IGRhZW1vbgovLyBzaG91bGQgY29tcGFyZSBpdHMgY3VycmVudCBub2RlcyB2ZXJzaW9uIHRvIHRoZSB2ZXJzaW9uIHN0b3JlZCBpbiBnbG9iYWwgc3RhdGUsIHVwZGF0aW5nIHdoZW4gZGlmZmVyZW50LgovLyBUaGUgcmV0aSBub2RlIGRhZW1vbiBjb21wb3NlcyBpdHMgb3duIHZlcnNpb24gc3RyaW5nIHVzaW5nIGZvcm1hdDoKLy8ge21ham9yfS57bWlub3J9LntidWlsZH0ge2JyYW5jaH0gW3tjb21taXQgaGFzaH1dLAovLyBpZTogMy4yMi4wIHJlbC9zdGFibGUgWzZiNTA4OTc1XQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0FMTCBdCi8vIEBwYXJhbSB7c3RyaW5nfSBhbGdvZFZlciAtIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFsZ29yYW5kIG5vZGUgZGFlbW9uIHZlcnNpb24gKHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biBtZXRhIHZlcnNpb24pCnVwZGF0ZUFsZ29kVmVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAwCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MDEKCS8vIHRoaXMuYWxnb2RWZXIudmFsdWUgPSBhbGdvZFZlcgoJYnl0ZSAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50IDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MTYKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjMKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB2YWxpZGF0b3JDb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2OSA0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI0CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAyIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjUKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyOAoJLy8gbGFzdFBheW91dEVwb2NoID0gdGhpcy5sYXN0UGF5b3V0LnZhbHVlIC0gKHRoaXMubGFzdFBheW91dC52YWx1ZSAlIGVwb2NoUm91bmRMZW5ndGgpCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIGxhc3RQYXlvdXRFcG9jaDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTMwCgkvLyBhc3NlcnQobGFzdFBheW91dEVwb2NoICE9PSB0aGlzRXBvY2hCZWdpbiwgImNhbid0IGNhbGwgZXBvY2hCYWxhbmNlVXBkYXRlIGluIHNhbWUgZXBvY2ggYXMgcHJpb3IgY2FsbCIpCglmcmFtZV9kaWcgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMgoJLy8gdGhpcy5jaGVja0lmQmluQ2xvc2VkKCkKCWNhbGxzdWIgY2hlY2tJZkJpbkNsb3NlZAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNQoJLy8gdGhpcy5sYXN0UGF5b3V0LnZhbHVlID0gY3VyUm91bmQKCWJ5dGUgMHg2YzYxNzM3NDUwNjE3OTZmNzU3NCAvLyAibGFzdFBheW91dCIKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTM2CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlICs9IDEKCWJ5dGUgMHg2NTcwNmY2MzY4NGU3NTZkNjI2NTcyIC8vICJlcG9jaE51bWJlciIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50IDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkhPQoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTUxCgkvLyBwb29sT25lQXBwSUQgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFBvb2xBcHBJZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTMKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBwb29sT25lQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1NQoJLy8gcG9vbE9uZUFkZHJlc3MgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkuYWRkcmVzcwoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfYnVyeSA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjIyX2Vsc2UKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjEKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnNldFRva2VuUGF5b3V0UmF0aW8+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTYyCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTY4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjkKCS8vIG1ldGhvZEFyZ3M6IFt7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH1dCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU3NwoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJLQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg4CgkvLyBhbGdvU2F0dXJhdGlvbkFtdCA9IHRoaXMuYWxnb1NhdHVyYXRpb25MZXZlbCgpCgljYWxsc3ViIGFsZ29TYXR1cmF0aW9uTGV2ZWwKCWZyYW1lX2J1cnkgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoKCS8vICppZjIzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk2CgkvLyB2YWxpZGF0b3JTdGF0ZS50b3RhbEFsZ29TdGFrZWQgPiBhbGdvU2F0dXJhdGlvbkFtdAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0Cgk+CglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1OTcKCS8vIGlzUG9vbFNhdHVyYXRlZCA9IHRydWUKCWludCAxCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjAzCgkvLyB0b2tlblJld2FyZEF2YWlsID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA0CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNQoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA2CgkvLyBleGNlc3NUb0ZlZVNpbmsgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA3CgkvLyBpc1Rva2VuRWxpZ2libGUKCWZyYW1lX2RpZyA1IC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA4CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICAgICAgcG9vbE9uZUFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEwIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTMKCS8vIHRva2VuUmV3YXJkQmFsID49IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQKCWZyYW1lX2RpZyAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJPj0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYxOQoJLy8gb3VyUG9vbFBjdE9mV2hvbGUgPSB0b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW3RoaXMucG9vbElkLnZhbHVlIC0gMV0KCWZyYW1lX2RpZyA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCglpbnQgMAoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgktCglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2J1cnkgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYyMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IHdpZGVSYXRpbyhbdmFsaWRhdG9yQ29uZmlnLnJld2FyZFBlclBheW91dCwgb3VyUG9vbFBjdE9mV2hvbGVdLCBbMV8wMDBfMDAwXSkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2MSA4CglidG9pCglmcmFtZV9kaWcgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKKmlmMjVfZW5kOgoKKmlmMjRfZW5kOgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjUKCS8vIHRva2VuUmV3YXJkQXZhaWwgPT09IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzAKCS8vIGFsZ29SZXdhcmRBdmFpbCA8IDFfMDAwXzAwMAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMV8wMDBfMDAwCgk8CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzEKCS8vIGxvZygnIXRva2VuJiYhbm9hbGdvIHRvIHBheScpCglieXRlIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnQgMAoJaW50IDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTUKCS8vIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU2CgkvLyByZWNlaXZlcjogYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS5mZWVTaW5rCgl0eG4gRmlyc3RWYWxpZAoJaW50IDEKCS0KCWJsb2NrIEJsa0ZlZVNpbmsKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTcKCS8vIG5vdGU6ICdwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rJwoJYnl0ZSAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnQgMl8xMDBfMDAwCgk8CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NQoJLy8gbWFuYWdlclRvcE9mZiA9IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDwgMl8xMDBfMDAwID8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgOiAyXzEwMF8wMDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMl8xMDBfMDAwCgk8CglieiAqdGVybmFyeTFfZmFsc2UKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgliICp0ZXJuYXJ5MV9lbmQKCip0ZXJuYXJ5MV9mYWxzZToKCWludCAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODcKCS8vIGFtb3VudDogbWFuYWdlclRvcE9mZgoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODgKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcubWFuYWdlcgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODkKCS8vIG5vdGU6ICd2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcycKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50IDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NAoJLy8gYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgktCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NQoJLy8gcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTc3IDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njk2CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCcKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCA0MDAKCTwKCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDY0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnQgMTAwMAoJKgoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgkvCglmcmFtZV9idXJ5IDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCgkvLyAqaWYzOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1OAoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjAKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnVG9rZW5SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSwgMTAwMF0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI2IC8vIG9yaWdUb2tlblJld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmMzhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzcyCgkvLyBzdGFrZXJSZXdhcmQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ0FsZ29SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlLCAxMDAwXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNSAvLyBvcmlnQWxnb1Jld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc3OAoJLy8gYWxnb1Jld2FyZEF2YWlsIC09IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODEKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDMyIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODIKCS8vIGNtcFN0YWtlci50b3RhbFJld2FyZGVkICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDQwIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODMKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzg1CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk3CgkvLyBuZXdQb29sVG90YWxTdGFrZSA+IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzlfZW5kCgoJLy8gKmlmMzlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoKKmZvcl81OgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl81X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmNDBfZW5kCgoJLy8gKmlmNDBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MDMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgNjQKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgNDggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE5CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDM3IC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCippZjQzX2VuZDoKCS8vICppZjQ0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODIxCgkvLyBhbGdvUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgYWxnb1Jld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI4CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0MCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODMwCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKKmlmNDRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODM0CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl81X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgoqaWYzOV9lbmQ6CgoqaWYzM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDQKCS8vIHJvdW5kc0xlZnRJbkJpbiA9IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIC0gZ2xvYmFscy5yb3VuZAoJYnl0ZSAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IC8vICJiaW5Sb3VuZFN0YXJ0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMzkgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGluY3JlYXNlZFN0YWtlCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ2CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPQoJLy8gICAgICAgICAgICAgdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlICsgKGluY3JlYXNlZFN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZSAweDcyNjU3NzYxNzI2NDQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInJld2FyZEFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU0CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlVXBkYXRlZFZpYVJld2FyZHM+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBnb09ubGluZShwYXksYnl0ZVtdLGJ5dGVbXSxieXRlW10sdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2dvT25saW5lOgoJLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyB2b3RlTGFzdDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdm90ZUZpcnN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBzdGF0ZVByb29mUEs6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBzZWxlY3Rpb25QSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIHZvdGVQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGZlZVBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnQgMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQga2V5cmVnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkyCgkvLyB2b3RlUEs6IHZvdGVQSwoJZnJhbWVfZGlnIC0yIC8vIHZvdGVQSzogYnl0ZXMKCWl0eG5fZmllbGQgVm90ZVBLCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkzCgkvLyBzZWxlY3Rpb25QSzogc2VsZWN0aW9uUEsKCWZyYW1lX2RpZyAtMyAvLyBzZWxlY3Rpb25QSzogYnl0ZXMKCWl0eG5fZmllbGQgU2VsZWN0aW9uUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTQKCS8vIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLCglmcmFtZV9kaWcgLTQgLy8gc3RhdGVQcm9vZlBLOiBieXRlcwoJaXR4bl9maWVsZCBTdGF0ZVByb29mUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTUKCS8vIHZvdGVGaXJzdDogdm90ZUZpcnN0CglmcmFtZV9kaWcgLTUgLy8gdm90ZUZpcnN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUZpcnN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk2CgkvLyB2b3RlTGFzdDogdm90ZUxhc3QKCWZyYW1lX2RpZyAtNiAvLyB2b3RlTGFzdDogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVMYXN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk3CgkvLyB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbgoJZnJhbWVfZGlnIC03IC8vIHZvdGVLZXlEaWx1dGlvbjogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVLZXlEaWx1dGlvbgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5OAoJLy8gZmVlOiBleHRyYUZlZQoJZnJhbWVfZGlnIDAgLy8gZXh0cmFGZWU6IHVpbnQ2NAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT2ZmbGluZSgpdm9pZAoqYWJpX3JvdXRlX2dvT2ZmbGluZToKCS8vIGV4ZWN1dGUgZ29PZmZsaW5lKCl2b2lkCgljYWxsc3ViIGdvT2ZmbGluZQoJaW50IDEKCXJldHVybgoKLy8gZ29PZmZsaW5lKCk6IHZvaWQKLy8KLy8gTWFya3MgYSBzdGFraW5nIHBvb2wga2V5IE9GRkxJTkUuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KZ29PZmZsaW5lOgoJcHJvdG8gMCAwCgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTAKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcwoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMQoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoqaWY0NV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTQKCS8vIHNlbmRPZmZsaW5lS2V5UmVnaXN0cmF0aW9uKHt9KQoJaXR4bl9iZWdpbgoJaW50IGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50IDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjQKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglieXRlIDB4NzY2NTcyNjk2Njc5NWY2ZTY2NjQ1ZjYxNjQ2NDcyIC8vICJ2ZXJpZnlfbmZkX2FkZHIiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI2CgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElkKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgcG9vbHMgIT0gMSAtIGNhbGxpbmcgVVMsIHBvb2wgIzEKLy8gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSBhcmUgaW4gZmFjdCBiZWluZyBjYWxsZWQgYnkgYW5vdGhlciBvZiBPVVIgcG9vbHMgKG5vdCB1cykKLy8gYW5kIHRoZW4gd2UnbGwgY2FsbCB0aGUgdmFsaWRhdG9yIG9uIHRoZWlyIGJlaGFsZiB0byB1cGRhdGUgdGhlIHRva2VuIHBheW91dHMKLy8gQHBhcmFtIHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR1cGxlCnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzcKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvcklkLnZhbHVlID09PSBwb29sS2V5LmlkLCAnY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhJykKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzgKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ2NhbGxlZSBtdXN0IGJlIHBvb2wgMScpCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgoJLy8gY2FsbGVlIG11c3QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzkKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCAhPT0gMSwgJ2NhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJIT0KCgkvLyBjYWxsZXIgbXVzdCBOT1QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDEKCS8vIGNhbGxlclBvb2xBcHBJRCA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0UG9vbEFwcElkPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDkKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTUwCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCk6IGJvb2xlYW4KaXNPd25lck9yTWFuYWdlckNhbGxlcjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU1CgkvLyBPd25lckFuZE1hbmFnZXIgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcj4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU3CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTkKCS8vIHJldHVybiB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclswXSB8fCB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclsxXQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAwIDMyCgk9PQoJZHVwCglibnogKnNraXBfb3IyCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCglleHRyYWN0IDMyIDMyCgk9PQoJfHwKCipza2lwX29yMjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnQgMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoKCS8vICppZjQ3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTg5CgkvLyBnbG9iYWxzLnJvdW5kID49IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIChjdXJyZW50QmluU2l6ZSBhcyB1aW50NjQpCglnbG9iYWwgUm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gY3VycmVudEJpblNpemUgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludCA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCgkrCgk+PQoJYnogKmlmNDdfZW5kCgoJLy8gKmlmNDdfY29uc2VxdWVudAoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTAKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgMzAwCgk8CglieiAqaWY0OF9lbmQKCgkvLyAqaWY0OF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTEKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGUgYjY0IENvRUIgLy8gI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50IERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjQ4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MwoJLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOCA9IGN1cnJlbnRCaW5TaXplICogKDM2NSBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNmQKCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyBjdXJyZW50QmluU2l6ZSAqICgzNjUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk0CgkvLyBhdmdTdGFrZTogdWludDEyOCA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAvIGN1cnJlbnRCaW5TaXplCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYiE9CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTkKCS8vIGFwcjogdWludDEyOCA9CgkvLyAgICAgICAgICAgICAgICAgICAgICgoKHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgYXMgdWludDEyOCkgKiAoMTAwMDAgYXMgdWludDEyOCkpIC8gYXZnU3Rha2UpICoKCS8vICAgICAgICAgICAgICAgICAgICAgKGFwcHJveFJvdW5kc1BlclllYXIgLyBjdXJyZW50QmluU2l6ZSkKCWJ5dGUgMHg3MjY1Nzc2MTcyNjQ0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJyZXdhcmRBY2N1bXVsYXRvciIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAKCWIqCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYi8KCWZyYW1lX2RpZyAxIC8vIGFwcHJveFJvdW5kc1BlclllYXI6IHVpbnQxMjgKCWZyYW1lX2RpZyAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoJYi8KCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqXG4gICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDMgLy8gYXByOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwMwoJLy8gYWxwaGE6IHVpbnQxMjggPSAxMCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NWQ5NjRiODAwCgliPgoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwNgoJLy8gYWxwaGEgPSA5MCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNWEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCippZjUwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDgKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0KCS8vICAgICAgICAgICAgICAgICAgICAgKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpCglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYi0KCWIqCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJYi8KCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAodGhpcy53ZWlnaHRlZE1vdmluZ0F2ZXJhZ2UudmFsdWUgKiAoKDEwMCBhcyB1aW50MTI4KSAtIGFscGhhKSkgLyAoMTAwIGFzIHVpbnQxMjgpICtcbiAgICAgICAgICAgICAgICAgICAgKGFwciAqIGFscGhhKSAvICgxMDAgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoqaWY0OV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE0CgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9ICh0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSBhcyB1aW50MTI4KSAqICh0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIGFzIHVpbnQxMjgpICogKHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTYKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCippZjQ3X2VuZDoKCXJldHN1YgoKLy8gc2V0Um91bmRzUGVyRGF5KCk6IHZvaWQKc2V0Um91bmRzUGVyRGF5OgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjYKCS8vIHRoaXMudHhuLmZpcnN0VmFsaWQgPCAxMgoJdHhuIEZpcnN0VmFsaWQKCWludCAxMgoJPAoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOAoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglpbnQgMzA4NTcKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOQoJLy8gcmV0dXJuCglyZXRzdWIKCippZjUxX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzIKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9CgkvLyAgICAgICAgICAgICBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLnRpbWVzdGFtcCAtIGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMTFdLnRpbWVzdGFtcAoJdHhuIEZpcnN0VmFsaWQKCWludCAxCgktCglibG9jayBCbGtUaW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnQgMTEKCS0KCWJsb2NrIEJsa1RpbWVzdGFtcAoJLQoJZnJhbWVfYnVyeSAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM0CgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPT09IDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjUyX2VuZAoKCS8vICppZjUyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzYKCS8vIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlID0gQVBQUk9YX0FWR19ST1VORFNfUEVSX0RBWQoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJaW50IDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1Ml9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDQyCgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9ICgyNCAqIDYwICogNjAgKiAxMCkgLyBhdmdCbG9ja1RpbWVUZW50aHMKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJnYXMoKXZvaWQiCgltZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCgltZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCgltZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCgltZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCgltZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfaW5pdFN0b3JhZ2UgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3JlbW92ZVN0YWtlICphYmlfcm91dGVfY2xhaW1Ub2tlbnMgKmFiaV9yb3V0ZV9nZXRTdGFrZXJJbmZvICphYmlfcm91dGVfcGF5VG9rZW5SZXdhcmQgKmFiaV9yb3V0ZV91cGRhdGVBbGdvZFZlciAqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZSAqYWJpX3JvdXRlX2dvT25saW5lICphYmlfcm91dGVfZ29PZmZsaW5lICphYmlfcm91dGVfbGlua1RvTkZEICphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json b/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json index de1add17..445cd44c 100644 --- a/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json +++ b/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json @@ -216,7 +216,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50IDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKTogdm9pZApjcmVhdGVBcHBsaWNhdGlvbjoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyCgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZSAweDY5NmU2OTc0IC8vICJpbml0IgoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSAwCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlID0gMAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uY3JlYXRlKGFwcHJvdmFsUHJvZ3JhbVNpemUpCglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkCiphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGE6CgkvLyBkYXRhOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gb2Zmc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoJY2FsbHN1YiBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YQoJaW50IDEKCXJldHVybgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEob2Zmc2V0OiB1aW50NjQsIGRhdGE6IGJ5dGVzKTogdm9pZApsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YToKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGUgMHg2OTZlNjk3NCAvLyAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NQoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5yZXBsYWNlKG9mZnNldCwgZGF0YSkKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50IDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlIDB4Njk2ZTY5NzQgLy8gImluaXQiCglpbnQgMQoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50IDMKCWludCAxMQoJaW50IDAKCWR1cG4gMgoJaW50IDMKCWludCAxCgljYWxsc3ViIG1pbkJhbGFuY2VGb3JBY2NvdW50CglpdG9iCgljb25jYXQKCWludCAxMDAwMDAKCWludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglpbnQgMTc5CgljYWxsc3ViIGNvc3RGb3JCb3hTdG9yYWdlCglpdG9iCgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UHJvdG9jb2xDb25zdHJhaW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKTogQ29uc3RyYWludHMKLy8KLy8gUmV0dXJucyB0aGUgcHJvdG9jb2wgY29uc3RyYWludHMgc28gdGhhdCBVSXMgY2FuIGxpbWl0IHdoYXQgdXNlcnMgc3BlY2lmeSBmb3IgdmFsaWRhdG9yIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OQoJLy8gcmV0dXJuIHsKCS8vICAgICAgICAgICAgIGVwb2NoUGF5b3V0Um91bmRzTWluOiBNSU5fRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNYXg6IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBtaW5QY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1JTl9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWF4UGN0VG9WYWxpZGF0b3JXRm91ckRlY2ltYWxzOiBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICAgICAgIG1pbkVudHJ5U3Rha2U6IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLAoJLy8gICAgICAgICAgICAgbWF4QWxnb1BlclBvb2w6IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCksCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyVmFsaWRhdG9yOiB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgYW10Q29uc2lkZXJlZFNhdHVyYXRlZDogdGhpcy5hbGdvU2F0dXJhdGlvbkxldmVsKCksCgkvLyAgICAgICAgICAgICBtYXhOb2RlczogTUFYX05PREVTLAoJLy8gICAgICAgICAgICAgbWF4UG9vbHNQZXJOb2RlOiBNQVhfUE9PTFNfUEVSX05PREUsCgkvLyAgICAgICAgICAgICBtYXhTdGFrZXJzUGVyUG9vbDogTUFYX1NUQUtFUlNfUEVSX1BPT0wsCgkvLyAgICAgICAgIH0KCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGY0MjQwMDAwMDAwMDAwMDBmNDI0MAoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAzCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMGM4Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CiphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9yczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQKCWNhbGxzdWIgZ2V0TnVtVmFsaWRhdG9ycwoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE51bVZhbGlkYXRvcnMoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkYXRvcnMKZ2V0TnVtVmFsaWRhdG9yczoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE2OQoJLy8gcmV0dXJuIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZQoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglpbnQgMAoJaW50IDI0MgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludCAyNDIgLy8gaGVhZE9mZnNldAoJaW50IDI2CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50IDgKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJY29uY2F0CglyZXRzdWIKCi8vIGdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRQb29sczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoJY2FsbHN1YiBnZXRQb29scwoJZHVwCglsZW4KCWludCAxOAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sSW5mb1tdCi8vCi8vIFJldHVybiBsaXN0IG9mIGFsbCBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZAovLyBAcmV0dXJuIHtQb29sSW5mb1tdfSAtIGFycmF5IG9mIHBvb2xzCi8vIE5vdCBjYWxsYWJsZSBmcm9tIG90aGVyIGNvbnRyYWN0cyBiZWNhdXNlID4xSyByZXR1cm4gYnV0IGNhbiBiZSBjYWxsZWQgdy8gc2ltdWxhdGUgd2hpY2ggYnVtcHMgbG9nIHJldHVybnMKZ2V0UG9vbHM6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk5CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludCAyNjggLy8gaGVhZE9mZnNldAoJaW50IDQzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDEKCS8vIHBvb2xTZXRbaV0ucG9vbEFwcElkID09PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWYwX2VuZAoKCS8vICppZjBfY29uc2VxdWVudAoJYiAqZm9yXzBfZW5kCgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDE4CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA3CgkvLyByZXR1cm4gcmV0RGF0YQoJZnJhbWVfZGlnIDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZ2V0UG9vbEFwcElkOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBwb29sSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBnZXRQb29sQXBwSWQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBnZXRQb29sQXBwSWQodmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQpOiB1aW50NjQKLy8KLy8gZ2V0UG9vbEFwcElkIGlzIHVzZWZ1bCBmb3IgY2FsbGVycyB0byBkZXRlcm1pbmUgYXBwIHRvIGNhbGwgZm9yIHJlbW92aW5nIHN0YWtlIGlmIHRoZXkgZG9uJ3QgaGF2ZSBzdGFraW5nIG9yCi8vIHdhbnQgdG8gZ2V0IHN0YWtlciBsaXN0IGZvciBhbiBhY2NvdW50LiAgVGhlIHN0YWtpbmcgcG9vbCBhbHNvIHVzZXMgaXQgdG8gZ2V0IHRoZSBhcHAgaWQgb2Ygc3Rha2luZyBwb29sIDEKLy8gKHdoaWNoIGNvbnRhaW5zIHJld2FyZCB0b2tlbnMgaWYgYmVpbmcgdXNlZCkgc28gdGhhdCB0aGUgYW1vdW50IGF2YWlsYWJsZSBjYW4gYmUgZGV0ZXJtaW5lZC4KZ2V0UG9vbEFwcElkOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjE3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglieiAqc2tpcF9hbmQwCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAyNAoJPD0KCSYmCgoqc2tpcF9hbmQwOgoJLy8gcG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sSWQgLSAxXS5wb29sQXBwSWQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXJldHN1YgoKLy8gZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCiphYmlfcm91dGVfZ2V0UG9vbEluZm86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIGdldFBvb2xJbmZvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJY2FsbHN1YiBnZXRQb29sSW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xJbmZvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sSW5mbwpnZXRQb29sSW5mbzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIyNgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglpbnQgMjE3CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50IDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY3CgkvLyAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJYnogKmlmM19lbmQKCgkvLyAqaWYzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2OAoJLy8gcmV0dXJuIFtdCglieXRlIDB4CgliICpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuCgoqaWYzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MAoJLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzEKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKCWNhbGxzdWIgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModmFsaWRhdG9ySWQ6IHVpbnQ2NCk6IE5vZGVQb29sQXNzaWdubWVudENvbmZpZwpnZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJcHJvdG8gMSAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mjk0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoJY2FsbHN1YiBnZXRORkRSZWdpc3RyeUlECglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpOiB1aW50NjQKZ2V0TkZEUmVnaXN0cnlJRDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMwMQoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZAoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0CgljYWxsc3ViIGFkZFZhbGlkYXRvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFZhbGlkYXRvcihtYnJQYXltZW50OiBQYXlUeG4sIG5mZE5hbWU6IHN0cmluZywgY29uZmlnOiBWYWxpZGF0b3JDb25maWcpOiB1aW50NjQKLy8KLy8gQWRkcyBhIG5ldyB2YWxpZGF0b3IKLy8gUmVxdWlyZXMgYXQgbGVhc3QgMTAgQUxHTyBhcyB0aGUgJ2ZlZScgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBoZWxwIGRpc3N1YWRlIHNwYW1tZWQgdmFsaWRhdG9yIGFkZHMuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgdmFsaWRhdG9yIHN0b3JhZ2UKLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgKE9wdGlvbmFsKSBOYW1lIG9mIG5mZCAodXNlZCBhcyBkb3VibGUtY2hlY2sgYWdhaW5zdCBpZCBzcGVjaWZpZWQgaW4gY29uZmlnKQovLyBAcGFyYW0ge1ZhbGlkYXRvckNvbmZpZ30gY29uZmlnIFZhbGlkYXRvckNvbmZpZyBzdHJ1Y3QKLy8gQHJldHVybnMge3VpbnQ2NH0gdmFsaWRhdG9yIGlkCmFkZFZhbGlkYXRvcjoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzEzCgkvLyB0aGlzLnZhbGlkYXRlQ29uZmlnKGNvbmZpZykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJY2FsbHN1YiB2YWxpZGF0ZUNvbmZpZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNQoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNwoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCWludCAxMDAwMDAwMAoJPgoKCS8vIGZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gdmFsaWRhdG9ySWQgPSB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgKyAxCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuY3JlYXRlKCkKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaW50IDEwOTIKCWJveF9jcmVhdGUKCXBvcAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcgPSBjb25maWcKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmlkID0gdmFsaWRhdG9ySWQKCWludCAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGUgMHg2OTJlNmY3NzZlNjU3MjJlNjEgLy8gImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM4CgkvLyBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCWJ5dGUgMHhhOGRkMjFjYiAvLyByZXRpT1BfYWRkZWRWYWxpZGF0b3IodWludDY0LGFkZHJlc3MsYWRkcmVzcykKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXI6CgkvLyBtYW5hZ2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1hbmFnZXIpIGZvciBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcgoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBtYW5hZ2VyOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBWYWxpZGF0b3IgbWFuYWdlciBmb3IgYSBzcGVjaWZpYyBWYWxpZGF0b3IgaWQuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gY2hhbmdlIHRoZSBtYW5hZ2VyIGZvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBtYW5hZ2VyIC0gVGhlIG5ldyBtYW5hZ2VyIGFkZHJlc3MuCmNoYW5nZVZhbGlkYXRvck1hbmFnZXI6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTkKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MAoJLy8gYXNzZXJ0KG1hbmFnZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MsICduZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzJykKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gbmVlZHMgdG8gYXQgbGVhc3QgYmUgdmFsaWQgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyID0gbWFuYWdlcgoJaW50IDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCS8vIHN1bnNldHRpbmdUbzogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Vuc2V0dGluZ09uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbwoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdW5zZXR0aW5nT246IHVpbnQ2NCwgc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUpOiB2b2lkCi8vCi8vIFVwZGF0ZXMgdGhlIHN1bnNldCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiB2YWxpZGF0b3IuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ09uIC0gVGhlIG5ldyBzdW5zZXQgdGltZXN0YW1wLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ1RvIC0gVGhlIG5ldyBzdW5zZXQgdG8gdmFsaWRhdG9yIGlkLgpjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzczCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzQKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50IDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ1RvID0gc3Vuc2V0dGluZ1RvCglpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEOgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIG5mZEFwcElEOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JORkQKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBuZmRBcHBJRDogdWludDY0LCBuZmROYW1lOiBzdHJpbmcpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIE5GRCBmb3IgYSB2YWxpZGF0b3IgaW4gdGhlIHZhbGlkYXRvckxpc3QgY29udHJhY3QuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIE5GRCB0byBhc3NpZ24gdG8gdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgTkZEICh3aGljaCBtdXN0IG1hdGNoKQpjaGFuZ2VWYWxpZGF0b3JORkQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OQoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozOTEKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludCA3MgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDAzCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDQKCS8vIGFzc2VydChjb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglpbnQgMTc3CglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjAKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgRW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgRW50cnlHYXRpbmdUeXBlIDwgR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgICAgICAgJ2ludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPAoJJiYKCipza2lwX2FuZDE6CgkvLyBpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlCglhc3NlcnQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI2CgkvLyBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDEKCT09CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI3CgkvLyBhc3NlcnQoRW50cnlHYXRpbmdBZGRyZXNzICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoqaWY3X2VuZDoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzAKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICAgICAgICBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludCA4MAoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglpbnQgODEKCWZyYW1lX2RpZyAtMyAvLyBFbnRyeUdhdGluZ0FkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWZyYW1lX2RpZyAtNSAvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJaW50IDE2MQoJZnJhbWVfZGlnIC02IC8vIFJld2FyZFBlclBheW91dDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAobWJyUGF5bWVudCkgZm9yIGFkZFBvb2wgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkUG9vbAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFBvb2wobWJyUGF5bWVudDogUGF5VHhuLCB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBub2RlTnVtOiB1aW50NjQpOiBWYWxpZGF0b3JQb29sS2V5Ci8vCi8vIEFkZHMgYSBuZXcgcG9vbCB0byBhIHZhbGlkYXRvcidzIHBvb2wgc2V0LCByZXR1cm5pbmcgdGhlICdrZXknIHRvIHJlZmVyZW5jZSB0aGUgcG9vbCBpbiB0aGUgZnV0dXJlIGZvciBzdGFraW5nLCBldGMuCi8vIFRoZSBjYWxsZXIgbXVzdCBwYXkgdGhlIGNvc3Qgb2YgdGhlIHZhbGlkYXRvcnMgTUJSIGluY3JlYXNlIGFzIHdlbGwgYXMgdGhlIE1CUiB0aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgcG9vbCBpdHNlbGYuCi8vCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBjYWxsIF0KLy8gQHBhcmFtIHtQYXlUeG59IG1iclBheW1lbnQgcGF5bWVudCBmcm9tIGNhbGxlciB3aGljaCBjb3ZlcnMgbWJyIGluY3JlYXNlIG9mIGFkZGluZyBhIG5ldyBwb29sCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCBpcyBpZCBvZiB2YWxpZGF0b3IgdG8gcG9vbCB0byAobXVzdCBiZSBvd25lciBvciBtYW5hZ2VyKQovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bSBpcyBub2RlIG51bWJlciB0byBhZGQgdG8KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2wga2V5IHRvIGNyZWF0ZWQgcG9vbAphZGRQb29sOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NAoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU3CgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiB0aGlzLmdldE1ickFtb3VudHMoKS5hZGRQb29sTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTkKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY5CgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnQgMCAvLyBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCAwCglpbnQgNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCA0MDk2CglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfbGVuCgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUKCWFzc2VydAoJaW50IDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCWJ5dGUgYjY0IEN3PT0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzUKCS8vIGdsb2JhbE51bVVpbnQ6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtVWludAoJaW50IDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzYKCS8vIGdsb2JhbE51bUJ5dGVTbGljZTogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UKCWludCAzCglpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NwoJLy8gZXh0cmFQcm9ncmFtUGFnZXM6IDMKCWludCAzCglpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc4CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyBjcmVhdGluZ0NvbnRyYWN0SUQsIHZhbGlkYXRvcklkLCBwb29sSWQsIG1pbkVudHJ5U3Rha2UKCS8vICAgICAgICAgICAgICAgICBtZXRob2QoJ2NyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkJyksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih2YWxpZGF0b3JJZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYihudW1Qb29scyBhcyB1aW50NjQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICAgICAgICBdCgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnQgMjA5CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyA9IG51bVBvb2xzIGFzIHVpbnQxNgoJaW50IDI0MgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDkxCgkvLyBwb29sQXBwSWQgPSB0aGlzLml0eG4uY3JlYXRlZEFwcGxpY2F0aW9uSUQuaWQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWZyYW1lX2J1cnkgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tudW1Qb29scyAtIDFdLnBvb2xBcHBJZCA9IHBvb2xBcHBJZAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCWJ5dGUgMHhmYmNjMGY2YiAvLyByZXRpT1BfdmFsaWRhdG9yQWRkZWRQb29sKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnQgMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA1CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglpbnQgMTQ0Cglib3hfY3JlYXRlCglwb3AKCippZjExX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKyByZWFsQW1vdW50IDwgdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSwKCS8vICAgICAgICAgICAgICd0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAnLAoJLy8gICAgICAgICApCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJKwoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OAoJLy8gZmluZFJldCA9IHRoaXMuZmluZFBvb2xGb3JTdGFrZXIodmFsaWRhdG9ySWQsIHN0YWtlciwgcmVhbEFtb3VudCkKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJZnJhbWVfYnVyeSAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NTkKCS8vIHBvb2xLZXkgPSBmaW5kUmV0WzBdCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYyCgkvLyBwb29sS2V5LnBvb2xJZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEyX2VuZAoKCS8vICppZjEyX2NvbnNlcXVlbnQKCS8vIE5vIHBvb2wgYXZhaWxhYmxlIHdpdGggZnJlZSBzdGFrZS4gIFZhbGlkYXRvciBuZWVkcyB0byBhZGQgYW5vdGhlciBwb29sCgllcnIKCippZjEyX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2NwoJLy8gdGhpcy51cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlciwgcG9vbEtleSkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY2FsbHN1YiB1cGRhdGVTdGFrZXJQb29sU2V0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTcwCgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgICAgICAgcG9vbEtleSwKCS8vICAgICAgICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCWZyYW1lX2RpZyA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJY2FsbHN1YiBjYWxsUG9vbEFkZFN0YWtlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTc3CgkvLyB0aGlzLnJldGlPUF9zdGFrZUFkZGVkLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogdmFsaWRhdG9ySWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYW1vdW50U3Rha2VkOiByZWFsQW1vdW50LAoJLy8gICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgIH0pCglieXRlIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglpdG9iCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTg1CgkvLyByZXR1cm4gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gOAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNQoJLy8gcG9vbDFBcHBJRCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkCglpbnQgMjY4CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTUKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNgoJLy8gbGFzdFBheW91dFVwZGF0ZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby51cGRhdGVkRm9yUGF5b3V0CglpbnQgODkyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCgkvLyAqaWYxNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNwoJLy8gbGFzdFBheW91dFVwZGF0ZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglpbnQgMAoJIT0KCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vICppZjE1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE5CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjIKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJaW50IDE2OQoJaW50IDQKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNQoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTZfZW5kCgoJLy8gKmlmMTZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI2CgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvCglpbnQgNzAwIC8vIGhlYWRPZmZzZXQKCWludCAyMDAKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnQgODkyCglmcmFtZV9kaWcgMSAvLyBjdXJSb3VuZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50IDI0MgoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnQgMV8wMDBfMDAwCgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVtpXSA9IG91clBvb2xQY3RPZldob2xlCglpbnQgNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50IDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAxMCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayArPSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkCglpbnQgMjYwCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NQoJLy8gdGhpcy5yZXZlcmlmeU5GRE93bmVyc2hpcChwb29sS2V5LmlkKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgljYWxsc3ViIHJldmVyaWZ5TkZET3duZXJzaGlwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc3CgkvLyB0aGlzLnJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZS5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYWxnb0FkZGVkOiBhbGdvVG9BZGQsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkhlbGRCYWNrOiByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkLAoJLy8gICAgICAgICAgICAgc2F0dXJhdGVkQnVyblRvRmVlU2luazogc2F0dXJhdGVkQnVyblRvRmVlU2luaywKCS8vICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb246IHZhbGlkYXRvckNvbW1pc3Npb24sCgkvLyAgICAgICAgIH0pCglieXRlIDB4YjNlNDdjM2QgLy8gcmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlKHVpbnQ2NCx1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNSAvLyBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZDoKCS8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXJSZW1vdmVkKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBib29sCglhc3NlcnQKCWludCAwCglnZXRiaXQKCgkvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMyAoc3Rha2VyKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoJY2FsbHN1YiBzdGFrZVJlbW92ZWQKCWludCAxCglyZXR1cm4KCi8vIHN0YWtlUmVtb3ZlZChwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NCwgcmV3YXJkUmVtb3ZlZDogdWludDY0LCBzdGFrZXJSZW1vdmVkOiBib29sZWFuKTogdm9pZAovLwovLyBzdGFrZVJlbW92ZWQgaXMgY2FsbGVkIGJ5IFN0YWtpbmcgcG9vbHMgdG8gaW5mb3JtIHRoZSB2YWxpZGF0b3IgKHVzKSB0aGF0IGEgcGFydGljdWxhciBhbW91bnQgb2YgdG90YWwgc3Rha2UgaGFzIGJlZW4gcmVtb3ZlZAovLyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIElmIGFueSBhbW91bnQgb2YgcmV3YXJkUmVtb3ZlZCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhhdCBhbW91bnQgb2YgcmV3YXJkIGlzIHNlbnQgdG8gdGhlIHVzZQovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgY2FsbGluZyB1cyBmcm9tIHdoaWNoIHN0YWtlIHdhcyByZW1vdmVkCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRSZW1vdmVkIC0gYWxnbyBhbW91bnQgcmVtb3ZlZAovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkUmVtb3ZlZCAtIGlmIGFwcGxpY2FibGUsIGFtb3VudCBvZiB0b2tlbiByZXdhcmQgcmVtb3ZlZCAoYnkgcG9vbCAxIGNhbGxlcikgb3IgVE8gcmVtb3ZlIGFuZCBwYXkgb3V0ICh2aWEgcG9vbCAxIGZyb20gZGlmZmVyZW50IHBvb2wgY2FsbGVyKQovLyBAcGFyYW0ge2Jvb2xlYW59IHN0YWtlclJlbW92ZWQKc3Rha2VSZW1vdmVkOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vICppZjE3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA3CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxN19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTAKCS8vIHRoaXMudmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWNhbGxzdWIgdmVyaWZ5UG9vbEtleUNhbGxlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxNAoJLy8gYXNzZXJ0KGFtb3VudFJlbW92ZWQgPiAwIHx8IHJld2FyZFJlbW92ZWQgPiAwLCAnc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkJykKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+CglkdXAKCWJueiAqc2tpcF9vcjIKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+Cgl8fAoKKnNraXBfb3IyOgoJLy8gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gKmlmMThfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjEKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMThfZWxzZQoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMgoJLy8gcmV3YXJkVG9rZW5JRCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMwoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSUQgIT09IDAsICJyZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpbnQgMAoJIT0KCgkvLyByZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyNAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrID49IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgJ3Jld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgICAgICkKCWludCAyNjAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCT49CgoJLy8gcmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczMAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgLT0gcmV3YXJkUmVtb3ZlZAoJaW50IDI2MAoJZHVwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZCkKCWludCAyNjgKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczOAoJLy8gbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0KCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjE5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc0MQoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VSZW1vdmVkLmxvZyh7CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgYW1vdW50VW5zdGFrZWQ6IGFtb3VudFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JRCksCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWIgKmlmMThfZW5kCgoqaWYxOF9lbHNlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzUxCgkvLyB0aGlzLnJldGlPUF9zdGFrZVJlbW92ZWQubG9nKHsKCS8vICAgICAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICBzdGFrZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICBhbW91bnRVbnN0YWtlZDogYW1vdW50UmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAvLyBubyB0b2tlbnMgcmV3YXJkZWQuLgoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC56ZXJvSW5kZXgsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IDAsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludCAyNDQKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzkKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wKCWZyYW1lX2RpZyAzIC8vIHN0YWtlck91dE9mUHJvdG9jb2w6IGJvb2wKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc4MAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNgoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDYKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjRfZW5kOgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjEKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjI1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNAoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmFsc2UKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjUKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNwoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyOQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sU2V0W2ldLnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgOCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMzCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF0KCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjdfZW5kOgoKKmlmMjZfZW5kOgoKKmZvcl8zX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJaW50IDIwOQoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ2CgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWludCA0MzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ3CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl80OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ5CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlIDB4MDAKCWludCAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludCAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50IDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzYKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgOAoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc4CgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCA8IE1BWF9OT0RFUwoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgOAoJPAoJYnogKmZvcl81X2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MAoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID09PSBwb29sQXBwSWQKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MQoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50IDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODgzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludCA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4NgoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODg3CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MQoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyOV9lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggKz0gMQoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgkvLyBjb3VsZG4ndCBmaW5kIHBvb2wgYXBwIGlkIGluIG5vZGVzIHRvIG1vdmUKCWVycgoJcmV0c3ViCgovLyBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAocmVjZWl2ZXIpIGZvciBlbXB0eVRva2VuUmV3YXJkcyBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGVtcHR5VG9rZW5SZXdhcmRzCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZW1wdHlUb2tlblJld2FyZHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcmVjZWl2ZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gU2VuZHMgdGhlIHJld2FyZCB0b2tlbnMgaGVsZCBpbiBwb29sIDEgdG8gc3BlY2lmaWVkIHJlY2VpdmVyLgovLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIG93bmVyIHdoZW4gdGhleSB3YW50IHRvIGdldCByZXdhcmQgdG9rZW5zICdiYWNrJyB3aGljaCB0aGV5IHNlbnQgdG8KLy8gdGhlIGZpcnN0IHBvb2wgKGxpa2VseSBiZWNhdXNlIHZhbGlkYXRvciBpcyBzdW5zZXR0aW5nLiAgQW55IHRva2VucyBjdXJyZW50bHkgJ3Jlc2VydmVkJyBmb3Igc3Rha2VycyB0byBjbGFpbSB3aWxsCi8vIE5PVCBiZSBzZW50IGFzIHRoZXkgbXVzdCBiZSBoZWxkIGJhY2sgZm9yIHN0YWtlcnMgdG8gbGF0ZXIgY2xhaW0uCi8vIFsgT05MWSBPV05FUiBDQU4gQ0FMTF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gcmVjZWl2ZXIgLSB0aGUgYWNjb3VudCB0byBzZW5kIHRoZSB0b2tlbnMgdG8gKG11c3QgYWxyZWFkeSBiZSBvcHRlZC1pbiB0byB0aGUgcmV3YXJkIHRva2VuKQovLyBAcmV0dXJucyB7dWludDY0fSB0aGUgYW1vdW50IG9mIHJld2FyZCB0b2tlbiBzZW50CmVtcHR5VG9rZW5SZXdhcmRzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxMQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEyCgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEzCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrCglpbnQgMjYwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTQKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnQgMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE1CgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50IDI2OAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTcKCS8vIHRva2VuUmV3YXJkQmFsID0KCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkyMQoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5wYXlUb2tlblJld2FyZD4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3JlY2VpdmVyLCByZXdhcmRUb2tlbklkLCB0b2tlblJld2FyZEJhbF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDI5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyIHx8CgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWludCA4CglpbnQgMzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnQgNDAKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyB2ZXJpZnlQb29sS2V5Q2FsbGVyIHZlcmlmaWVzIHRoZSBwYXNzZWQgaW4ga2V5IChmcm9tIGEgc3Rha2luZyBwb29sIGNhbGxpbmcgdXMgdG8gdXBkYXRlIG1ldHJpY3MpIGlzIHZhbGlkCi8vIGFuZCBtYXRjaGVzIHRoZSBpbmZvcm1hdGlvbiB3ZSBoYXZlIGluIG91ciBzdGF0ZS4gICdGYWtlJyBwb29scyBjb3VsZCBjYWxsIHVzIHRvIHVwZGF0ZSBvdXIgZGF0YSwgYnV0IHRoZXkKLy8gY2FuJ3QgZmFrZSB0aGUgaWRzIGFuZCBtb3N0IGltcG9ydGFudGx5IGFwcGxpY2F0aW9uIGlkKCEpIG9mIHRoZSBjYWxsZXIgdGhhdCBoYXMgdG8gbWF0Y2guCnZlcmlmeVBvb2xLZXlDYWxsZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQyCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBhc3NlcnQocG9vbEtleS5pZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCd2YWxpZGF0b3JJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OAoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjkKCS8vIHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvICE9PSAwCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMF9lbmQKCgkvLyAqaWYzMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDcyCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzQKCS8vIHZhbGlkYXRvckNvbmZpZy5vd25lciAhPT0gbmZkT3duZXIgJiYgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIgIT09IG5mZE93bmVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnQgNzIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDkxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA+PSBNSU5fRVBPQ0hfTEVOR1RIICYmIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIDw9IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICAnZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA+PSBNSU5fUENUX1RPX1ZBTElEQVRPUiAmJiBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yIDw9IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgJ2NvbW1pc3Npb24gcGVyY2VudGFnZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ3CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludCAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMDcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXInLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludCAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50IDMKCTw9CgkmJgoKKnNraXBfYW5kODoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTExMQoJLy8gY29uZmlnLnN1bnNldHRpbmdPbiAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTIKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMzX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzNAoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQzCgkvLyByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWl0eG5fbmV4dAoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTM5CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQwCgkvLyBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDgKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgNTAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYzNF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTUzCgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsU3Rha2VycyA9IHBvb2xOdW1TdGFrZXJzIGFzIHVpbnQxNgoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCA9IHBvb2xBbGdvU3Rha2VkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnQgMjQ0CglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAxCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sCglmcmFtZV9kaWcgLTUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuCglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkrCglieXRlIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgLy8gIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludCAyNTIKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTY2CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzAKCS8vIGFzc2VydCh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMpCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3MgoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDEKCS0KCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyByZW1vdmVGcm9tU3Rha2VyUG9vbFNldChzdGFrZXI6IEFkZHJlc3MsIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBbYm9vbGVhbiwgYm9vbGVhbl0KLy8KLy8gUmVtb3ZlcyBhIHBvb2wga2V5IGZyb20gdGhlIHN0YWtlcidzIGFjdGl2ZSBwb29sIHNldCAtIGZhaWxzIGlmIG5vdCBmb3VuZCAoISkKLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUgcG9vbCBrZXkgdGhleSBzaG91bGQgYmUgc3RvcmVkIGluCi8vCi8vIEByZXR1cm4gW2Jvb2xlYW4sIGJvb2xlYW5dIFtpcyB0aGUgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHMgb2YgdGhlIGdpdmVuIFZBTElEQVRPUiwgYW5kIGlzIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzXQpyZW1vdmVGcm9tU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk5CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMAoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAxCgkvLyBmb3VuZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl84OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNQoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0MF9lbmQKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwOAoJLy8gaW5BbnlQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA5CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWY0MV9lbmQKCgkvLyAqaWY0MV9jb25zZXF1ZW50CgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDJfZWxzZQoKCS8vICppZjQyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTEKCS8vIGZvdW5kID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTMKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0Ml9lbmQKCippZjQyX2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzgKCipmb3JfOF9lbmQ6CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTkKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyMwoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXQoJYnl0ZSAweDAwCglpbnQgMAoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAwCgk9PQoJc2V0Yml0CglpbnQgMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDAKCT09CglzZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIGFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKYWRkUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJaW50IDIyNQoJaW50IDEKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJLQoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludCA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgktCglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50IDgwCglpbnQgMQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50IDAKCWludCAyNDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0Nl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRCB8fAoJLy8gICAgICAgICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50IDEKCT09CglkdXAKCWJueiAqc2tpcF9vcjQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50IDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAyCgk9PQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MAoJLy8gZm91bmQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MgoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MwoJLy8gZm91bmQgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgliICpmb3JPZl8wX2VuZAoKKmlmNTBfZW5kOgoKKmZvck9mXzBfY29udGludWU6CgkvLyBpbmNyZW1lbnQgb2Zmc2V0IGFuZCBsb29wIGlmIG5vdCBvdXQgb2YgYm91bmRzCglmcmFtZV9kaWcgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoJaW50IDgKCSsKCWR1cAoJaW50IDMyIC8vIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnQgOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0OV9lbmQ6CgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAzCgk9PQoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNTFfZW5kOgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk3CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxMAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTJfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOQoJLy8gdXNlck9mZmVyZWRORkROYW1lID0gQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpIGFzIHN0cmluZwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiaXNWYWxpZE5mZEFwcElkKHN0cmluZyx1aW50NjQpYm9vbCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglsb2FkIDIwMCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnQgMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDkKCS8vIGFwcGxpY2F0aW9uQXJnczogWydyZWFkX3Byb3BlcnR5JywgJ3YuY2FBbGdvLjAuYXMnXQoJYnl0ZSAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWJ5dGUgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjYUFsZ29EYXRhLmxlbmd0aDsgaSArPSAzMikKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgoqZm9yXzEwOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTMKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU0CgkvLyBhZGRyICE9PSByYXdCeXRlcyhnbG9iYWxzLnplcm9BZGRyZXNzKSAmJiBhZGRyID09PSByYXdCeXRlcyhhZGRyVG9GaW5kKQoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDExCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWZyYW1lX2RpZyAtMiAvLyBhZGRyVG9GaW5kOiBBZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDExOgoJYnogKmlmNTNfZW5kCgoJLy8gKmlmNTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1NQoJLy8gcmV0dXJuIHRydWUKCWludCAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1M19lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSArPSAzMgoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCSsKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCWIgKmZvcl8xMAoKKmZvcl8xMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU4CgkvLyByZXR1cm4gZmFsc2UKCWludCAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfSEFSRF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxNTAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludCAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIG1pbkJhbCArPSBjb250cmFjdHMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyBjb250cmFjdHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNAoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludCAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNgoJLy8gbWluQmFsICs9IGxvY2FsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC00IC8vIGxvY2FsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDcKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA5CgkvLyBtaW5CYWwgKz0gZ2xvYmFsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTcgLy8gZ2xvYmFsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDEwCgkvLyByZXR1cm4gbWluQmFsCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDE3CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEUKCWludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCgltZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCW1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCgltZXRob2QgImdhcygpdm9pZCIKCW1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCgltZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCW1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCgltZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCgltZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCgltZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCW1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCW1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCW1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCW1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCW1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fba7bab..971f0448 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,18 +11,18 @@ importers: contracts: dependencies: '@algorandfoundation/algokit-utils': - specifier: 7.0.0-beta.16 - version: 7.0.0-beta.16(algosdk@2.9.0) + specifier: 7.0.0-beta.21 + version: 7.0.0-beta.21(algosdk@2.9.0) algosdk: specifier: 2.9.0 version: 2.9.0 devDependencies: '@algorandfoundation/algokit-client-generator': - specifier: 4.0.0-beta.5 - version: 4.0.0-beta.5 + specifier: 4.0.0-beta.7 + version: 4.0.0-beta.7 '@algorandfoundation/tealscript': - specifier: 0.103.2 - version: 0.103.2 + specifier: 0.105.5 + version: 0.105.5 '@joe-p/algokit-generate-component': specifier: 0.2.1 version: 0.2.1(chokidar@3.6.0) @@ -63,8 +63,8 @@ importers: contracts/bootstrap: dependencies: '@algorandfoundation/algokit-utils': - specifier: 7.0.0-beta.16 - version: 7.0.0-beta.16(algosdk@2.9.0) + specifier: 7.0.0-beta.21 + version: 7.0.0-beta.21(algosdk@2.9.0) algosdk: specifier: 2.9.0 version: 2.9.0 @@ -94,8 +94,8 @@ importers: ui: dependencies: '@algorandfoundation/algokit-utils': - specifier: 7.0.0-beta.16 - version: 7.0.0-beta.16(algosdk@2.9.0) + specifier: 7.0.0-beta.21 + version: 7.0.0-beta.21(algosdk@2.9.0) '@blockshake/defly-connect': specifier: 1.1.6 version: 1.1.6(algosdk@2.9.0) @@ -346,19 +346,19 @@ packages: '@adobe/css-tools@4.4.0': resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} - '@algorandfoundation/algokit-client-generator@4.0.0-beta.5': - resolution: {integrity: sha512-XV0HX0ZNgKrqaVE3HDkZ6LmzdR3NW0zJP/lh661TA7KeONGvFOlaAM6HZ0d7nbL0rLsuIZAKJ6ZAvG89bCW1Hw==} + '@algorandfoundation/algokit-client-generator@4.0.0-beta.7': + resolution: {integrity: sha512-BlEAIdHhBwxWR1crfL7kJkGDCK5NCG1ZKlNFUk88gmG6IxUkeVXa23ltKm/ZAm95k4sc3jzjbXnoBzrYuNgN+Q==} engines: {node: '>=18.0'} hasBin: true - '@algorandfoundation/algokit-utils@7.0.0-beta.16': - resolution: {integrity: sha512-5Xm4hkPL607ISzh2QFLPDN4TiRKrAvv+sdeVKF56idmIh8V5DIhHBeQeKj0r3oBNMUYL+0tIMa8zy9ZEDs8EnA==} + '@algorandfoundation/algokit-utils@7.0.0-beta.21': + resolution: {integrity: sha512-ESPrHoMyvK3fK3nbCj5f4cQVhPWzdZ+DxEZHciZbq504+kBSP8yqAe4lYNnlQHYRdg17e8KoXX6pAAX5V5W7jA==} engines: {node: '>=18.0'} peerDependencies: - algosdk: ^2.7.0 + algosdk: '>=2.9.0 <3.0' - '@algorandfoundation/tealscript@0.103.2': - resolution: {integrity: sha512-KIEtNzkgoZt242X1cd8PrEtOh+06CiHd7suqxwIjraGeqf9QvGhwihZRzxohjVAZ6ktA7sydDC8f3e5NMBM36Q==} + '@algorandfoundation/tealscript@0.105.5': + resolution: {integrity: sha512-Vt805Hs6BTeA1XAHuZc7D/O52YuO/4UIUr8QqYxjqsP63xTFufITRhE0ce26EvtlTCIzwa3k1P44DyRHfkGYUA==} hasBin: true '@alloc/quick-lru@5.2.0': @@ -2467,9 +2467,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -2481,9 +2478,6 @@ packages: caniuse-lite@1.0.30001669: resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} - capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -2500,8 +2494,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} @@ -2598,9 +2592,6 @@ packages: console-browserify@1.2.0: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} @@ -2845,9 +2836,6 @@ packages: resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} engines: {node: '>=10'} - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -3271,9 +3259,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} @@ -3643,9 +3628,6 @@ packages: loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3792,9 +3774,6 @@ packages: react: ^16.8 || ^17 || ^18 react-dom: ^16.8 || ^17 || ^18 - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -3948,9 +3927,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3962,15 +3938,9 @@ packages: parse5@7.2.0: resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==} - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4419,9 +4389,6 @@ packages: engines: {node: '>=10'} hasBin: true - sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -4465,9 +4432,6 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} @@ -4855,12 +4819,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} - - upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} @@ -5171,27 +5129,28 @@ snapshots: '@adobe/css-tools@4.4.0': {} - '@algorandfoundation/algokit-client-generator@4.0.0-beta.5': + '@algorandfoundation/algokit-client-generator@4.0.0-beta.7': dependencies: - '@algorandfoundation/algokit-utils': 7.0.0-beta.16(algosdk@2.9.0) + '@algorandfoundation/algokit-utils': 7.0.0-beta.21(algosdk@2.9.0) algosdk: 2.9.0 chalk: 4.1.2 - change-case: 4.1.2 + change-case: 5.4.4 commander: 11.1.0 jsonschema: 1.4.1 - '@algorandfoundation/algokit-utils@7.0.0-beta.16(algosdk@2.9.0)': + '@algorandfoundation/algokit-utils@7.0.0-beta.21(algosdk@2.9.0)': dependencies: algosdk: 2.9.0 buffer: 6.0.3 - '@algorandfoundation/tealscript@0.103.2': + '@algorandfoundation/tealscript@0.105.5': dependencies: '@microsoft/tsdoc': 0.14.2 '@playwright/test': 1.48.0 argparse: 2.0.1 dotenv: 16.4.5 glob: 10.4.5 + hi-base32: 0.5.1 js-sha512: 0.8.0 node-fetch: 2.7.0 polytype: 0.17.0 @@ -7593,23 +7552,12 @@ snapshots: callsites@3.1.0: {} - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.7.0 - camelcase-css@2.0.1: {} camelcase@5.3.1: {} caniuse-lite@1.0.30001669: {} - capital-case@1.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - upper-case-first: 2.0.2 - chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -7634,20 +7582,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - change-case@4.1.2: - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.7.0 + change-case@5.4.4: {} check-error@2.1.1: {} @@ -7738,12 +7673,6 @@ snapshots: console-browserify@1.2.0: {} - constant-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - upper-case: 2.0.2 - constants-browserify@1.0.0: {} convert-source-map@2.0.0: {} @@ -7972,11 +7901,6 @@ snapshots: domain-browser@4.23.0: {} - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - dotenv@16.4.5: {} duplexify@4.1.3: @@ -8535,11 +8459,6 @@ snapshots: dependencies: function-bind: 1.1.2 - header-case@2.0.4: - dependencies: - capital-case: 1.0.4 - tslib: 2.7.0 - headers-polyfill@4.0.3: {} hey-listen@1.0.8: {} @@ -8906,10 +8825,6 @@ snapshots: loupe@3.1.2: {} - lower-case@2.0.2: - dependencies: - tslib: 2.7.0 - lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -9055,11 +8970,6 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.7.0 - node-addon-api@7.1.1: {} node-fetch-native@1.6.4: {} @@ -9229,11 +9139,6 @@ snapshots: pako@1.0.11: {} - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.7.0 - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -9251,18 +9156,8 @@ snapshots: dependencies: entities: 4.5.0 - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - path-browserify@1.0.1: {} - path-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.7.0 - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -9726,12 +9621,6 @@ snapshots: semver@7.6.3: {} - sentence-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - upper-case-first: 2.0.2 - set-blocking@2.0.0: {} set-function-length@1.2.2: @@ -9778,11 +9667,6 @@ snapshots: sisteransi@1.0.5: {} - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.7.0 - sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 @@ -10164,14 +10048,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - upper-case-first@2.0.2: - dependencies: - tslib: 2.7.0 - - upper-case@2.0.2: - dependencies: - tslib: 2.7.0 - uqr@0.1.2: {} uri-js@4.4.1: diff --git a/ui/package.json b/ui/package.json index 666c4b16..609900ca 100644 --- a/ui/package.json +++ b/ui/package.json @@ -37,7 +37,7 @@ "vitest": "2.1.2" }, "dependencies": { - "@algorandfoundation/algokit-utils": "7.0.0-beta.16", + "@algorandfoundation/algokit-utils": "7.0.0-beta.21", "@blockshake/defly-connect": "1.1.6", "@hookform/resolvers": "3.9.0", "@perawallet/connect": "1.3.5", diff --git a/ui/src/contracts/StakingPoolClient.ts b/ui/src/contracts/StakingPoolClient.ts index 46ea6adf..26b2c946 100644 --- a/ui/src/contracts/StakingPoolClient.ts +++ b/ui/src/contracts/StakingPoolClient.ts @@ -16,6 +16,7 @@ import { AppClientCompilationParams, ResolveAppClientByCreatorAndName, ResolveAppClientByNetwork, + CloneAppClientParams, } from '@algorandfoundation/algokit-utils/types/app-client' import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory' import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer' @@ -23,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":[{"teal":1,"source":37,"pc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296]},{"teal":9,"source":37,"pc":[297,298]},{"teal":10,"source":37,"pc":[299]},{"teal":11,"source":37,"pc":[300,301]},{"teal":18,"source":37,"pc":[302,303]},{"teal":19,"source":37,"pc":[304]},{"teal":20,"source":37,"pc":[305]},{"teal":21,"source":37,"pc":[306]},{"teal":22,"source":37,"pc":[307,308]},{"teal":23,"source":37,"pc":[309]},{"teal":24,"source":37,"pc":[310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335]},{"teal":28,"source":37,"errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[336]},{"teal":33,"source":101,"pc":[337,338,339]},{"teal":34,"source":101,"pc":[340]},{"teal":37,"source":101,"pc":[341,342,343]},{"teal":38,"source":101,"pc":[344]},{"teal":41,"source":101,"pc":[345,346,347]},{"teal":42,"source":101,"pc":[348]},{"teal":45,"source":101,"pc":[349,350,351]},{"teal":46,"source":101,"pc":[352]},{"teal":49,"source":101,"pc":[353,354,355]},{"teal":50,"source":101,"pc":[356]},{"teal":51,"source":101,"pc":[357]},{"teal":61,"source":101,"pc":[358,359,360]},{"teal":66,"source":102,"pc":[361,362]},{"teal":67,"source":102,"pc":[363]},{"teal":68,"source":102,"pc":[364]},{"teal":69,"source":102,"pc":[365,366,367]},{"teal":74,"source":104,"pc":[368,369]},{"teal":75,"source":104,"pc":[370]},{"teal":76,"source":104,"pc":[371]},{"teal":77,"source":104,"pc":[372]},{"teal":81,"source":105,"pc":[373,374]},{"teal":82,"source":105,"pc":[375]},{"teal":83,"source":105,"pc":[376]},{"teal":84,"source":105,"pc":[377]},{"teal":85,"source":102,"pc":[378,379,380]},{"teal":90,"source":107,"pc":[381,382]},{"teal":91,"source":107,"pc":[383]},{"teal":92,"source":107,"pc":[384]},{"teal":93,"source":107,"pc":[385]},{"teal":97,"source":108,"pc":[386,387]},{"teal":98,"source":108,"pc":[388]},{"teal":99,"source":108,"pc":[389]},{"teal":100,"source":108,"pc":[390]},{"teal":105,"source":110,"pc":[391,392]},{"teal":106,"source":110,"pc":[393,394]},{"teal":107,"source":110,"pc":[395]},{"teal":110,"source":110,"errorMessage":"staking pool must have minimum entry of 1 algo","pc":[396]},{"teal":114,"source":111,"pc":[397]},{"teal":115,"source":111,"pc":[398,399]},{"teal":116,"source":111,"pc":[400]},{"teal":120,"source":112,"pc":[401]},{"teal":121,"source":112,"pc":[402,403]},{"teal":122,"source":112,"pc":[404]},{"teal":126,"source":113,"pc":[405]},{"teal":127,"source":113,"pc":[406,407]},{"teal":128,"source":113,"pc":[408]},{"teal":132,"source":114,"pc":[409,410]},{"teal":133,"source":114,"pc":[411]},{"teal":134,"source":114,"pc":[412]},{"teal":138,"source":115,"pc":[413,414]},{"teal":139,"source":115,"pc":[415]},{"teal":140,"source":115,"pc":[416]},{"teal":144,"source":116,"pc":[417,418]},{"teal":145,"source":116,"pc":[419,420]},{"teal":146,"source":116,"pc":[421]},{"teal":150,"source":117,"pc":[422,423]},{"teal":151,"source":117,"pc":[424,425]},{"teal":152,"source":117,"pc":[426]},{"teal":156,"source":118,"pc":[427,428]},{"teal":157,"source":118,"pc":[429]},{"teal":158,"source":118,"pc":[430]},{"teal":162,"source":120,"pc":[431,432,433]},{"teal":166,"source":121,"pc":[434,435]},{"teal":167,"source":121,"pc":[436,437]},{"teal":168,"source":121,"pc":[438,439]},{"teal":169,"source":121,"pc":[440,441]},{"teal":170,"source":121,"pc":[442]},{"teal":171,"source":121,"pc":[443]},{"teal":172,"source":121,"pc":[444]},{"teal":173,"source":121,"pc":[445]},{"teal":177,"source":122,"pc":[446,447]},{"teal":178,"source":122,"pc":[448,449]},{"teal":179,"source":122,"pc":[450]},{"teal":183,"source":123,"pc":[451,452]},{"teal":184,"source":123,"pc":[453]},{"teal":185,"source":123,"pc":[454]},{"teal":189,"source":124,"pc":[455,456]},{"teal":190,"source":124,"pc":[457,458]},{"teal":191,"source":124,"pc":[459]},{"teal":192,"source":101,"pc":[460]},{"teal":197,"source":130,"pc":[461,462,463]},{"teal":198,"source":130,"pc":[464]},{"teal":199,"source":130,"pc":[465]},{"teal":205,"source":130,"pc":[466,467,468]},{"teal":206,"source":130,"pc":[469]},{"teal":210,"source":132,"pc":[470,471,472]},{"teal":214,"source":136,"pc":[473,474,475]},{"teal":215,"source":136,"pc":[476,477]},{"teal":216,"source":136,"pc":[478,479]},{"teal":217,"source":136,"pc":[480]},{"teal":218,"source":136,"pc":[481]},{"teal":219,"source":132,"pc":[482]},{"teal":224,"source":146,"pc":[483,484]},{"teal":225,"source":146,"pc":[485]},{"teal":226,"source":146,"pc":[486]},{"teal":227,"source":146,"pc":[487]},{"teal":228,"source":146,"pc":[488,489]},{"teal":229,"source":146,"pc":[490]},{"teal":230,"source":146,"pc":[491]},{"teal":233,"source":146,"errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[492]},{"teal":236,"source":146,"pc":[493,494,495]},{"teal":237,"source":146,"pc":[496]},{"teal":238,"source":146,"pc":[497]},{"teal":248,"source":146,"pc":[498,499,500]},{"teal":251,"source":146,"pc":[501,502]},{"teal":252,"source":146,"pc":[503,504]},{"teal":256,"source":147,"pc":[505]},{"teal":257,"source":147,"pc":[506]},{"teal":258,"source":147,"pc":[507]},{"teal":259,"source":147,"pc":[508]},{"teal":260,"source":147,"pc":[509]},{"teal":263,"source":147,"errorMessage":"staking pool already initialized","pc":[510]},{"teal":270,"source":150,"pc":[511]},{"teal":271,"source":150,"pc":[512]},{"teal":272,"source":150,"pc":[513,514]},{"teal":273,"source":150,"pc":[515,516]},{"teal":274,"source":150,"pc":[517,518]},{"teal":278,"source":151,"pc":[519]},{"teal":279,"source":151,"pc":[520]},{"teal":280,"source":151,"pc":[521,522]},{"teal":284,"source":152,"pc":[523]},{"teal":285,"source":152,"pc":[524]},{"teal":286,"source":152,"pc":[525]},{"teal":287,"source":152,"pc":[526,527]},{"teal":290,"source":150,"pc":[528]},{"teal":291,"source":150,"pc":[529,530]},{"teal":294,"source":150,"pc":[531]},{"teal":295,"source":150,"pc":[532,533]},{"teal":296,"source":150,"pc":[534]},{"teal":297,"source":150,"pc":[535]},{"teal":298,"source":150,"pc":[536,537]},{"teal":299,"source":150,"pc":[538,539,540]},{"teal":300,"source":150,"pc":[541,542]},{"teal":304,"source":154,"pc":[543,544]},{"teal":305,"source":154,"pc":[545,546,547]},{"teal":306,"source":154,"pc":[548]},{"teal":307,"source":154,"pc":[549]},{"teal":308,"source":154,"pc":[550]},{"teal":309,"source":154,"pc":[551,552]},{"teal":313,"source":155,"pc":[553,554]},{"teal":314,"source":155,"pc":[555]},{"teal":315,"source":155,"pc":[556,557,558]},{"teal":316,"source":155,"pc":[559]},{"teal":317,"source":155,"pc":[560]},{"teal":318,"source":155,"pc":[561]},{"teal":319,"source":155,"pc":[562]},{"teal":320,"source":155,"pc":[563]},{"teal":323,"source":155,"pc":[564,565,566]},{"teal":324,"source":155,"pc":[567,568]},{"teal":325,"source":155,"pc":[569,570,571]},{"teal":328,"source":155,"pc":[572]},{"teal":331,"source":155,"pc":[573,574]},{"teal":338,"source":157,"pc":[575,576]},{"teal":339,"source":158,"pc":[577,578]},{"teal":340,"source":157,"pc":[579]},{"teal":341,"source":159,"pc":[580,581,582]},{"teal":342,"source":159,"pc":[583,584,585]},{"teal":343,"source":158,"pc":[586]},{"teal":344,"source":156,"pc":[587,588]},{"teal":349,"source":162,"pc":[589,590]},{"teal":350,"source":162,"pc":[591,592]},{"teal":351,"source":162,"pc":[593,594]},{"teal":352,"source":162,"pc":[595]},{"teal":355,"source":162,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[596]},{"teal":358,"source":162,"pc":[597,598]},{"teal":359,"source":162,"pc":[599,600]},{"teal":360,"source":162,"pc":[601,602]},{"teal":361,"source":162,"pc":[603]},{"teal":364,"source":162,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[604]},{"teal":368,"source":163,"pc":[605]},{"teal":369,"source":163,"pc":[606,607,608]},{"teal":370,"source":163,"pc":[609]},{"teal":371,"source":163,"pc":[610]},{"teal":376,"source":165,"pc":[611,612]},{"teal":377,"source":165,"pc":[613]},{"teal":378,"source":165,"pc":[614,615,616]},{"teal":379,"source":165,"pc":[617]},{"teal":380,"source":165,"pc":[618]},{"teal":381,"source":165,"pc":[619]},{"teal":382,"source":165,"pc":[620]},{"teal":383,"source":165,"pc":[621]},{"teal":386,"source":165,"pc":[622,623,624]},{"teal":395,"source":167,"pc":[625]},{"teal":396,"source":167,"pc":[626,627]},{"teal":397,"source":167,"pc":[628,629]},{"teal":401,"source":168,"pc":[630,631]},{"teal":402,"source":168,"pc":[632,633,634]},{"teal":403,"source":168,"pc":[635]},{"teal":404,"source":168,"pc":[636,637]},{"teal":408,"source":169,"pc":[638,639]},{"teal":409,"source":169,"pc":[640,641]},{"teal":413,"source":170,"pc":[642]},{"teal":414,"source":170,"pc":[643,644]},{"teal":417,"source":167,"pc":[645]},{"teal":418,"source":167,"pc":[646,647]},{"teal":421,"source":167,"pc":[648]},{"teal":424,"source":146,"pc":[649]},{"teal":429,"source":185,"pc":[650,651]},{"teal":432,"source":185,"pc":[652,653,654]},{"teal":433,"source":185,"pc":[655]},{"teal":434,"source":185,"pc":[656]},{"teal":435,"source":185,"pc":[657,658]},{"teal":436,"source":185,"pc":[659]},{"teal":439,"source":185,"errorMessage":"argument 0 (staker) for addStake must be a address","pc":[660]},{"teal":442,"source":185,"pc":[661,662]},{"teal":443,"source":185,"pc":[663]},{"teal":444,"source":185,"pc":[664]},{"teal":445,"source":185,"pc":[665]},{"teal":446,"source":185,"pc":[666,667]},{"teal":447,"source":185,"pc":[668]},{"teal":448,"source":185,"pc":[669]},{"teal":451,"source":185,"errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[670]},{"teal":454,"source":185,"pc":[671,672,673]},{"teal":455,"source":185,"pc":[674]},{"teal":456,"source":185,"pc":[675]},{"teal":457,"source":185,"pc":[676]},{"teal":458,"source":185,"pc":[677]},{"teal":459,"source":185,"pc":[678]},{"teal":472,"source":185,"pc":[679,680,681]},{"teal":475,"source":185,"pc":[682,683]},{"teal":476,"source":185,"pc":[684,685]},{"teal":480,"source":186,"pc":[686]},{"teal":481,"source":186,"pc":[687]},{"teal":482,"source":186,"pc":[688]},{"teal":483,"source":186,"pc":[689]},{"teal":486,"source":186,"errorMessage":"staking pool must be initialized first","pc":[690]},{"teal":493,"source":190,"pc":[691,692]},{"teal":494,"source":190,"pc":[693]},{"teal":495,"source":190,"pc":[694]},{"teal":496,"source":190,"pc":[695,696]},{"teal":497,"source":190,"pc":[697]},{"teal":498,"source":190,"pc":[698]},{"teal":501,"source":189,"errorMessage":"stake can only be added via the validator contract","pc":[699]},{"teal":505,"source":193,"pc":[700,701]},{"teal":506,"source":193,"pc":[702,703]},{"teal":507,"source":193,"pc":[704]},{"teal":508,"source":193,"pc":[705]},{"teal":512,"source":196,"pc":[706,707,708]},{"teal":521,"source":200,"pc":[709,710]},{"teal":522,"source":201,"pc":[711,712]},{"teal":523,"source":201,"pc":[713]},{"teal":524,"source":201,"pc":[714]},{"teal":525,"source":201,"pc":[715,716]},{"teal":526,"source":201,"pc":[717]},{"teal":527,"source":201,"pc":[718]},{"teal":530,"source":201,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[719]},{"teal":533,"source":200,"pc":[720,721]},{"teal":534,"source":202,"pc":[722,723]},{"teal":535,"source":202,"pc":[724,725]},{"teal":536,"source":202,"pc":[726]},{"teal":539,"source":202,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[727]},{"teal":542,"source":200,"pc":[728,729]},{"teal":543,"source":203,"pc":[730,731]},{"teal":544,"source":203,"pc":[732,733]},{"teal":545,"source":203,"pc":[734,735]},{"teal":546,"source":203,"pc":[736]},{"teal":549,"source":203,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[737]},{"teal":553,"source":209,"pc":[738,739]},{"teal":554,"source":209,"pc":[740,741,742]},{"teal":555,"source":209,"pc":[743]},{"teal":556,"source":209,"pc":[744,745]},{"teal":560,"source":210,"pc":[746]},{"teal":561,"source":210,"pc":[747,748]},{"teal":565,"source":212,"pc":[749,750]},{"teal":566,"source":212,"pc":[751]},{"teal":567,"source":212,"pc":[752,753]},{"teal":568,"source":212,"pc":[754,755]},{"teal":569,"source":212,"pc":[756]},{"teal":570,"source":212,"pc":[757,758]},{"teal":571,"source":212,"pc":[759]},{"teal":572,"source":212,"pc":[760]},{"teal":576,"source":214,"pc":[761,762]},{"teal":577,"source":214,"pc":[763]},{"teal":578,"source":214,"pc":[764,765]},{"teal":579,"source":214,"pc":[766]},{"teal":580,"source":214,"pc":[767]},{"teal":581,"source":214,"pc":[768,769]},{"teal":582,"source":214,"pc":[770]},{"teal":583,"source":214,"pc":[771,772]},{"teal":588,"source":215,"pc":[773,774]},{"teal":589,"source":215,"pc":[775]},{"teal":590,"source":216,"pc":[776]},{"teal":591,"source":216,"pc":[777,778]},{"teal":592,"source":216,"pc":[779,780]},{"teal":593,"source":216,"pc":[781]},{"teal":594,"source":216,"pc":[782,783]},{"teal":595,"source":216,"pc":[784]},{"teal":596,"source":216,"pc":[785]},{"teal":597,"source":216,"pc":[786]},{"teal":598,"source":216,"pc":[787]},{"teal":599,"source":216,"pc":[788]},{"teal":600,"source":216,"pc":[789,790]},{"teal":601,"source":216,"pc":[791]},{"teal":604,"source":216,"errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[792]},{"teal":605,"source":216,"pc":[793,794]},{"teal":606,"source":216,"pc":[795]},{"teal":607,"source":216,"pc":[796]},{"teal":608,"source":216,"pc":[797]},{"teal":609,"source":216,"pc":[798]},{"teal":610,"source":216,"pc":[799,800]},{"teal":611,"source":216,"pc":[801]},{"teal":612,"source":216,"pc":[802]},{"teal":613,"source":216,"pc":[803]},{"teal":614,"source":215,"pc":[804]},{"teal":618,"source":219,"pc":[805]},{"teal":619,"source":219,"pc":[806,807]},{"teal":624,"source":219,"pc":[808,809]},{"teal":625,"source":219,"pc":[810,811]},{"teal":626,"source":219,"pc":[812]},{"teal":627,"source":219,"pc":[813,814,815]},{"teal":632,"source":220,"pc":[816,817]},{"teal":633,"source":220,"pc":[818,819]},{"teal":634,"source":220,"pc":[820]},{"teal":635,"source":220,"pc":[821,822,823]},{"teal":640,"source":221,"pc":[824]},{"teal":641,"source":221,"pc":[825]},{"teal":642,"source":221,"pc":[826,827]},{"teal":643,"source":221,"pc":[828]},{"teal":644,"source":221,"pc":[829,830]},{"teal":645,"source":221,"pc":[831,832]},{"teal":646,"source":221,"pc":[833]},{"teal":647,"source":221,"pc":[834,835]},{"teal":648,"source":221,"pc":[836,837]},{"teal":649,"source":221,"pc":[838,839]},{"teal":650,"source":221,"pc":[840,841]},{"teal":651,"source":221,"pc":[842]},{"teal":656,"source":223,"pc":[843,844]},{"teal":657,"source":223,"pc":[845]},{"teal":658,"source":223,"pc":[846]},{"teal":659,"source":223,"pc":[847]},{"teal":660,"source":223,"pc":[848]},{"teal":661,"source":223,"pc":[849,850]},{"teal":662,"source":223,"pc":[851]},{"teal":663,"source":223,"pc":[852,853]},{"teal":668,"source":224,"pc":[854,855]},{"teal":669,"source":224,"pc":[856,857,858]},{"teal":670,"source":224,"pc":[859,860]},{"teal":671,"source":224,"pc":[861]},{"teal":672,"source":224,"pc":[862,863,864]},{"teal":677,"source":226,"pc":[865,866]},{"teal":678,"source":226,"pc":[867,868]},{"teal":679,"source":226,"pc":[869,870]},{"teal":680,"source":226,"pc":[871,872,873]},{"teal":681,"source":226,"pc":[874]},{"teal":682,"source":226,"pc":[875,876]},{"teal":683,"source":226,"pc":[877,878]},{"teal":684,"source":226,"pc":[879]},{"teal":685,"source":226,"pc":[880]},{"teal":686,"source":226,"pc":[881]},{"teal":687,"source":226,"pc":[882,883]},{"teal":691,"source":227,"pc":[884,885]},{"teal":692,"source":227,"pc":[886,887]},{"teal":693,"source":227,"pc":[888,889]},{"teal":694,"source":227,"pc":[890]},{"teal":695,"source":227,"pc":[891]},{"teal":696,"source":227,"pc":[892,893]},{"teal":700,"source":230,"pc":[894,895]},{"teal":701,"source":230,"pc":[896]},{"teal":702,"source":230,"pc":[897]},{"teal":703,"source":230,"pc":[898,899]},{"teal":704,"source":230,"pc":[900]},{"teal":705,"source":230,"pc":[901,902]},{"teal":706,"source":230,"pc":[903]},{"teal":710,"source":232,"pc":[904,905]},{"teal":711,"source":232,"pc":[906,907,908]},{"teal":717,"source":234,"pc":[909,910]},{"teal":718,"source":234,"pc":[911]},{"teal":719,"source":234,"pc":[912]},{"teal":720,"source":234,"pc":[913]},{"teal":721,"source":234,"pc":[914,915,916]},{"teal":722,"source":234,"pc":[917,918]},{"teal":723,"source":234,"pc":[919,920,921]},{"teal":724,"source":234,"pc":[922,923]},{"teal":725,"source":234,"pc":[924]},{"teal":726,"source":234,"pc":[925]},{"teal":729,"source":234,"pc":[926,927,928]},{"teal":734,"source":235,"pc":[929,930]},{"teal":735,"source":235,"pc":[931]},{"teal":736,"source":235,"pc":[932]},{"teal":737,"source":235,"pc":[933,934]},{"teal":744,"source":219,"pc":[935,936]},{"teal":745,"source":219,"pc":[937]},{"teal":746,"source":219,"pc":[938]},{"teal":747,"source":219,"pc":[939,940]},{"teal":748,"source":219,"pc":[941,942,943]},{"teal":754,"source":239,"pc":[944,945]},{"teal":755,"source":239,"pc":[946]},{"teal":756,"source":239,"pc":[947]},{"teal":757,"source":239,"pc":[948,949,950]},{"teal":761,"source":241,"errorMessage":"Staking pool full","pc":[951]},{"teal":766,"source":246,"pc":[952,953]},{"teal":767,"source":246,"pc":[954,955]},{"teal":768,"source":246,"pc":[956,957]},{"teal":769,"source":246,"pc":[958]},{"teal":770,"source":246,"pc":[959]},{"teal":773,"source":246,"errorMessage":"must stake at least the minimum for this pool","pc":[960]},{"teal":777,"source":248,"pc":[961,962]},{"teal":778,"source":248,"pc":[963]},{"teal":779,"source":248,"pc":[964]},{"teal":780,"source":248,"pc":[965]},{"teal":781,"source":248,"pc":[966]},{"teal":782,"source":248,"pc":[967]},{"teal":783,"source":248,"pc":[968]},{"teal":784,"source":248,"pc":[969,970]},{"teal":785,"source":248,"pc":[971]},{"teal":786,"source":248,"pc":[972,973]},{"teal":787,"source":248,"pc":[974]},{"teal":788,"source":248,"pc":[975,976]},{"teal":789,"source":248,"pc":[977]},{"teal":790,"source":248,"pc":[978]},{"teal":800,"source":249,"pc":[979,980]},{"teal":801,"source":249,"pc":[981]},{"teal":802,"source":249,"pc":[982]},{"teal":803,"source":249,"pc":[983]},{"teal":804,"source":249,"pc":[984]},{"teal":805,"source":250,"pc":[985,986]},{"teal":806,"source":251,"pc":[987,988]},{"teal":807,"source":251,"pc":[989,990]},{"teal":808,"source":251,"pc":[991]},{"teal":809,"source":251,"pc":[992]},{"teal":810,"source":252,"pc":[993,994]},{"teal":811,"source":252,"pc":[995]},{"teal":812,"source":253,"pc":[996,997]},{"teal":813,"source":253,"pc":[998]},{"teal":814,"source":254,"pc":[999,1000]},{"teal":815,"source":254,"pc":[1001]},{"teal":816,"source":254,"pc":[1002]},{"teal":817,"source":249,"pc":[1003]},{"teal":818,"source":249,"pc":[1004,1005]},{"teal":819,"source":249,"pc":[1006]},{"teal":823,"source":256,"pc":[1007,1008]},{"teal":824,"source":256,"pc":[1009]},{"teal":825,"source":256,"pc":[1010]},{"teal":826,"source":256,"pc":[1011]},{"teal":827,"source":256,"pc":[1012,1013]},{"teal":828,"source":256,"pc":[1014]},{"teal":829,"source":256,"pc":[1015]},{"teal":833,"source":257,"pc":[1016,1017]},{"teal":837,"source":185,"pc":[1018,1019]},{"teal":840,"source":185,"pc":[1020,1021]},{"teal":841,"source":185,"pc":[1022]},{"teal":846,"source":271,"pc":[1023,1024,1025]},{"teal":847,"source":271,"pc":[1026]},{"teal":850,"source":271,"pc":[1027,1028,1029]},{"teal":851,"source":271,"pc":[1030]},{"teal":852,"source":271,"pc":[1031]},{"teal":853,"source":271,"pc":[1032,1033]},{"teal":854,"source":271,"pc":[1034]},{"teal":857,"source":271,"errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[1035]},{"teal":860,"source":271,"pc":[1036,1037,1038]},{"teal":861,"source":271,"pc":[1039]},{"teal":862,"source":271,"pc":[1040]},{"teal":876,"source":271,"pc":[1041,1042,1043]},{"teal":879,"source":271,"pc":[1044,1045]},{"teal":880,"source":271,"pc":[1046,1047]},{"teal":885,"source":274,"pc":[1048,1049]},{"teal":886,"source":274,"pc":[1050,1051]},{"teal":887,"source":274,"pc":[1052]},{"teal":888,"source":274,"pc":[1053,1054,1055]},{"teal":896,"source":276,"pc":[1056,1057,1058]},{"teal":899,"source":275,"errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[1059]},{"teal":904,"source":281,"pc":[1060,1061,1062]},{"teal":908,"source":283,"pc":[1063]},{"teal":909,"source":283,"pc":[1064,1065]},{"teal":914,"source":283,"pc":[1066,1067]},{"teal":915,"source":283,"pc":[1068,1069]},{"teal":916,"source":283,"pc":[1070]},{"teal":917,"source":283,"pc":[1071,1072,1073]},{"teal":922,"source":284,"pc":[1074,1075]},{"teal":923,"source":284,"pc":[1076,1077]},{"teal":924,"source":284,"pc":[1078]},{"teal":925,"source":284,"pc":[1079,1080,1081]},{"teal":930,"source":285,"pc":[1082]},{"teal":931,"source":285,"pc":[1083]},{"teal":932,"source":285,"pc":[1084,1085]},{"teal":933,"source":285,"pc":[1086]},{"teal":934,"source":285,"pc":[1087,1088]},{"teal":935,"source":285,"pc":[1089,1090]},{"teal":936,"source":285,"pc":[1091]},{"teal":937,"source":285,"pc":[1092,1093]},{"teal":938,"source":285,"pc":[1094,1095]},{"teal":939,"source":285,"pc":[1096,1097]},{"teal":940,"source":285,"pc":[1098,1099]},{"teal":941,"source":285,"pc":[1100]},{"teal":946,"source":287,"pc":[1101,1102]},{"teal":947,"source":287,"pc":[1103]},{"teal":948,"source":287,"pc":[1104]},{"teal":949,"source":287,"pc":[1105]},{"teal":950,"source":287,"pc":[1106]},{"teal":951,"source":287,"pc":[1107,1108]},{"teal":952,"source":287,"pc":[1109]},{"teal":953,"source":287,"pc":[1110,1111]},{"teal":958,"source":288,"pc":[1112,1113]},{"teal":959,"source":288,"pc":[1114,1115,1116]},{"teal":960,"source":288,"pc":[1117,1118]},{"teal":961,"source":288,"pc":[1119]},{"teal":962,"source":288,"pc":[1120,1121,1122]},{"teal":968,"source":289,"pc":[1123,1124]},{"teal":969,"source":289,"pc":[1125]},{"teal":970,"source":289,"pc":[1126]},{"teal":971,"source":289,"pc":[1127,1128,1129]},{"teal":976,"source":291,"pc":[1130,1131]},{"teal":977,"source":291,"pc":[1132,1133,1134]},{"teal":978,"source":291,"pc":[1135]},{"teal":979,"source":291,"pc":[1136,1137]},{"teal":985,"source":293,"pc":[1138,1139]},{"teal":986,"source":293,"pc":[1140,1141,1142]},{"teal":987,"source":293,"pc":[1143]},{"teal":988,"source":293,"pc":[1144,1145]},{"teal":989,"source":293,"pc":[1146]},{"teal":990,"source":293,"pc":[1147,1148,1149]},{"teal":994,"source":294,"errorMessage":"Insufficient balance","pc":[1150]},{"teal":999,"source":296,"pc":[1151,1152]},{"teal":1000,"source":296,"pc":[1153,1154]},{"teal":1001,"source":296,"pc":[1155,1156]},{"teal":1002,"source":296,"pc":[1157,1158,1159]},{"teal":1003,"source":296,"pc":[1160]},{"teal":1004,"source":296,"pc":[1161,1162]},{"teal":1005,"source":296,"pc":[1163]},{"teal":1006,"source":296,"pc":[1164]},{"teal":1007,"source":296,"pc":[1165]},{"teal":1008,"source":296,"pc":[1166,1167]},{"teal":1012,"source":297,"pc":[1168,1169]},{"teal":1013,"source":297,"pc":[1170]},{"teal":1014,"source":297,"pc":[1171,1172]},{"teal":1015,"source":297,"pc":[1173]},{"teal":1016,"source":297,"pc":[1174,1175]},{"teal":1017,"source":297,"pc":[1176]},{"teal":1018,"source":297,"pc":[1177]},{"teal":1022,"source":299,"pc":[1178]},{"teal":1023,"source":299,"pc":[1179,1180]},{"teal":1028,"source":300,"pc":[1181,1182]},{"teal":1029,"source":300,"pc":[1183,1184,1185]},{"teal":1030,"source":300,"pc":[1186]},{"teal":1031,"source":300,"pc":[1187]},{"teal":1032,"source":300,"pc":[1188]},{"teal":1033,"source":300,"pc":[1189,1190,1191]},{"teal":1039,"source":302,"pc":[1192]},{"teal":1040,"source":302,"pc":[1193]},{"teal":1041,"source":302,"pc":[1194]},{"teal":1042,"source":302,"pc":[1195]},{"teal":1043,"source":302,"pc":[1196,1197,1198]},{"teal":1051,"source":303,"pc":[1199]},{"teal":1052,"source":303,"pc":[1200]},{"teal":1053,"source":303,"pc":[1201,1202]},{"teal":1054,"source":303,"pc":[1203,1204]},{"teal":1055,"source":303,"pc":[1205,1206]},{"teal":1059,"source":304,"pc":[1207]},{"teal":1060,"source":304,"pc":[1208]},{"teal":1061,"source":304,"pc":[1209,1210]},{"teal":1065,"source":305,"pc":[1211]},{"teal":1066,"source":305,"pc":[1212]},{"teal":1067,"source":305,"pc":[1213]},{"teal":1068,"source":305,"pc":[1214,1215]},{"teal":1071,"source":303,"pc":[1216]},{"teal":1072,"source":303,"pc":[1217,1218]},{"teal":1075,"source":303,"pc":[1219]},{"teal":1076,"source":303,"pc":[1220,1221]},{"teal":1077,"source":303,"pc":[1222]},{"teal":1078,"source":303,"pc":[1223]},{"teal":1079,"source":303,"pc":[1224,1225]},{"teal":1080,"source":303,"pc":[1226,1227,1228]},{"teal":1081,"source":303,"pc":[1229,1230]},{"teal":1089,"source":311,"pc":[1231]},{"teal":1090,"source":311,"pc":[1232,1233]},{"teal":1091,"source":311,"pc":[1234,1235]},{"teal":1095,"source":312,"pc":[1236,1237]},{"teal":1096,"source":312,"pc":[1238,1239,1240]},{"teal":1097,"source":312,"pc":[1241]},{"teal":1098,"source":312,"pc":[1242,1243]},{"teal":1102,"source":313,"pc":[1244,1245]},{"teal":1103,"source":313,"pc":[1246,1247]},{"teal":1107,"source":314,"pc":[1248,1249]},{"teal":1108,"source":314,"pc":[1250,1251,1252]},{"teal":1109,"source":314,"pc":[1253]},{"teal":1110,"source":314,"pc":[1254,1255]},{"teal":1113,"source":311,"pc":[1256]},{"teal":1114,"source":311,"pc":[1257,1258]},{"teal":1117,"source":311,"pc":[1259]},{"teal":1121,"source":316,"pc":[1260,1261]},{"teal":1122,"source":316,"pc":[1262,1263,1264]},{"teal":1123,"source":316,"pc":[1265]},{"teal":1124,"source":316,"pc":[1266,1267]},{"teal":1128,"source":317,"pc":[1268,1269]},{"teal":1129,"source":317,"pc":[1270,1271]},{"teal":1130,"source":317,"pc":[1272,1273]},{"teal":1131,"source":317,"pc":[1274,1275]},{"teal":1132,"source":302,"pc":[1276,1277,1278]},{"teal":1137,"source":322,"pc":[1279,1280]},{"teal":1138,"source":322,"pc":[1281,1282,1283]},{"teal":1139,"source":322,"pc":[1284]},{"teal":1140,"source":322,"pc":[1285,1286]},{"teal":1144,"source":323,"pc":[1287,1288]},{"teal":1145,"source":323,"pc":[1289,1290]},{"teal":1146,"source":323,"pc":[1291,1292]},{"teal":1147,"source":323,"pc":[1293,1294]},{"teal":1157,"source":329,"pc":[1295,1296]},{"teal":1158,"source":329,"pc":[1297,1298,1299]},{"teal":1159,"source":329,"pc":[1300]},{"teal":1160,"source":329,"pc":[1301]},{"teal":1161,"source":329,"pc":[1302]},{"teal":1162,"source":329,"pc":[1303]},{"teal":1163,"source":329,"pc":[1304,1305,1306]},{"teal":1164,"source":329,"pc":[1307,1308]},{"teal":1165,"source":329,"pc":[1309,1310,1311]},{"teal":1166,"source":329,"pc":[1312]},{"teal":1167,"source":329,"pc":[1313,1314]},{"teal":1168,"source":329,"pc":[1315]},{"teal":1169,"source":329,"pc":[1316]},{"teal":1170,"source":329,"pc":[1317]},{"teal":1174,"source":328,"errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1318]},{"teal":1182,"source":336,"pc":[1319]},{"teal":1183,"source":336,"pc":[1320]},{"teal":1184,"source":336,"pc":[1321,1322]},{"teal":1188,"source":337,"pc":[1323,1324]},{"teal":1189,"source":337,"pc":[1325,1326]},{"teal":1193,"source":338,"pc":[1327,1328]},{"teal":1194,"source":338,"pc":[1329,1330]},{"teal":1198,"source":339,"pc":[1331,1332,1333,1334,1335,1336,1337,1338,1339,1340]},{"teal":1199,"source":339,"pc":[1341,1342]},{"teal":1202,"source":336,"pc":[1343]},{"teal":1203,"source":336,"pc":[1344,1345]},{"teal":1206,"source":336,"pc":[1346]},{"teal":1210,"source":341,"pc":[1347]},{"teal":1211,"source":341,"pc":[1348,1349]},{"teal":1216,"source":342,"pc":[1350,1351]},{"teal":1217,"source":342,"pc":[1352,1353,1354]},{"teal":1218,"source":342,"pc":[1355]},{"teal":1219,"source":342,"pc":[1356]},{"teal":1220,"source":342,"pc":[1357]},{"teal":1221,"source":342,"pc":[1358,1359,1360]},{"teal":1226,"source":344,"pc":[1361,1362]},{"teal":1227,"source":344,"pc":[1363]},{"teal":1228,"source":344,"pc":[1364]},{"teal":1229,"source":344,"pc":[1365]},{"teal":1230,"source":344,"pc":[1366,1367]},{"teal":1231,"source":344,"pc":[1368]},{"teal":1232,"source":344,"pc":[1369]},{"teal":1236,"source":345,"pc":[1370,1371]},{"teal":1237,"source":345,"pc":[1372]},{"teal":1238,"source":345,"pc":[1373,1374]},{"teal":1239,"source":345,"pc":[1375]},{"teal":1240,"source":345,"pc":[1376,1377]},{"teal":1244,"source":346,"pc":[1378,1379]},{"teal":1245,"source":346,"pc":[1380,1381]},{"teal":1246,"source":346,"pc":[1382,1383]},{"teal":1247,"source":346,"pc":[1384,1385]},{"teal":1251,"source":347,"pc":[1386,1387]},{"teal":1252,"source":347,"pc":[1388,1389]},{"teal":1253,"source":347,"pc":[1390,1391]},{"teal":1254,"source":347,"pc":[1392,1393]},{"teal":1258,"source":348,"pc":[1394]},{"teal":1259,"source":348,"pc":[1395,1396]},{"teal":1264,"source":351,"pc":[1397,1398]},{"teal":1265,"source":351,"pc":[1399]},{"teal":1266,"source":351,"pc":[1400]},{"teal":1267,"source":351,"pc":[1401,1402]},{"teal":1268,"source":351,"pc":[1403]},{"teal":1269,"source":351,"pc":[1404,1405]},{"teal":1270,"source":351,"pc":[1406]},{"teal":1274,"source":353,"pc":[1407,1408]},{"teal":1275,"source":353,"pc":[1409]},{"teal":1276,"source":353,"pc":[1410,1411]},{"teal":1277,"source":353,"pc":[1412]},{"teal":1278,"source":353,"pc":[1413]},{"teal":1279,"source":353,"pc":[1414,1415]},{"teal":1280,"source":353,"pc":[1416]},{"teal":1281,"source":353,"pc":[1417,1418]},{"teal":1285,"source":354,"pc":[1419,1420]},{"teal":1286,"source":354,"pc":[1421]},{"teal":1287,"source":354,"pc":[1422,1423]},{"teal":1288,"source":354,"pc":[1424]},{"teal":1289,"source":354,"pc":[1425]},{"teal":1290,"source":354,"pc":[1426]},{"teal":1291,"source":354,"pc":[1427]},{"teal":1292,"source":354,"pc":[1428,1429]},{"teal":1293,"source":354,"pc":[1430]},{"teal":1296,"source":354,"errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1431]},{"teal":1297,"source":354,"pc":[1432,1433]},{"teal":1298,"source":354,"pc":[1434]},{"teal":1299,"source":354,"pc":[1435]},{"teal":1300,"source":354,"pc":[1436]},{"teal":1301,"source":354,"pc":[1437]},{"teal":1302,"source":354,"pc":[1438,1439]},{"teal":1303,"source":354,"pc":[1440]},{"teal":1304,"source":354,"pc":[1441]},{"teal":1305,"source":354,"pc":[1442]},{"teal":1306,"source":354,"pc":[1443,1444]},{"teal":1310,"source":355,"pc":[1445,1446]},{"teal":1311,"source":355,"pc":[1447]},{"teal":1312,"source":355,"pc":[1448]},{"teal":1313,"source":355,"pc":[1449,1450]},{"teal":1314,"source":355,"pc":[1451]},{"teal":1315,"source":355,"pc":[1452]},{"teal":1316,"source":355,"pc":[1453]},{"teal":1317,"source":355,"pc":[1454,1455]},{"teal":1318,"source":355,"pc":[1456]},{"teal":1321,"source":355,"errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1457]},{"teal":1322,"source":355,"pc":[1458,1459]},{"teal":1323,"source":355,"pc":[1460]},{"teal":1324,"source":355,"pc":[1461]},{"teal":1325,"source":355,"pc":[1462]},{"teal":1326,"source":355,"pc":[1463]},{"teal":1327,"source":355,"pc":[1464,1465]},{"teal":1328,"source":355,"pc":[1466]},{"teal":1329,"source":355,"pc":[1467]},{"teal":1330,"source":355,"pc":[1468]},{"teal":1331,"source":355,"pc":[1469]},{"teal":1344,"source":360,"pc":[1470]},{"teal":1345,"source":360,"pc":[1471]},{"teal":1346,"source":360,"pc":[1472,1473]},{"teal":1347,"source":360,"pc":[1474,1475]},{"teal":1348,"source":360,"pc":[1476,1477]},{"teal":1352,"source":361,"pc":[1478]},{"teal":1353,"source":361,"pc":[1479]},{"teal":1354,"source":361,"pc":[1480,1481]},{"teal":1364,"source":363,"pc":[1482]},{"teal":1365,"source":363,"pc":[1483]},{"teal":1366,"source":363,"pc":[1484]},{"teal":1367,"source":363,"pc":[1485]},{"teal":1368,"source":363,"pc":[1486]},{"teal":1369,"source":363,"pc":[1487]},{"teal":1370,"source":363,"pc":[1488]},{"teal":1371,"source":363,"pc":[1489,1490,1491]},{"teal":1372,"source":363,"pc":[1492]},{"teal":1373,"source":363,"pc":[1493]},{"teal":1374,"source":363,"pc":[1494,1495]},{"teal":1375,"source":364,"pc":[1496,1497]},{"teal":1376,"source":364,"pc":[1498,1499]},{"teal":1377,"source":365,"pc":[1500,1501]},{"teal":1378,"source":365,"pc":[1502]},{"teal":1379,"source":365,"pc":[1503,1504]},{"teal":1380,"source":366,"pc":[1505,1506]},{"teal":1381,"source":366,"pc":[1507]},{"teal":1382,"source":366,"pc":[1508,1509]},{"teal":1383,"source":367,"pc":[1510,1511]},{"teal":1384,"source":367,"pc":[1512,1513]},{"teal":1385,"source":367,"pc":[1514]},{"teal":1386,"source":367,"pc":[1515,1516]},{"teal":1387,"source":367,"pc":[1517]},{"teal":1388,"source":367,"pc":[1518,1519]},{"teal":1391,"source":360,"pc":[1520]},{"teal":1392,"source":360,"pc":[1521,1522]},{"teal":1395,"source":360,"pc":[1523]},{"teal":1399,"source":370,"pc":[1524]},{"teal":1406,"source":283,"pc":[1525,1526]},{"teal":1407,"source":283,"pc":[1527]},{"teal":1408,"source":283,"pc":[1528]},{"teal":1409,"source":283,"pc":[1529,1530]},{"teal":1410,"source":283,"pc":[1531,1532,1533]},{"teal":1414,"source":373,"errorMessage":"account not found","pc":[1534]},{"teal":1415,"source":271,"pc":[1535]},{"teal":1420,"source":381,"pc":[1536,1537,1538]},{"teal":1421,"source":381,"pc":[1539]},{"teal":1422,"source":381,"pc":[1540]},{"teal":1430,"source":381,"pc":[1541,1542,1543]},{"teal":1433,"source":381,"pc":[1544,1545]},{"teal":1434,"source":381,"pc":[1546,1547]},{"teal":1438,"source":385,"pc":[1548,1549]},{"teal":1439,"source":385,"pc":[1550,1551]},{"teal":1443,"source":387,"pc":[1552]},{"teal":1444,"source":387,"pc":[1553,1554]},{"teal":1449,"source":387,"pc":[1555,1556]},{"teal":1450,"source":387,"pc":[1557,1558]},{"teal":1451,"source":387,"pc":[1559]},{"teal":1452,"source":387,"pc":[1560,1561,1562]},{"teal":1457,"source":388,"pc":[1563,1564]},{"teal":1458,"source":388,"pc":[1565,1566]},{"teal":1459,"source":388,"pc":[1567]},{"teal":1460,"source":388,"pc":[1568,1569,1570]},{"teal":1465,"source":389,"pc":[1571]},{"teal":1466,"source":389,"pc":[1572]},{"teal":1467,"source":389,"pc":[1573,1574]},{"teal":1468,"source":389,"pc":[1575]},{"teal":1469,"source":389,"pc":[1576,1577]},{"teal":1470,"source":389,"pc":[1578,1579]},{"teal":1471,"source":389,"pc":[1580]},{"teal":1472,"source":389,"pc":[1581,1582]},{"teal":1473,"source":389,"pc":[1583,1584]},{"teal":1474,"source":389,"pc":[1585,1586]},{"teal":1475,"source":389,"pc":[1587,1588]},{"teal":1476,"source":389,"pc":[1589]},{"teal":1481,"source":391,"pc":[1590,1591]},{"teal":1482,"source":391,"pc":[1592]},{"teal":1483,"source":391,"pc":[1593]},{"teal":1484,"source":391,"pc":[1594]},{"teal":1485,"source":391,"pc":[1595]},{"teal":1486,"source":391,"pc":[1596,1597]},{"teal":1487,"source":391,"pc":[1598]},{"teal":1488,"source":391,"pc":[1599,1600]},{"teal":1493,"source":392,"pc":[1601,1602]},{"teal":1494,"source":392,"pc":[1603,1604,1605]},{"teal":1495,"source":392,"pc":[1606,1607]},{"teal":1496,"source":392,"pc":[1608]},{"teal":1497,"source":392,"pc":[1609,1610,1611]},{"teal":1503,"source":393,"pc":[1612,1613]},{"teal":1504,"source":393,"pc":[1614,1615,1616]},{"teal":1505,"source":393,"pc":[1617]},{"teal":1506,"source":393,"pc":[1618]},{"teal":1507,"source":393,"pc":[1619]},{"teal":1508,"source":393,"pc":[1620,1621,1622]},{"teal":1513,"source":394,"pc":[1623]},{"teal":1518,"source":396,"pc":[1624]},{"teal":1519,"source":396,"pc":[1625,1626]},{"teal":1524,"source":398,"pc":[1627]},{"teal":1525,"source":398,"pc":[1628]},{"teal":1526,"source":398,"pc":[1629]},{"teal":1527,"source":398,"pc":[1630]},{"teal":1528,"source":398,"pc":[1631,1632,1633]},{"teal":1536,"source":399,"pc":[1634]},{"teal":1537,"source":399,"pc":[1635]},{"teal":1538,"source":399,"pc":[1636,1637]},{"teal":1539,"source":399,"pc":[1638,1639]},{"teal":1540,"source":399,"pc":[1640,1641]},{"teal":1544,"source":400,"pc":[1642]},{"teal":1545,"source":400,"pc":[1643]},{"teal":1546,"source":400,"pc":[1644,1645]},{"teal":1550,"source":401,"pc":[1646]},{"teal":1551,"source":401,"pc":[1647]},{"teal":1552,"source":401,"pc":[1648]},{"teal":1553,"source":401,"pc":[1649,1650]},{"teal":1556,"source":399,"pc":[1651]},{"teal":1557,"source":399,"pc":[1652,1653]},{"teal":1560,"source":399,"pc":[1654]},{"teal":1561,"source":399,"pc":[1655,1656]},{"teal":1562,"source":399,"pc":[1657]},{"teal":1563,"source":399,"pc":[1658]},{"teal":1564,"source":399,"pc":[1659,1660]},{"teal":1565,"source":399,"pc":[1661,1662,1663]},{"teal":1566,"source":399,"pc":[1664,1665]},{"teal":1574,"source":406,"pc":[1666]},{"teal":1575,"source":406,"pc":[1667,1668]},{"teal":1576,"source":406,"pc":[1669,1670]},{"teal":1580,"source":407,"pc":[1671,1672]},{"teal":1581,"source":407,"pc":[1673,1674,1675]},{"teal":1582,"source":407,"pc":[1676]},{"teal":1583,"source":407,"pc":[1677,1678]},{"teal":1587,"source":408,"pc":[1679,1680]},{"teal":1588,"source":408,"pc":[1681,1682]},{"teal":1592,"source":409,"pc":[1683,1684]},{"teal":1593,"source":409,"pc":[1685,1686,1687]},{"teal":1594,"source":409,"pc":[1688]},{"teal":1595,"source":409,"pc":[1689,1690]},{"teal":1598,"source":406,"pc":[1691]},{"teal":1599,"source":406,"pc":[1692,1693]},{"teal":1602,"source":406,"pc":[1694]},{"teal":1606,"source":411,"pc":[1695,1696]},{"teal":1607,"source":411,"pc":[1697,1698,1699]},{"teal":1608,"source":411,"pc":[1700]},{"teal":1609,"source":411,"pc":[1701,1702]},{"teal":1613,"source":412,"pc":[1703,1704]},{"teal":1614,"source":412,"pc":[1705,1706]},{"teal":1615,"source":412,"pc":[1707,1708]},{"teal":1616,"source":412,"pc":[1709,1710]},{"teal":1617,"source":398,"pc":[1711,1712,1713]},{"teal":1622,"source":417,"pc":[1714,1715]},{"teal":1623,"source":417,"pc":[1716,1717,1718]},{"teal":1624,"source":417,"pc":[1719]},{"teal":1625,"source":417,"pc":[1720,1721]},{"teal":1629,"source":418,"pc":[1722,1723]},{"teal":1630,"source":418,"pc":[1724,1725]},{"teal":1631,"source":418,"pc":[1726,1727]},{"teal":1632,"source":418,"pc":[1728,1729]},{"teal":1637,"source":422,"pc":[1730,1731]},{"teal":1638,"source":422,"pc":[1732]},{"teal":1639,"source":422,"pc":[1733]},{"teal":1640,"source":422,"pc":[1734,1735]},{"teal":1641,"source":422,"pc":[1736]},{"teal":1642,"source":422,"pc":[1737,1738]},{"teal":1643,"source":422,"pc":[1739]},{"teal":1656,"source":427,"pc":[1740]},{"teal":1657,"source":427,"pc":[1741]},{"teal":1658,"source":427,"pc":[1742,1743]},{"teal":1659,"source":427,"pc":[1744,1745]},{"teal":1660,"source":427,"pc":[1746,1747]},{"teal":1664,"source":428,"pc":[1748]},{"teal":1665,"source":428,"pc":[1749]},{"teal":1666,"source":428,"pc":[1750,1751]},{"teal":1676,"source":430,"pc":[1752]},{"teal":1677,"source":430,"pc":[1753]},{"teal":1678,"source":430,"pc":[1754]},{"teal":1679,"source":430,"pc":[1755]},{"teal":1680,"source":430,"pc":[1756]},{"teal":1681,"source":430,"pc":[1757]},{"teal":1682,"source":430,"pc":[1758]},{"teal":1683,"source":430,"pc":[1759,1760,1761]},{"teal":1684,"source":430,"pc":[1762]},{"teal":1685,"source":430,"pc":[1763]},{"teal":1686,"source":430,"pc":[1764,1765]},{"teal":1687,"source":431,"pc":[1766,1767]},{"teal":1688,"source":431,"pc":[1768,1769]},{"teal":1689,"source":432,"pc":[1770,1771]},{"teal":1690,"source":432,"pc":[1772,1773]},{"teal":1691,"source":433,"pc":[1774,1775]},{"teal":1692,"source":433,"pc":[1776]},{"teal":1693,"source":433,"pc":[1777,1778]},{"teal":1694,"source":434,"pc":[1779]},{"teal":1695,"source":434,"pc":[1780,1781]},{"teal":1696,"source":434,"pc":[1782]},{"teal":1697,"source":434,"pc":[1783,1784]},{"teal":1698,"source":434,"pc":[1785]},{"teal":1699,"source":434,"pc":[1786,1787]},{"teal":1702,"source":427,"pc":[1788]},{"teal":1703,"source":427,"pc":[1789,1790]},{"teal":1706,"source":427,"pc":[1791]},{"teal":1710,"source":437,"pc":[1792]},{"teal":1717,"source":387,"pc":[1793,1794]},{"teal":1718,"source":387,"pc":[1795]},{"teal":1719,"source":387,"pc":[1796]},{"teal":1720,"source":387,"pc":[1797,1798]},{"teal":1721,"source":387,"pc":[1799,1800,1801]},{"teal":1725,"source":440,"errorMessage":"account not found","pc":[1802]},{"teal":1726,"source":381,"pc":[1803]},{"teal":1731,"source":450,"pc":[1804,1805]},{"teal":1734,"source":451,"pc":[1806,1807,1808]},{"teal":1735,"source":451,"pc":[1809]},{"teal":1736,"source":451,"pc":[1810]},{"teal":1737,"source":451,"pc":[1811,1812]},{"teal":1738,"source":451,"pc":[1813]},{"teal":1741,"source":451,"errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1814]},{"teal":1744,"source":450,"pc":[1815,1816,1817]},{"teal":1745,"source":450,"pc":[1818]},{"teal":1746,"source":450,"pc":[1819]},{"teal":1747,"source":450,"pc":[1820]},{"teal":1748,"source":450,"pc":[1821]},{"teal":1758,"source":450,"pc":[1822,1823,1824]},{"teal":1761,"source":450,"pc":[1825,1826]},{"teal":1765,"source":452,"pc":[1827]},{"teal":1766,"source":452,"pc":[1828,1829]},{"teal":1771,"source":452,"pc":[1830,1831]},{"teal":1772,"source":452,"pc":[1832,1833]},{"teal":1773,"source":452,"pc":[1834]},{"teal":1774,"source":452,"pc":[1835,1836,1837]},{"teal":1779,"source":453,"pc":[1838,1839]},{"teal":1780,"source":453,"pc":[1840,1841]},{"teal":1781,"source":453,"pc":[1842]},{"teal":1782,"source":453,"pc":[1843,1844,1845]},{"teal":1787,"source":454,"pc":[1846]},{"teal":1788,"source":454,"pc":[1847]},{"teal":1789,"source":454,"pc":[1848,1849]},{"teal":1790,"source":454,"pc":[1850]},{"teal":1791,"source":454,"pc":[1851,1852]},{"teal":1792,"source":454,"pc":[1853,1854]},{"teal":1793,"source":454,"pc":[1855]},{"teal":1794,"source":454,"pc":[1856,1857]},{"teal":1795,"source":454,"pc":[1858,1859]},{"teal":1796,"source":454,"pc":[1860,1861]},{"teal":1797,"source":454,"pc":[1862,1863]},{"teal":1798,"source":454,"pc":[1864]},{"teal":1804,"source":456,"pc":[1865,1866]},{"teal":1805,"source":456,"pc":[1867]},{"teal":1806,"source":456,"pc":[1868]},{"teal":1807,"source":456,"pc":[1869]},{"teal":1808,"source":456,"pc":[1870]},{"teal":1809,"source":456,"pc":[1871,1872]},{"teal":1810,"source":456,"pc":[1873]},{"teal":1811,"source":456,"pc":[1874,1875]},{"teal":1812,"source":456,"pc":[1876]},{"teal":1813,"source":456,"pc":[1877,1878]},{"teal":1814,"source":456,"pc":[1879]},{"teal":1815,"source":456,"pc":[1880,1881,1882]},{"teal":1820,"source":457,"pc":[1883,1884]},{"teal":1821,"source":457,"pc":[1885]},{"teal":1822,"source":457,"pc":[1886]},{"teal":1823,"source":457,"pc":[1887]},{"teal":1824,"source":457,"pc":[1888]},{"teal":1825,"source":457,"pc":[1889,1890]},{"teal":1826,"source":457,"pc":[1891]},{"teal":1827,"source":457,"pc":[1892,1893,1894]},{"teal":1834,"source":452,"pc":[1895,1896]},{"teal":1835,"source":452,"pc":[1897]},{"teal":1836,"source":452,"pc":[1898]},{"teal":1837,"source":452,"pc":[1899,1900]},{"teal":1838,"source":452,"pc":[1901,1902,1903]},{"teal":1842,"source":460,"errorMessage":"account not found","pc":[1904]},{"teal":1846,"source":450,"pc":[1905,1906]},{"teal":1847,"source":450,"pc":[1907]},{"teal":1852,"source":473,"pc":[1908,1909,1910]},{"teal":1853,"source":473,"pc":[1911]},{"teal":1856,"source":473,"pc":[1912,1913,1914]},{"teal":1857,"source":473,"pc":[1915]},{"teal":1860,"source":473,"pc":[1916,1917,1918]},{"teal":1861,"source":473,"pc":[1919]},{"teal":1862,"source":473,"pc":[1920]},{"teal":1863,"source":473,"pc":[1921,1922]},{"teal":1864,"source":473,"pc":[1923]},{"teal":1867,"source":473,"errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1924]},{"teal":1870,"source":473,"pc":[1925,1926,1927]},{"teal":1871,"source":473,"pc":[1928]},{"teal":1872,"source":473,"pc":[1929]},{"teal":1885,"source":473,"pc":[1930,1931,1932]},{"teal":1892,"source":476,"pc":[1933,1934]},{"teal":1893,"source":476,"pc":[1935]},{"teal":1894,"source":476,"pc":[1936]},{"teal":1895,"source":476,"pc":[1937,1938]},{"teal":1896,"source":476,"pc":[1939]},{"teal":1897,"source":476,"pc":[1940]},{"teal":1900,"source":475,"errorMessage":"this can only be called via the validator contract","pc":[1941]},{"teal":1904,"source":479,"pc":[1942]},{"teal":1905,"source":479,"pc":[1943]},{"teal":1906,"source":479,"pc":[1944]},{"teal":1907,"source":479,"pc":[1945]},{"teal":1910,"source":479,"errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1946]},{"teal":1914,"source":480,"pc":[1947,1948]},{"teal":1915,"source":480,"pc":[1949]},{"teal":1916,"source":480,"pc":[1950]},{"teal":1919,"source":480,"errorMessage":"can only claim token rewards from validator that has them","pc":[1951]},{"teal":1927,"source":483,"pc":[1952]},{"teal":1928,"source":483,"pc":[1953,1954]},{"teal":1929,"source":483,"pc":[1955,1956]},{"teal":1933,"source":484,"pc":[1957,1958]},{"teal":1934,"source":484,"pc":[1959,1960]},{"teal":1938,"source":485,"pc":[1961,1962]},{"teal":1939,"source":485,"pc":[1963,1964]},{"teal":1943,"source":486,"pc":[1965,1966]},{"teal":1944,"source":486,"pc":[1967,1968]},{"teal":1947,"source":483,"pc":[1969]},{"teal":1948,"source":483,"pc":[1970,1971]},{"teal":1951,"source":483,"pc":[1972]},{"teal":1952,"source":473,"pc":[1973]},{"teal":1957,"source":499,"pc":[1974,1975,1976]},{"teal":1958,"source":499,"pc":[1977,1978,1979]},{"teal":1961,"source":499,"pc":[1980,1981,1982]},{"teal":1962,"source":499,"pc":[1983]},{"teal":1963,"source":499,"pc":[1984]},{"teal":1975,"source":499,"pc":[1985,1986,1987]},{"teal":1979,"source":500,"pc":[1988,1989,1990]},{"teal":1982,"source":500,"errorMessage":"can only be called by owner or manager of validator","pc":[1991]},{"teal":1986,"source":501,"pc":[1992,1993,1994,1995,1996,1997,1998,1999,2000,2001]},{"teal":1987,"source":501,"pc":[2002,2003]},{"teal":1988,"source":501,"pc":[2004]},{"teal":1989,"source":499,"pc":[2005]},{"teal":1994,"source":512,"pc":[2006,2007,2008]},{"teal":1995,"source":512,"pc":[2009]},{"teal":1996,"source":512,"pc":[2010]},{"teal":2007,"source":512,"pc":[2011,2012,2013]},{"teal":2010,"source":512,"pc":[2014,2015]},{"teal":2011,"source":512,"pc":[2016,2017]},{"teal":2018,"source":514,"pc":[2018]},{"teal":2019,"source":514,"pc":[2019]},{"teal":2020,"source":514,"pc":[2020,2021]},{"teal":2021,"source":514,"pc":[2022,2023]},{"teal":2022,"source":514,"pc":[2024,2025]},{"teal":2026,"source":515,"pc":[2026]},{"teal":2027,"source":515,"pc":[2027]},{"teal":2028,"source":515,"pc":[2028,2029]},{"teal":2032,"source":516,"pc":[2030]},{"teal":2033,"source":516,"pc":[2031]},{"teal":2034,"source":516,"pc":[2032]},{"teal":2035,"source":516,"pc":[2033,2034]},{"teal":2038,"source":514,"pc":[2035]},{"teal":2039,"source":514,"pc":[2036,2037]},{"teal":2042,"source":514,"pc":[2038]},{"teal":2043,"source":514,"pc":[2039,2040]},{"teal":2044,"source":514,"pc":[2041]},{"teal":2045,"source":514,"pc":[2042]},{"teal":2046,"source":514,"pc":[2043,2044]},{"teal":2047,"source":514,"pc":[2045,2046,2047]},{"teal":2048,"source":514,"pc":[2048,2049]},{"teal":2052,"source":523,"pc":[2050,2051]},{"teal":2053,"source":523,"pc":[2052,2053,2054]},{"teal":2054,"source":523,"pc":[2055]},{"teal":2055,"source":523,"pc":[2056,2057]},{"teal":2059,"source":524,"pc":[2058,2059]},{"teal":2060,"source":524,"pc":[2060,2061]},{"teal":2064,"source":525,"pc":[2062,2063]},{"teal":2065,"source":525,"pc":[2064,2065]},{"teal":2066,"source":525,"pc":[2066,2067]},{"teal":2067,"source":525,"pc":[2068]},{"teal":2068,"source":525,"pc":[2069]},{"teal":2069,"source":525,"pc":[2070,2071]},{"teal":2073,"source":528,"pc":[2072,2073]},{"teal":2074,"source":528,"pc":[2074]},{"teal":2075,"source":528,"pc":[2075,2076]},{"teal":2076,"source":528,"pc":[2077]},{"teal":2077,"source":528,"pc":[2078,2079]},{"teal":2078,"source":528,"pc":[2080]},{"teal":2079,"source":528,"pc":[2081]},{"teal":2080,"source":528,"pc":[2082,2083]},{"teal":2084,"source":530,"pc":[2084,2085]},{"teal":2085,"source":530,"pc":[2086,2087]},{"teal":2086,"source":530,"pc":[2088]},{"teal":2089,"source":530,"errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[2089]},{"teal":2093,"source":532,"pc":[2090,2091,2092]},{"teal":2097,"source":535,"pc":[2093,2094]},{"teal":2098,"source":535,"pc":[2095,2096]},{"teal":2099,"source":535,"pc":[2097]},{"teal":2103,"source":536,"pc":[2098,2099]},{"teal":2104,"source":536,"pc":[2100]},{"teal":2105,"source":536,"pc":[2101]},{"teal":2106,"source":536,"pc":[2102]},{"teal":2107,"source":536,"pc":[2103,2104]},{"teal":2108,"source":536,"pc":[2105]},{"teal":2109,"source":536,"pc":[2106]},{"teal":2113,"source":541,"pc":[2107,2108]},{"teal":2114,"source":541,"pc":[2109,2110,2111]},{"teal":2115,"source":541,"pc":[2112]},{"teal":2116,"source":541,"pc":[2113]},{"teal":2117,"source":541,"pc":[2114]},{"teal":2118,"source":541,"pc":[2115,2116]},{"teal":2122,"source":542,"pc":[2117,2118,2119]},{"teal":2123,"source":542,"pc":[2120,2121]},{"teal":2127,"source":543,"pc":[2122,2123]},{"teal":2128,"source":543,"pc":[2124,2125]},{"teal":2133,"source":548,"pc":[2126,2127]},{"teal":2134,"source":548,"pc":[2128,2129,2130]},{"teal":2140,"source":549,"pc":[2131]},{"teal":2141,"source":549,"pc":[2132]},{"teal":2142,"source":549,"pc":[2133]},{"teal":2143,"source":549,"pc":[2134]},{"teal":2144,"source":549,"pc":[2135,2136,2137]},{"teal":2152,"source":551,"pc":[2138]},{"teal":2153,"source":551,"pc":[2139]},{"teal":2154,"source":551,"pc":[2140,2141]},{"teal":2155,"source":551,"pc":[2142,2143]},{"teal":2156,"source":551,"pc":[2144,2145]},{"teal":2160,"source":552,"pc":[2146]},{"teal":2161,"source":552,"pc":[2147]},{"teal":2162,"source":552,"pc":[2148,2149]},{"teal":2166,"source":553,"pc":[2150]},{"teal":2167,"source":553,"pc":[2151]},{"teal":2168,"source":553,"pc":[2152]},{"teal":2169,"source":553,"pc":[2153,2154]},{"teal":2170,"source":553,"pc":[2155,2156,2157,2158,2159,2160,2161,2162,2163,2164]},{"teal":2171,"source":553,"pc":[2165,2166]},{"teal":2174,"source":551,"pc":[2167]},{"teal":2175,"source":551,"pc":[2168,2169]},{"teal":2178,"source":551,"pc":[2170]},{"teal":2179,"source":551,"pc":[2171,2172]},{"teal":2180,"source":551,"pc":[2173]},{"teal":2181,"source":551,"pc":[2174]},{"teal":2182,"source":551,"pc":[2175,2176]},{"teal":2183,"source":551,"pc":[2177,2178,2179]},{"teal":2184,"source":551,"pc":[2180]},{"teal":2185,"source":551,"pc":[2181,2182]},{"teal":2189,"source":555,"pc":[2183,2184]},{"teal":2190,"source":555,"pc":[2185,2186]},{"teal":2191,"source":555,"pc":[2187]},{"teal":2192,"source":555,"pc":[2188,2189]},{"teal":2198,"source":560,"pc":[2190]},{"teal":2199,"source":560,"pc":[2191]},{"teal":2200,"source":560,"pc":[2192]},{"teal":2201,"source":560,"pc":[2193]},{"teal":2202,"source":560,"pc":[2194,2195,2196]},{"teal":2210,"source":561,"pc":[2197]},{"teal":2211,"source":561,"pc":[2198]},{"teal":2212,"source":561,"pc":[2199,2200]},{"teal":2213,"source":561,"pc":[2201,2202]},{"teal":2214,"source":561,"pc":[2203,2204]},{"teal":2218,"source":562,"pc":[2205]},{"teal":2219,"source":562,"pc":[2206]},{"teal":2220,"source":562,"pc":[2207,2208]},{"teal":2224,"source":563,"pc":[2209]},{"teal":2225,"source":563,"pc":[2210]},{"teal":2226,"source":563,"pc":[2211]},{"teal":2227,"source":563,"pc":[2212,2213]},{"teal":2230,"source":561,"pc":[2214]},{"teal":2231,"source":561,"pc":[2215,2216]},{"teal":2234,"source":561,"pc":[2217]},{"teal":2235,"source":561,"pc":[2218,2219]},{"teal":2236,"source":561,"pc":[2220]},{"teal":2237,"source":561,"pc":[2221]},{"teal":2238,"source":561,"pc":[2222,2223]},{"teal":2239,"source":561,"pc":[2224,2225,2226]},{"teal":2240,"source":561,"pc":[2227,2228]},{"teal":2241,"source":560,"pc":[2229,2230,2231]},{"teal":2249,"source":567,"pc":[2232]},{"teal":2250,"source":567,"pc":[2233]},{"teal":2251,"source":567,"pc":[2234,2235]},{"teal":2252,"source":567,"pc":[2236,2237]},{"teal":2253,"source":567,"pc":[2238,2239]},{"teal":2257,"source":568,"pc":[2240,2241]},{"teal":2258,"source":568,"pc":[2242,2243]},{"teal":2262,"source":569,"pc":[2244]},{"teal":2263,"source":569,"pc":[2245]},{"teal":2264,"source":569,"pc":[2246]},{"teal":2265,"source":569,"pc":[2247]},{"teal":2266,"source":569,"pc":[2248]},{"teal":2267,"source":569,"pc":[2249]},{"teal":2268,"source":569,"pc":[2250]},{"teal":2269,"source":569,"pc":[2251,2252,2253]},{"teal":2270,"source":569,"pc":[2254]},{"teal":2271,"source":569,"pc":[2255]},{"teal":2272,"source":569,"pc":[2256,2257]},{"teal":2275,"source":567,"pc":[2258]},{"teal":2276,"source":567,"pc":[2259,2260]},{"teal":2279,"source":567,"pc":[2261]},{"teal":2280,"source":567,"pc":[2262,2263]},{"teal":2281,"source":567,"pc":[2264]},{"teal":2282,"source":567,"pc":[2265]},{"teal":2283,"source":567,"pc":[2266,2267]},{"teal":2284,"source":567,"pc":[2268,2269,2270]},{"teal":2285,"source":567,"pc":[2271,2272]},{"teal":2295,"source":576,"pc":[2273]},{"teal":2296,"source":576,"pc":[2274]},{"teal":2297,"source":576,"pc":[2275,2276]},{"teal":2298,"source":576,"pc":[2277,2278,2279,2280,2281,2282]},{"teal":2299,"source":576,"pc":[2283,2284]},{"teal":2303,"source":577,"pc":[2285]},{"teal":2304,"source":577,"pc":[2286]},{"teal":2305,"source":577,"pc":[2287,2288]},{"teal":2309,"source":578,"pc":[2289]},{"teal":2310,"source":578,"pc":[2290]},{"teal":2311,"source":578,"pc":[2291]},{"teal":2312,"source":578,"pc":[2292,2293]},{"teal":2315,"source":576,"pc":[2294]},{"teal":2316,"source":576,"pc":[2295,2296]},{"teal":2319,"source":576,"pc":[2297]},{"teal":2320,"source":576,"pc":[2298,2299]},{"teal":2321,"source":576,"pc":[2300]},{"teal":2322,"source":576,"pc":[2301]},{"teal":2323,"source":576,"pc":[2302,2303]},{"teal":2324,"source":576,"pc":[2304,2305,2306]},{"teal":2325,"source":576,"pc":[2307,2308]},{"teal":2329,"source":580,"pc":[2309,2310]},{"teal":2330,"source":580,"pc":[2311,2312,2313]},{"teal":2331,"source":580,"pc":[2314]},{"teal":2332,"source":580,"pc":[2315,2316]},{"teal":2336,"source":586,"pc":[2317,2318]},{"teal":2337,"source":586,"pc":[2319,2320]},{"teal":2338,"source":586,"pc":[2321]},{"teal":2339,"source":586,"pc":[2322,2323]},{"teal":2340,"source":586,"pc":[2324]},{"teal":2341,"source":586,"pc":[2325]},{"teal":2342,"source":586,"pc":[2326,2327]},{"teal":2343,"source":586,"pc":[2328,2329]},{"teal":2344,"source":586,"pc":[2330]},{"teal":2345,"source":586,"pc":[2331]},{"teal":2346,"source":586,"pc":[2332,2333]},{"teal":2350,"source":587,"pc":[2334]},{"teal":2351,"source":587,"pc":[2335,2336]},{"teal":2355,"source":588,"pc":[2337,2338,2339]},{"teal":2356,"source":588,"pc":[2340,2341]},{"teal":2361,"source":596,"pc":[2342,2343]},{"teal":2362,"source":596,"pc":[2344,2345,2346]},{"teal":2363,"source":596,"pc":[2347]},{"teal":2364,"source":596,"pc":[2348,2349]},{"teal":2365,"source":596,"pc":[2350]},{"teal":2366,"source":596,"pc":[2351,2352,2353]},{"teal":2371,"source":597,"pc":[2354]},{"teal":2372,"source":597,"pc":[2355,2356]},{"teal":2377,"source":603,"pc":[2357]},{"teal":2378,"source":603,"pc":[2358,2359]},{"teal":2382,"source":604,"pc":[2360]},{"teal":2383,"source":604,"pc":[2361,2362]},{"teal":2387,"source":605,"pc":[2363]},{"teal":2388,"source":605,"pc":[2364,2365]},{"teal":2392,"source":606,"pc":[2366]},{"teal":2393,"source":606,"pc":[2367,2368]},{"teal":2398,"source":607,"pc":[2369,2370]},{"teal":2399,"source":607,"pc":[2371,2372,2373]},{"teal":2405,"source":609,"pc":[2374,2375]},{"teal":2406,"source":609,"pc":[2376,2377]},{"teal":2407,"source":609,"pc":[2378,2379,2380]},{"teal":2408,"source":609,"pc":[2381]},{"teal":2409,"source":609,"pc":[2382,2383]},{"teal":2410,"source":609,"pc":[2384]},{"teal":2411,"source":609,"pc":[2385,2386]},{"teal":2412,"source":609,"pc":[2387]},{"teal":2413,"source":608,"pc":[2388,2389]},{"teal":2418,"source":613,"pc":[2390,2391]},{"teal":2419,"source":613,"pc":[2392,2393]},{"teal":2420,"source":613,"pc":[2394,2395,2396]},{"teal":2421,"source":613,"pc":[2397]},{"teal":2422,"source":613,"pc":[2398]},{"teal":2423,"source":613,"pc":[2399,2400,2401]},{"teal":2428,"source":619,"pc":[2402,2403]},{"teal":2429,"source":619,"pc":[2404]},{"teal":2430,"source":619,"pc":[2405]},{"teal":2431,"source":619,"pc":[2406]},{"teal":2432,"source":619,"pc":[2407]},{"teal":2433,"source":619,"pc":[2408]},{"teal":2434,"source":619,"pc":[2409,2410]},{"teal":2435,"source":619,"pc":[2411]},{"teal":2436,"source":619,"pc":[2412]},{"teal":2437,"source":619,"pc":[2413,2414]},{"teal":2438,"source":619,"pc":[2415]},{"teal":2439,"source":619,"pc":[2416]},{"teal":2440,"source":619,"pc":[2417,2418]},{"teal":2444,"source":622,"pc":[2419,2420]},{"teal":2445,"source":622,"pc":[2421,2422,2423]},{"teal":2446,"source":622,"pc":[2424]},{"teal":2447,"source":622,"pc":[2425,2426]},{"teal":2448,"source":622,"pc":[2427]},{"teal":2449,"source":622,"pc":[2428]},{"teal":2450,"source":622,"pc":[2429,2430]},{"teal":2451,"source":622,"pc":[2431]},{"teal":2452,"source":622,"pc":[2432]},{"teal":2453,"source":622,"pc":[2433]},{"teal":2454,"source":622,"pc":[2434]},{"teal":2455,"source":622,"pc":[2435]},{"teal":2458,"source":622,"errorMessage":"wideRatio failed","pc":[2436]},{"teal":2459,"source":622,"pc":[2437,2438]},{"teal":2467,"source":625,"pc":[2439,2440]},{"teal":2468,"source":625,"pc":[2441]},{"teal":2469,"source":625,"pc":[2442]},{"teal":2470,"source":625,"pc":[2443,2444,2445]},{"teal":2476,"source":630,"pc":[2446,2447]},{"teal":2477,"source":630,"pc":[2448,2449]},{"teal":2478,"source":630,"pc":[2450]},{"teal":2479,"source":630,"pc":[2451,2452,2453]},{"teal":2484,"source":631,"pc":[2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477]},{"teal":2485,"source":631,"pc":[2478]},{"teal":2489,"source":632,"pc":[2479]},{"teal":2497,"source":636,"pc":[2480,2481]},{"teal":2498,"source":636,"pc":[2482,2483,2484]},{"teal":2506,"source":643,"pc":[2485,2486]},{"teal":2507,"source":643,"pc":[2487,2488]},{"teal":2508,"source":643,"pc":[2489,2490,2491]},{"teal":2509,"source":643,"pc":[2492]},{"teal":2510,"source":642,"pc":[2493]},{"teal":2511,"source":642,"pc":[2494]},{"teal":2512,"source":644,"pc":[2495,2496]},{"teal":2513,"source":642,"pc":[2497]},{"teal":2514,"source":642,"pc":[2498]},{"teal":2515,"source":642,"pc":[2499]},{"teal":2516,"source":642,"pc":[2500]},{"teal":2517,"source":642,"pc":[2501]},{"teal":2520,"source":642,"errorMessage":"wideRatio failed","pc":[2502]},{"teal":2521,"source":642,"pc":[2503,2504]},{"teal":2525,"source":647,"pc":[2505,2506]},{"teal":2526,"source":647,"pc":[2507,2508]},{"teal":2527,"source":647,"pc":[2509]},{"teal":2528,"source":647,"pc":[2510]},{"teal":2529,"source":647,"pc":[2511,2512]},{"teal":2530,"source":647,"pc":[2513,2514,2515]},{"teal":2531,"source":647,"pc":[2516]},{"teal":2532,"source":647,"pc":[2517]},{"teal":2533,"source":647,"pc":[2518]},{"teal":2534,"source":647,"pc":[2519]},{"teal":2535,"source":647,"pc":[2520]},{"teal":2536,"source":647,"pc":[2521]},{"teal":2539,"source":647,"errorMessage":"wideRatio failed","pc":[2522]},{"teal":2540,"source":647,"pc":[2523,2524]},{"teal":2545,"source":649,"pc":[2525,2526]},{"teal":2546,"source":649,"pc":[2527,2528]},{"teal":2547,"source":649,"pc":[2529,2530]},{"teal":2548,"source":649,"pc":[2531]},{"teal":2549,"source":649,"pc":[2532]},{"teal":2550,"source":649,"pc":[2533,2534,2535]},{"teal":2555,"source":650,"pc":[2536,2537]},{"teal":2556,"source":650,"pc":[2538,2539]},{"teal":2557,"source":650,"pc":[2540]},{"teal":2558,"source":650,"pc":[2541,2542]},{"teal":2563,"source":653,"pc":[2543,2544]},{"teal":2564,"source":653,"pc":[2545,2546]},{"teal":2565,"source":653,"pc":[2547]},{"teal":2566,"source":653,"pc":[2548,2549]},{"teal":2574,"source":654,"pc":[2550]},{"teal":2575,"source":654,"pc":[2551]},{"teal":2576,"source":654,"pc":[2552,2553]},{"teal":2580,"source":655,"pc":[2554,2555]},{"teal":2581,"source":655,"pc":[2556,2557]},{"teal":2585,"source":656,"pc":[2558,2559]},{"teal":2586,"source":656,"pc":[2560]},{"teal":2587,"source":656,"pc":[2561]},{"teal":2588,"source":656,"pc":[2562,2563]},{"teal":2589,"source":656,"pc":[2564,2565]},{"teal":2593,"source":657,"pc":[2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601]},{"teal":2594,"source":657,"pc":[2602,2603]},{"teal":2597,"source":654,"pc":[2604]},{"teal":2598,"source":654,"pc":[2605,2606]},{"teal":2601,"source":654,"pc":[2607]},{"teal":2605,"source":660,"pc":[2608,2609]},{"teal":2606,"source":660,"pc":[2610,2611]},{"teal":2607,"source":636,"pc":[2612,2613,2614]},{"teal":2612,"source":661,"pc":[2615,2616]},{"teal":2613,"source":661,"pc":[2617,2618,2619]},{"teal":2614,"source":661,"pc":[2620]},{"teal":2615,"source":661,"pc":[2621]},{"teal":2616,"source":661,"pc":[2622]},{"teal":2617,"source":661,"pc":[2623,2624,2625]},{"teal":2625,"source":665,"pc":[2626,2627]},{"teal":2626,"source":665,"pc":[2628,2629]},{"teal":2627,"source":665,"pc":[2630,2631,2632]},{"teal":2628,"source":665,"pc":[2633]},{"teal":2629,"source":664,"pc":[2634]},{"teal":2630,"source":664,"pc":[2635]},{"teal":2631,"source":666,"pc":[2636,2637]},{"teal":2632,"source":664,"pc":[2638]},{"teal":2633,"source":664,"pc":[2639]},{"teal":2634,"source":664,"pc":[2640]},{"teal":2635,"source":664,"pc":[2641]},{"teal":2636,"source":664,"pc":[2642]},{"teal":2639,"source":664,"errorMessage":"wideRatio failed","pc":[2643]},{"teal":2640,"source":664,"pc":[2644,2645]},{"teal":2644,"source":670,"pc":[2646,2647]},{"teal":2645,"source":670,"pc":[2648,2649]},{"teal":2646,"source":670,"pc":[2650]},{"teal":2647,"source":670,"pc":[2651,2652]},{"teal":2652,"source":677,"pc":[2653,2654]},{"teal":2653,"source":677,"pc":[2655]},{"teal":2654,"source":677,"pc":[2656]},{"teal":2655,"source":677,"pc":[2657,2658,2659]},{"teal":2660,"source":680,"pc":[2660]},{"teal":2661,"source":680,"pc":[2661,2662]},{"teal":2667,"source":682,"pc":[2663,2664]},{"teal":2668,"source":682,"pc":[2665,2666,2667]},{"teal":2669,"source":682,"pc":[2668,2669]},{"teal":2670,"source":682,"pc":[2670,2671,2672]},{"teal":2671,"source":682,"pc":[2673]},{"teal":2672,"source":682,"pc":[2674]},{"teal":2673,"source":682,"pc":[2675,2676,2677]},{"teal":2674,"source":683,"pc":[2678,2679]},{"teal":2675,"source":683,"pc":[2680,2681,2682]},{"teal":2676,"source":683,"pc":[2683,2684]},{"teal":2677,"source":683,"pc":[2685]},{"teal":2678,"source":683,"pc":[2686,2687]},{"teal":2679,"source":683,"pc":[2688,2689,2690]},{"teal":2680,"source":683,"pc":[2691,2692]},{"teal":2681,"source":683,"pc":[2693]},{"teal":2682,"source":683,"pc":[2694]},{"teal":2683,"source":683,"pc":[2695,2696]},{"teal":2684,"source":683,"pc":[2697]},{"teal":2685,"source":682,"pc":[2698]},{"teal":2688,"source":681,"pc":[2699,2700,2701]},{"teal":2693,"source":685,"pc":[2702,2703]},{"teal":2694,"source":685,"pc":[2704,2705]},{"teal":2695,"source":685,"pc":[2706]},{"teal":2696,"source":685,"pc":[2707,2708,2709]},{"teal":2697,"source":685,"pc":[2710,2711]},{"teal":2698,"source":685,"pc":[2712,2713,2714]},{"teal":2701,"source":685,"pc":[2715,2716]},{"teal":2704,"source":685,"pc":[2717,2718]},{"teal":2712,"source":686,"pc":[2719]},{"teal":2713,"source":686,"pc":[2720]},{"teal":2714,"source":686,"pc":[2721,2722]},{"teal":2718,"source":687,"pc":[2723,2724]},{"teal":2719,"source":687,"pc":[2725,2726]},{"teal":2723,"source":688,"pc":[2727,2728]},{"teal":2724,"source":688,"pc":[2729,2730,2731]},{"teal":2725,"source":688,"pc":[2732,2733]},{"teal":2729,"source":689,"pc":[2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,2787,2788]},{"teal":2730,"source":689,"pc":[2789,2790]},{"teal":2733,"source":686,"pc":[2791]},{"teal":2734,"source":686,"pc":[2792,2793]},{"teal":2737,"source":686,"pc":[2794]},{"teal":2743,"source":692,"pc":[2795,2796]},{"teal":2744,"source":692,"pc":[2797,2798]},{"teal":2745,"source":692,"pc":[2799]},{"teal":2746,"source":692,"pc":[2800]},{"teal":2747,"source":692,"pc":[2801]},{"teal":2748,"source":692,"pc":[2802,2803,2804]},{"teal":2757,"source":693,"pc":[2805]},{"teal":2758,"source":693,"pc":[2806]},{"teal":2759,"source":693,"pc":[2807,2808]},{"teal":2763,"source":694,"pc":[2809,2810]},{"teal":2764,"source":694,"pc":[2811,2812]},{"teal":2765,"source":694,"pc":[2813]},{"teal":2766,"source":694,"pc":[2814,2815]},{"teal":2770,"source":695,"pc":[2816,2817]},{"teal":2771,"source":695,"pc":[2818,2819,2820]},{"teal":2772,"source":695,"pc":[2821,2822]},{"teal":2776,"source":696,"pc":[2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840]},{"teal":2777,"source":696,"pc":[2841,2842]},{"teal":2780,"source":693,"pc":[2843]},{"teal":2781,"source":693,"pc":[2844,2845]},{"teal":2784,"source":693,"pc":[2846]},{"teal":2793,"source":708,"pc":[2847]},{"teal":2794,"source":708,"pc":[2848,2849]},{"teal":2799,"source":732,"pc":[2850,2851]},{"teal":2800,"source":732,"pc":[2852]},{"teal":2801,"source":732,"pc":[2853]},{"teal":2802,"source":732,"pc":[2854]},{"teal":2803,"source":732,"pc":[2855,2856,2857]},{"teal":2804,"source":732,"pc":[2858,2859]},{"teal":2805,"source":732,"pc":[2860]},{"teal":2806,"source":732,"pc":[2861]},{"teal":2807,"source":732,"pc":[2862]},{"teal":2810,"source":732,"pc":[2863,2864,2865]},{"teal":2815,"source":733,"pc":[2866]},{"teal":2816,"source":733,"pc":[2867,2868]},{"teal":2820,"source":734,"pc":[2869,2870]},{"teal":2821,"source":734,"pc":[2871,2872]},{"teal":2825,"source":736,"pc":[2873,2874]},{"teal":2826,"source":736,"pc":[2875,2876]},{"teal":2830,"source":737,"pc":[2877]},{"teal":2831,"source":737,"pc":[2878,2879]},{"teal":2836,"source":737,"pc":[2880,2881]},{"teal":2837,"source":737,"pc":[2882,2883]},{"teal":2838,"source":737,"pc":[2884]},{"teal":2839,"source":737,"pc":[2885,2886,2887]},{"teal":2844,"source":738,"pc":[2888,2889]},{"teal":2845,"source":738,"pc":[2890,2891]},{"teal":2846,"source":738,"pc":[2892]},{"teal":2847,"source":738,"pc":[2893,2894,2895]},{"teal":2852,"source":739,"pc":[2896]},{"teal":2853,"source":739,"pc":[2897]},{"teal":2854,"source":739,"pc":[2898,2899]},{"teal":2855,"source":739,"pc":[2900]},{"teal":2856,"source":739,"pc":[2901,2902]},{"teal":2857,"source":739,"pc":[2903,2904]},{"teal":2858,"source":739,"pc":[2905]},{"teal":2859,"source":739,"pc":[2906,2907]},{"teal":2860,"source":739,"pc":[2908,2909]},{"teal":2861,"source":739,"pc":[2910,2911]},{"teal":2862,"source":739,"pc":[2912,2913]},{"teal":2863,"source":739,"pc":[2914]},{"teal":2868,"source":741,"pc":[2915,2916]},{"teal":2869,"source":741,"pc":[2917]},{"teal":2870,"source":741,"pc":[2918]},{"teal":2871,"source":741,"pc":[2919]},{"teal":2872,"source":741,"pc":[2920]},{"teal":2873,"source":741,"pc":[2921,2922]},{"teal":2874,"source":741,"pc":[2923]},{"teal":2875,"source":741,"pc":[2924,2925]},{"teal":2880,"source":742,"pc":[2926,2927]},{"teal":2881,"source":742,"pc":[2928,2929,2930]},{"teal":2882,"source":742,"pc":[2931,2932]},{"teal":2883,"source":742,"pc":[2933]},{"teal":2884,"source":742,"pc":[2934,2935,2936]},{"teal":2890,"source":743,"pc":[2937,2938]},{"teal":2891,"source":743,"pc":[2939,2940,2941]},{"teal":2892,"source":743,"pc":[2942]},{"teal":2893,"source":743,"pc":[2943,2944]},{"teal":2894,"source":743,"pc":[2945]},{"teal":2895,"source":743,"pc":[2946,2947,2948]},{"teal":2900,"source":746,"pc":[2949,2950]},{"teal":2901,"source":746,"pc":[2951,2952]},{"teal":2902,"source":746,"pc":[2953,2954,2955]},{"teal":2903,"source":746,"pc":[2956]},{"teal":2904,"source":746,"pc":[2957]},{"teal":2905,"source":746,"pc":[2958,2959]},{"teal":2906,"source":743,"pc":[2960,2961,2962]},{"teal":2911,"source":750,"pc":[2963,2964]},{"teal":2912,"source":750,"pc":[2965,2966]},{"teal":2913,"source":750,"pc":[2967,2968,2969]},{"teal":2914,"source":750,"pc":[2970]},{"teal":2915,"source":750,"pc":[2971]},{"teal":2916,"source":750,"pc":[2972,2973]},{"teal":2921,"source":754,"pc":[2974,2975]},{"teal":2922,"source":754,"pc":[2976,2977]},{"teal":2923,"source":754,"pc":[2978]},{"teal":2924,"source":754,"pc":[2979,2980,2981]},{"teal":2929,"source":755,"pc":[2982,2983]},{"teal":2930,"source":755,"pc":[2984,2985]},{"teal":2931,"source":755,"pc":[2986,2987,2988]},{"teal":2932,"source":755,"pc":[2989]},{"teal":2933,"source":755,"pc":[2990]},{"teal":2934,"source":755,"pc":[2991,2992]},{"teal":2938,"source":756,"pc":[2993,2994]},{"teal":2939,"source":756,"pc":[2995,2996]},{"teal":2940,"source":756,"pc":[2997]},{"teal":2941,"source":756,"pc":[2998,2999]},{"teal":2942,"source":756,"pc":[3000]},{"teal":2943,"source":756,"pc":[3001,3002]},{"teal":2948,"source":758,"pc":[3003,3004]},{"teal":2949,"source":758,"pc":[3005]},{"teal":2950,"source":758,"pc":[3006]},{"teal":2951,"source":758,"pc":[3007,3008,3009]},{"teal":2959,"source":761,"pc":[3010,3011]},{"teal":2960,"source":761,"pc":[3012,3013,3014]},{"teal":2961,"source":761,"pc":[3015]},{"teal":2962,"source":761,"pc":[3016,3017]},{"teal":2963,"source":760,"pc":[3018]},{"teal":2964,"source":761,"pc":[3019,3020]},{"teal":2965,"source":760,"pc":[3021,3022]},{"teal":2966,"source":760,"pc":[3023,3024]},{"teal":2967,"source":760,"pc":[3025]},{"teal":2968,"source":760,"pc":[3026,3027]},{"teal":2969,"source":760,"pc":[3028]},{"teal":2970,"source":760,"pc":[3029,3030]},{"teal":2971,"source":760,"pc":[3031]},{"teal":2972,"source":760,"pc":[3032]},{"teal":2973,"source":762,"pc":[3033,3034]},{"teal":2974,"source":762,"pc":[3035]},{"teal":2975,"source":762,"pc":[3036,3037]},{"teal":2976,"source":760,"pc":[3038]},{"teal":2977,"source":760,"pc":[3039]},{"teal":2978,"source":760,"pc":[3040]},{"teal":2979,"source":760,"pc":[3041]},{"teal":2980,"source":760,"pc":[3042]},{"teal":2981,"source":760,"pc":[3043]},{"teal":2984,"source":760,"errorMessage":"wideRatio failed","pc":[3044]},{"teal":2985,"source":760,"pc":[3045,3046]},{"teal":2989,"source":767,"pc":[3047,3048]},{"teal":2990,"source":767,"pc":[3049,3050]},{"teal":2991,"source":767,"pc":[3051]},{"teal":2992,"source":767,"pc":[3052,3053]},{"teal":2996,"source":768,"pc":[3054,3055]},{"teal":2997,"source":768,"pc":[3056,3057]},{"teal":2998,"source":768,"pc":[3058,3059]},{"teal":2999,"source":768,"pc":[3060,3061,3062]},{"teal":3000,"source":768,"pc":[3063]},{"teal":3001,"source":768,"pc":[3064,3065]},{"teal":3002,"source":768,"pc":[3066]},{"teal":3003,"source":768,"pc":[3067]},{"teal":3004,"source":768,"pc":[3068]},{"teal":3005,"source":768,"pc":[3069,3070]},{"teal":3009,"source":769,"pc":[3071,3072]},{"teal":3010,"source":769,"pc":[3073,3074]},{"teal":3011,"source":769,"pc":[3075]},{"teal":3012,"source":769,"pc":[3076,3077]},{"teal":3020,"source":773,"pc":[3078,3079]},{"teal":3021,"source":773,"pc":[3080,3081,3082]},{"teal":3022,"source":773,"pc":[3083]},{"teal":3023,"source":773,"pc":[3084,3085]},{"teal":3024,"source":772,"pc":[3086]},{"teal":3025,"source":773,"pc":[3087,3088]},{"teal":3026,"source":772,"pc":[3089,3090]},{"teal":3027,"source":772,"pc":[3091,3092]},{"teal":3028,"source":772,"pc":[3093]},{"teal":3029,"source":772,"pc":[3094,3095]},{"teal":3030,"source":772,"pc":[3096]},{"teal":3031,"source":772,"pc":[3097,3098]},{"teal":3032,"source":772,"pc":[3099]},{"teal":3033,"source":772,"pc":[3100]},{"teal":3034,"source":774,"pc":[3101,3102]},{"teal":3035,"source":774,"pc":[3103]},{"teal":3036,"source":774,"pc":[3104,3105]},{"teal":3037,"source":772,"pc":[3106]},{"teal":3038,"source":772,"pc":[3107]},{"teal":3039,"source":772,"pc":[3108]},{"teal":3040,"source":772,"pc":[3109]},{"teal":3041,"source":772,"pc":[3110]},{"teal":3042,"source":772,"pc":[3111]},{"teal":3045,"source":772,"errorMessage":"wideRatio failed","pc":[3112]},{"teal":3046,"source":772,"pc":[3113,3114]},{"teal":3050,"source":778,"pc":[3115,3116]},{"teal":3051,"source":778,"pc":[3117,3118]},{"teal":3052,"source":778,"pc":[3119]},{"teal":3053,"source":778,"pc":[3120,3121]},{"teal":3057,"source":781,"pc":[3122,3123]},{"teal":3058,"source":781,"pc":[3124,3125]},{"teal":3059,"source":781,"pc":[3126,3127]},{"teal":3060,"source":781,"pc":[3128,3129,3130]},{"teal":3061,"source":781,"pc":[3131]},{"teal":3062,"source":781,"pc":[3132,3133]},{"teal":3063,"source":781,"pc":[3134]},{"teal":3064,"source":781,"pc":[3135]},{"teal":3065,"source":781,"pc":[3136]},{"teal":3066,"source":781,"pc":[3137,3138]},{"teal":3070,"source":782,"pc":[3139,3140]},{"teal":3071,"source":782,"pc":[3141,3142]},{"teal":3072,"source":782,"pc":[3143,3144]},{"teal":3073,"source":782,"pc":[3145,3146,3147]},{"teal":3074,"source":782,"pc":[3148]},{"teal":3075,"source":782,"pc":[3149,3150]},{"teal":3076,"source":782,"pc":[3151]},{"teal":3077,"source":782,"pc":[3152]},{"teal":3078,"source":782,"pc":[3153]},{"teal":3079,"source":782,"pc":[3154,3155]},{"teal":3083,"source":783,"pc":[3156,3157]},{"teal":3084,"source":783,"pc":[3158,3159]},{"teal":3085,"source":783,"pc":[3160]},{"teal":3086,"source":783,"pc":[3161,3162]},{"teal":3090,"source":785,"pc":[3163,3164]},{"teal":3091,"source":785,"pc":[3165]},{"teal":3092,"source":785,"pc":[3166]},{"teal":3093,"source":785,"pc":[3167,3168]},{"teal":3094,"source":785,"pc":[3169]},{"teal":3095,"source":785,"pc":[3170,3171]},{"teal":3096,"source":785,"pc":[3172]},{"teal":3107,"source":737,"pc":[3173,3174]},{"teal":3108,"source":737,"pc":[3175]},{"teal":3109,"source":737,"pc":[3176]},{"teal":3110,"source":737,"pc":[3177,3178]},{"teal":3111,"source":737,"pc":[3179,3180,3181]},{"teal":3116,"source":793,"pc":[3182,3183]},{"teal":3117,"source":793,"pc":[3184]},{"teal":3118,"source":793,"pc":[3185,3186]},{"teal":3119,"source":793,"pc":[3187]},{"teal":3120,"source":793,"pc":[3188,3189]},{"teal":3125,"source":797,"pc":[3190,3191]},{"teal":3126,"source":797,"pc":[3192]},{"teal":3127,"source":797,"pc":[3193]},{"teal":3128,"source":797,"pc":[3194,3195,3196]},{"teal":3133,"source":799,"pc":[3197]},{"teal":3134,"source":799,"pc":[3198,3199]},{"teal":3139,"source":799,"pc":[3200,3201]},{"teal":3140,"source":799,"pc":[3202,3203]},{"teal":3141,"source":799,"pc":[3204]},{"teal":3142,"source":799,"pc":[3205,3206,3207]},{"teal":3147,"source":800,"pc":[3208,3209]},{"teal":3148,"source":800,"pc":[3210,3211]},{"teal":3149,"source":800,"pc":[3212]},{"teal":3150,"source":800,"pc":[3213,3214,3215]},{"teal":3155,"source":801,"pc":[3216]},{"teal":3156,"source":801,"pc":[3217]},{"teal":3157,"source":801,"pc":[3218,3219]},{"teal":3158,"source":801,"pc":[3220]},{"teal":3159,"source":801,"pc":[3221,3222]},{"teal":3160,"source":801,"pc":[3223,3224]},{"teal":3161,"source":801,"pc":[3225]},{"teal":3162,"source":801,"pc":[3226,3227]},{"teal":3163,"source":801,"pc":[3228,3229]},{"teal":3164,"source":801,"pc":[3230,3231]},{"teal":3165,"source":801,"pc":[3232,3233]},{"teal":3166,"source":801,"pc":[3234]},{"teal":3171,"source":803,"pc":[3235,3236]},{"teal":3172,"source":803,"pc":[3237]},{"teal":3173,"source":803,"pc":[3238]},{"teal":3174,"source":803,"pc":[3239]},{"teal":3175,"source":803,"pc":[3240]},{"teal":3176,"source":803,"pc":[3241,3242]},{"teal":3177,"source":803,"pc":[3243]},{"teal":3178,"source":803,"pc":[3244,3245]},{"teal":3183,"source":804,"pc":[3246,3247]},{"teal":3184,"source":804,"pc":[3248,3249,3250]},{"teal":3185,"source":804,"pc":[3251,3252]},{"teal":3186,"source":804,"pc":[3253]},{"teal":3187,"source":804,"pc":[3254]},{"teal":3188,"source":804,"pc":[3255,3256,3257]},{"teal":3189,"source":804,"pc":[3258,3259]},{"teal":3190,"source":804,"pc":[3260,3261,3262]},{"teal":3191,"source":804,"pc":[3263]},{"teal":3192,"source":804,"pc":[3264,3265]},{"teal":3193,"source":804,"pc":[3266]},{"teal":3194,"source":804,"pc":[3267]},{"teal":3197,"source":804,"pc":[3268,3269,3270]},{"teal":3202,"source":805,"pc":[3271,3272]},{"teal":3203,"source":805,"pc":[3273,3274]},{"teal":3204,"source":805,"pc":[3275,3276,3277]},{"teal":3205,"source":805,"pc":[3278]},{"teal":3206,"source":805,"pc":[3279]},{"teal":3207,"source":805,"pc":[3280,3281]},{"teal":3212,"source":807,"pc":[3282,3283]},{"teal":3213,"source":807,"pc":[3284,3285]},{"teal":3214,"source":807,"pc":[3286]},{"teal":3215,"source":807,"pc":[3287,3288,3289]},{"teal":3221,"source":812,"pc":[3290,3291]},{"teal":3222,"source":812,"pc":[3292]},{"teal":3223,"source":812,"pc":[3293]},{"teal":3224,"source":812,"pc":[3294,3295,3296]},{"teal":3232,"source":814,"pc":[3297,3298]},{"teal":3233,"source":814,"pc":[3299,3300,3301]},{"teal":3234,"source":814,"pc":[3302]},{"teal":3235,"source":814,"pc":[3303,3304]},{"teal":3236,"source":813,"pc":[3305]},{"teal":3237,"source":813,"pc":[3306]},{"teal":3238,"source":815,"pc":[3307,3308]},{"teal":3239,"source":813,"pc":[3309]},{"teal":3240,"source":813,"pc":[3310]},{"teal":3241,"source":813,"pc":[3311]},{"teal":3242,"source":813,"pc":[3312]},{"teal":3243,"source":813,"pc":[3313]},{"teal":3246,"source":813,"errorMessage":"wideRatio failed","pc":[3314]},{"teal":3247,"source":813,"pc":[3315,3316]},{"teal":3251,"source":818,"pc":[3317,3318]},{"teal":3252,"source":818,"pc":[3319,3320]},{"teal":3253,"source":818,"pc":[3321,3322]},{"teal":3254,"source":818,"pc":[3323,3324,3325]},{"teal":3255,"source":818,"pc":[3326]},{"teal":3256,"source":818,"pc":[3327,3328]},{"teal":3257,"source":818,"pc":[3329]},{"teal":3258,"source":818,"pc":[3330]},{"teal":3259,"source":818,"pc":[3331]},{"teal":3260,"source":818,"pc":[3332,3333]},{"teal":3264,"source":819,"pc":[3334,3335]},{"teal":3265,"source":819,"pc":[3336,3337]},{"teal":3266,"source":819,"pc":[3338]},{"teal":3267,"source":819,"pc":[3339,3340]},{"teal":3273,"source":821,"pc":[3341,3342]},{"teal":3274,"source":821,"pc":[3343]},{"teal":3275,"source":821,"pc":[3344]},{"teal":3276,"source":821,"pc":[3345,3346,3347]},{"teal":3284,"source":823,"pc":[3348,3349]},{"teal":3285,"source":823,"pc":[3350,3351,3352]},{"teal":3286,"source":823,"pc":[3353]},{"teal":3287,"source":823,"pc":[3354,3355]},{"teal":3288,"source":822,"pc":[3356]},{"teal":3289,"source":822,"pc":[3357]},{"teal":3290,"source":824,"pc":[3358,3359]},{"teal":3291,"source":822,"pc":[3360]},{"teal":3292,"source":822,"pc":[3361]},{"teal":3293,"source":822,"pc":[3362]},{"teal":3294,"source":822,"pc":[3363]},{"teal":3295,"source":822,"pc":[3364]},{"teal":3298,"source":822,"errorMessage":"wideRatio failed","pc":[3365]},{"teal":3299,"source":822,"pc":[3366,3367]},{"teal":3303,"source":828,"pc":[3368,3369]},{"teal":3304,"source":828,"pc":[3370,3371]},{"teal":3305,"source":828,"pc":[3372,3373]},{"teal":3306,"source":828,"pc":[3374,3375,3376]},{"teal":3307,"source":828,"pc":[3377]},{"teal":3308,"source":828,"pc":[3378,3379]},{"teal":3309,"source":828,"pc":[3380]},{"teal":3310,"source":828,"pc":[3381]},{"teal":3311,"source":828,"pc":[3382]},{"teal":3312,"source":828,"pc":[3383,3384]},{"teal":3316,"source":829,"pc":[3385,3386]},{"teal":3317,"source":829,"pc":[3387,3388]},{"teal":3318,"source":829,"pc":[3389,3390]},{"teal":3319,"source":829,"pc":[3391,3392,3393]},{"teal":3320,"source":829,"pc":[3394]},{"teal":3321,"source":829,"pc":[3395,3396]},{"teal":3322,"source":829,"pc":[3397]},{"teal":3323,"source":829,"pc":[3398]},{"teal":3324,"source":829,"pc":[3399]},{"teal":3325,"source":829,"pc":[3400,3401]},{"teal":3329,"source":830,"pc":[3402,3403]},{"teal":3330,"source":830,"pc":[3404,3405]},{"teal":3331,"source":830,"pc":[3406]},{"teal":3332,"source":830,"pc":[3407,3408]},{"teal":3337,"source":834,"pc":[3409,3410]},{"teal":3338,"source":834,"pc":[3411]},{"teal":3339,"source":834,"pc":[3412]},{"teal":3340,"source":834,"pc":[3413,3414]},{"teal":3341,"source":834,"pc":[3415]},{"teal":3342,"source":834,"pc":[3416,3417]},{"teal":3343,"source":834,"pc":[3418]},{"teal":3352,"source":799,"pc":[3419,3420]},{"teal":3353,"source":799,"pc":[3421]},{"teal":3354,"source":799,"pc":[3422]},{"teal":3355,"source":799,"pc":[3423,3424]},{"teal":3356,"source":799,"pc":[3425,3426,3427]},{"teal":3365,"source":844,"pc":[3428,3429]},{"teal":3366,"source":844,"pc":[3430]},{"teal":3367,"source":844,"pc":[3431,3432]},{"teal":3368,"source":844,"pc":[3433]},{"teal":3369,"source":844,"pc":[3434]},{"teal":3370,"source":844,"pc":[3435,3436]},{"teal":3371,"source":844,"pc":[3437]},{"teal":3372,"source":844,"pc":[3438,3439]},{"teal":3376,"source":845,"pc":[3440,3441]},{"teal":3377,"source":845,"pc":[3442]},{"teal":3378,"source":845,"pc":[3443,3444]},{"teal":3379,"source":845,"pc":[3445]},{"teal":3380,"source":845,"pc":[3446,3447]},{"teal":3381,"source":845,"pc":[3448]},{"teal":3382,"source":845,"pc":[3449]},{"teal":3387,"source":846,"pc":[3450,3451]},{"teal":3388,"source":846,"pc":[3452]},{"teal":3389,"source":847,"pc":[3453]},{"teal":3390,"source":847,"pc":[3454,3455]},{"teal":3391,"source":847,"pc":[3456]},{"teal":3392,"source":847,"pc":[3457,3458]},{"teal":3393,"source":847,"pc":[3459]},{"teal":3394,"source":847,"pc":[3460]},{"teal":3395,"source":847,"pc":[3461]},{"teal":3396,"source":847,"pc":[3462]},{"teal":3397,"source":847,"pc":[3463]},{"teal":3398,"source":847,"pc":[3464,3465]},{"teal":3399,"source":847,"pc":[3466]},{"teal":3402,"source":847,"errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3467]},{"teal":3403,"source":847,"pc":[3468,3469]},{"teal":3404,"source":847,"pc":[3470]},{"teal":3405,"source":847,"pc":[3471]},{"teal":3406,"source":847,"pc":[3472]},{"teal":3407,"source":847,"pc":[3473]},{"teal":3408,"source":847,"pc":[3474,3475]},{"teal":3409,"source":847,"pc":[3476]},{"teal":3410,"source":847,"pc":[3477]},{"teal":3411,"source":847,"pc":[3478]},{"teal":3412,"source":846,"pc":[3479]},{"teal":3416,"source":848,"pc":[3480,3481]},{"teal":3417,"source":848,"pc":[3482]},{"teal":3418,"source":848,"pc":[3483]},{"teal":3419,"source":848,"pc":[3484,3485]},{"teal":3420,"source":848,"pc":[3486]},{"teal":3421,"source":848,"pc":[3487]},{"teal":3434,"source":854,"pc":[3488]},{"teal":3435,"source":854,"pc":[3489]},{"teal":3436,"source":854,"pc":[3490,3491]},{"teal":3437,"source":854,"pc":[3492,3493,3494,3495,3496,3497]},{"teal":3438,"source":854,"pc":[3498,3499]},{"teal":3442,"source":855,"pc":[3500]},{"teal":3443,"source":855,"pc":[3501]},{"teal":3444,"source":855,"pc":[3502,3503]},{"teal":3454,"source":857,"pc":[3504]},{"teal":3455,"source":857,"pc":[3505]},{"teal":3456,"source":857,"pc":[3506]},{"teal":3457,"source":857,"pc":[3507]},{"teal":3458,"source":857,"pc":[3508]},{"teal":3459,"source":857,"pc":[3509]},{"teal":3460,"source":857,"pc":[3510]},{"teal":3461,"source":857,"pc":[3511,3512,3513]},{"teal":3462,"source":857,"pc":[3514]},{"teal":3463,"source":857,"pc":[3515]},{"teal":3464,"source":857,"pc":[3516,3517]},{"teal":3465,"source":858,"pc":[3518,3519]},{"teal":3466,"source":858,"pc":[3520]},{"teal":3467,"source":858,"pc":[3521,3522]},{"teal":3468,"source":859,"pc":[3523,3524]},{"teal":3469,"source":859,"pc":[3525]},{"teal":3470,"source":859,"pc":[3526,3527]},{"teal":3471,"source":860,"pc":[3528,3529]},{"teal":3472,"source":860,"pc":[3530]},{"teal":3473,"source":860,"pc":[3531,3532]},{"teal":3474,"source":861,"pc":[3533,3534]},{"teal":3475,"source":861,"pc":[3535]},{"teal":3476,"source":861,"pc":[3536,3537]},{"teal":3479,"source":854,"pc":[3538]},{"teal":3480,"source":854,"pc":[3539,3540]},{"teal":3483,"source":854,"pc":[3541]},{"teal":3484,"source":512,"pc":[3542]},{"teal":3489,"source":886,"pc":[3543,3544,3545]},{"teal":3490,"source":886,"pc":[3546]},{"teal":3493,"source":885,"pc":[3547,3548,3549]},{"teal":3494,"source":885,"pc":[3550]},{"teal":3497,"source":884,"pc":[3551,3552,3553]},{"teal":3498,"source":884,"pc":[3554]},{"teal":3501,"source":883,"pc":[3555,3556,3557]},{"teal":3502,"source":883,"pc":[3558,3559,3560]},{"teal":3505,"source":882,"pc":[3561,3562,3563]},{"teal":3506,"source":882,"pc":[3564,3565,3566]},{"teal":3509,"source":881,"pc":[3567,3568,3569]},{"teal":3510,"source":881,"pc":[3570,3571,3572]},{"teal":3513,"source":880,"pc":[3573,3574]},{"teal":3514,"source":880,"pc":[3575]},{"teal":3515,"source":880,"pc":[3576]},{"teal":3516,"source":880,"pc":[3577]},{"teal":3517,"source":880,"pc":[3578,3579]},{"teal":3518,"source":880,"pc":[3580]},{"teal":3519,"source":880,"pc":[3581]},{"teal":3522,"source":880,"errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3582]},{"teal":3525,"source":879,"pc":[3583,3584,3585]},{"teal":3526,"source":879,"pc":[3586]},{"teal":3527,"source":879,"pc":[3587]},{"teal":3543,"source":879,"pc":[3588,3589,3590]},{"teal":3546,"source":879,"pc":[3591,3592]},{"teal":3550,"source":888,"pc":[3593,3594,3595]},{"teal":3553,"source":888,"errorMessage":"can only be called by owner or manager of validator","pc":[3596]},{"teal":3557,"source":889,"pc":[3597,3598,3599]},{"teal":3558,"source":889,"pc":[3600,3601]},{"teal":3563,"source":890,"pc":[3602,3603]},{"teal":3564,"source":890,"pc":[3604,3605]},{"teal":3565,"source":890,"pc":[3606,3607]},{"teal":3566,"source":890,"pc":[3608]},{"teal":3569,"source":890,"errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3609]},{"teal":3572,"source":890,"pc":[3610,3611]},{"teal":3573,"source":890,"pc":[3612,3613]},{"teal":3574,"source":890,"pc":[3614,3615]},{"teal":3575,"source":890,"pc":[3616]},{"teal":3578,"source":890,"errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3617]},{"teal":3590,"source":891,"pc":[3618]},{"teal":3591,"source":891,"pc":[3619,3620]},{"teal":3592,"source":891,"pc":[3621,3622]},{"teal":3596,"source":892,"pc":[3623,3624]},{"teal":3597,"source":892,"pc":[3625,3626]},{"teal":3601,"source":893,"pc":[3627,3628]},{"teal":3602,"source":893,"pc":[3629,3630]},{"teal":3606,"source":894,"pc":[3631,3632]},{"teal":3607,"source":894,"pc":[3633,3634]},{"teal":3611,"source":895,"pc":[3635,3636]},{"teal":3612,"source":895,"pc":[3637,3638]},{"teal":3616,"source":896,"pc":[3639,3640]},{"teal":3617,"source":896,"pc":[3641,3642]},{"teal":3621,"source":897,"pc":[3643,3644]},{"teal":3622,"source":897,"pc":[3645,3646]},{"teal":3626,"source":898,"pc":[3647,3648]},{"teal":3627,"source":898,"pc":[3649,3650]},{"teal":3630,"source":891,"pc":[3651]},{"teal":3631,"source":879,"pc":[3652]},{"teal":3636,"source":907,"pc":[3653,3654,3655]},{"teal":3637,"source":907,"pc":[3656]},{"teal":3638,"source":907,"pc":[3657]},{"teal":3645,"source":907,"pc":[3658,3659,3660]},{"teal":3650,"source":910,"pc":[3661,3662]},{"teal":3651,"source":910,"pc":[3663]},{"teal":3652,"source":910,"pc":[3664]},{"teal":3653,"source":910,"pc":[3665,3666]},{"teal":3654,"source":910,"pc":[3667]},{"teal":3655,"source":910,"pc":[3668]},{"teal":3656,"source":910,"pc":[3669,3670,3671]},{"teal":3661,"source":911,"pc":[3672,3673,3674]},{"teal":3664,"source":911,"errorMessage":"can only be called by owner or manager of validator","pc":[3675]},{"teal":3669,"source":914,"pc":[3676]},{"teal":3670,"source":914,"pc":[3677,3678]},{"teal":3671,"source":914,"pc":[3679,3680]},{"teal":3674,"source":914,"pc":[3681]},{"teal":3675,"source":914,"pc":[3682,3683]},{"teal":3678,"source":914,"pc":[3684]},{"teal":3679,"source":907,"pc":[3685]},{"teal":3684,"source":920,"pc":[3686,3687,3688]},{"teal":3685,"source":920,"pc":[3689,3690,3691]},{"teal":3688,"source":920,"pc":[3692,3693,3694]},{"teal":3689,"source":920,"pc":[3695]},{"teal":3692,"source":920,"pc":[3696,3697,3698]},{"teal":3693,"source":920,"pc":[3699]},{"teal":3694,"source":920,"pc":[3700]},{"teal":3698,"source":920,"pc":[3701,3702,3703]},{"teal":3702,"source":921,"pc":[3704,3705,3706]},{"teal":3705,"source":921,"errorMessage":"can only be called by owner or manager of validator","pc":[3707]},{"teal":3713,"source":923,"pc":[3708]},{"teal":3714,"source":923,"pc":[3709]},{"teal":3715,"source":923,"pc":[3710,3711]},{"teal":3719,"source":924,"pc":[3712,3713]},{"teal":3720,"source":924,"pc":[3714,3715]},{"teal":3724,"source":925,"pc":[3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732]},{"teal":3725,"source":925,"pc":[3733,3734]},{"teal":3726,"source":925,"pc":[3735,3736]},{"teal":3727,"source":925,"pc":[3737,3738]},{"teal":3728,"source":925,"pc":[3739,3740]},{"teal":3729,"source":925,"pc":[3741]},{"teal":3730,"source":925,"pc":[3742,3743]},{"teal":3731,"source":925,"pc":[3744,3745]},{"teal":3732,"source":925,"pc":[3746,3747]},{"teal":3736,"source":926,"pc":[3748,3749]},{"teal":3737,"source":926,"pc":[3750,3751]},{"teal":3740,"source":923,"pc":[3752]},{"teal":3741,"source":923,"pc":[3753,3754]},{"teal":3744,"source":923,"pc":[3755]},{"teal":3745,"source":920,"pc":[3756]},{"teal":3750,"source":936,"pc":[3757,3758]},{"teal":3753,"source":936,"pc":[3759,3760,3761]},{"teal":3754,"source":936,"pc":[3762]},{"teal":3755,"source":936,"pc":[3763]},{"teal":3756,"source":936,"pc":[3764,3765]},{"teal":3757,"source":936,"pc":[3766]},{"teal":3760,"source":936,"errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3767]},{"teal":3763,"source":936,"pc":[3768,3769,3770]},{"teal":3764,"source":936,"pc":[3771]},{"teal":3765,"source":936,"pc":[3772]},{"teal":3766,"source":936,"pc":[3773]},{"teal":3767,"source":936,"pc":[3774]},{"teal":3776,"source":936,"pc":[3775,3776,3777]},{"teal":3779,"source":936,"pc":[3778,3779]},{"teal":3783,"source":937,"pc":[3780]},{"teal":3784,"source":937,"pc":[3781]},{"teal":3785,"source":937,"pc":[3782,3783]},{"teal":3786,"source":937,"pc":[3784,3785,3786]},{"teal":3787,"source":937,"pc":[3787]},{"teal":3788,"source":937,"pc":[3788]},{"teal":3791,"source":937,"errorMessage":"caller must be part of same validator set!","pc":[3789]},{"teal":3795,"source":938,"pc":[3790]},{"teal":3796,"source":938,"pc":[3791]},{"teal":3797,"source":938,"pc":[3792]},{"teal":3798,"source":938,"pc":[3793]},{"teal":3801,"source":938,"errorMessage":"callee must be pool 1","pc":[3794]},{"teal":3805,"source":939,"pc":[3795,3796]},{"teal":3806,"source":939,"pc":[3797,3798,3799]},{"teal":3807,"source":939,"pc":[3800]},{"teal":3808,"source":939,"pc":[3801]},{"teal":3809,"source":939,"pc":[3802]},{"teal":3812,"source":939,"errorMessage":"caller must NOT be pool 1","pc":[3803]},{"teal":3819,"source":941,"pc":[3804]},{"teal":3820,"source":941,"pc":[3805]},{"teal":3821,"source":941,"pc":[3806,3807]},{"teal":3822,"source":941,"pc":[3808,3809]},{"teal":3823,"source":941,"pc":[3810,3811]},{"teal":3827,"source":942,"pc":[3812]},{"teal":3828,"source":942,"pc":[3813]},{"teal":3829,"source":942,"pc":[3814,3815]},{"teal":3833,"source":943,"pc":[3816,3817]},{"teal":3834,"source":943,"pc":[3818,3819,3820]},{"teal":3835,"source":943,"pc":[3821]},{"teal":3836,"source":943,"pc":[3822]},{"teal":3837,"source":943,"pc":[3823,3824]},{"teal":3838,"source":943,"pc":[3825,3826]},{"teal":3839,"source":943,"pc":[3827,3828,3829]},{"teal":3840,"source":943,"pc":[3830]},{"teal":3841,"source":943,"pc":[3831]},{"teal":3842,"source":943,"pc":[3832,3833]},{"teal":3845,"source":941,"pc":[3834]},{"teal":3846,"source":941,"pc":[3835,3836]},{"teal":3849,"source":941,"pc":[3837]},{"teal":3850,"source":941,"pc":[3838,3839]},{"teal":3851,"source":941,"pc":[3840]},{"teal":3852,"source":941,"pc":[3841]},{"teal":3853,"source":941,"pc":[3842,3843]},{"teal":3854,"source":941,"pc":[3844,3845,3846]},{"teal":3855,"source":941,"pc":[3847]},{"teal":3856,"source":941,"pc":[3848,3849]},{"teal":3860,"source":945,"pc":[3850,3851]},{"teal":3861,"source":945,"pc":[3852,3853]},{"teal":3862,"source":945,"pc":[3854,3855,3856]},{"teal":3863,"source":945,"pc":[3857]},{"teal":3864,"source":945,"pc":[3858]},{"teal":3865,"source":945,"pc":[3859]},{"teal":3869,"source":946,"pc":[3860,3861]},{"teal":3870,"source":946,"pc":[3862,3863]},{"teal":3871,"source":946,"pc":[3864,3865,3866]},{"teal":3872,"source":946,"pc":[3867]},{"teal":3873,"source":946,"pc":[3868,3869]},{"teal":3874,"source":946,"pc":[3870]},{"teal":3875,"source":946,"pc":[3871]},{"teal":3876,"source":946,"pc":[3872]},{"teal":3883,"source":948,"pc":[3873]},{"teal":3884,"source":948,"pc":[3874]},{"teal":3885,"source":948,"pc":[3875,3876]},{"teal":3886,"source":948,"pc":[3877,3878]},{"teal":3887,"source":948,"pc":[3879,3880]},{"teal":3891,"source":949,"pc":[3881]},{"teal":3892,"source":949,"pc":[3882]},{"teal":3893,"source":949,"pc":[3883,3884]},{"teal":3897,"source":950,"pc":[3885]},{"teal":3898,"source":950,"pc":[3886]},{"teal":3899,"source":950,"pc":[3887]},{"teal":3900,"source":950,"pc":[3888,3889]},{"teal":3903,"source":948,"pc":[3890]},{"teal":3904,"source":948,"pc":[3891,3892]},{"teal":3907,"source":948,"pc":[3893]},{"teal":3908,"source":948,"pc":[3894,3895]},{"teal":3909,"source":948,"pc":[3896]},{"teal":3910,"source":948,"pc":[3897]},{"teal":3911,"source":948,"pc":[3898,3899]},{"teal":3912,"source":948,"pc":[3900,3901,3902]},{"teal":3915,"source":936,"pc":[3903,3904]},{"teal":3916,"source":936,"pc":[3905]},{"teal":3920,"source":954,"pc":[3906,3907,3908]},{"teal":3923,"source":954,"pc":[3909,3910]},{"teal":3930,"source":955,"pc":[3911]},{"teal":3931,"source":955,"pc":[3912]},{"teal":3932,"source":955,"pc":[3913,3914]},{"teal":3933,"source":955,"pc":[3915,3916,3917,3918,3919,3920]},{"teal":3934,"source":955,"pc":[3921,3922]},{"teal":3938,"source":956,"pc":[3923]},{"teal":3939,"source":956,"pc":[3924]},{"teal":3940,"source":956,"pc":[3925,3926]},{"teal":3944,"source":957,"pc":[3927]},{"teal":3945,"source":957,"pc":[3928]},{"teal":3946,"source":957,"pc":[3929]},{"teal":3947,"source":957,"pc":[3930,3931]},{"teal":3950,"source":955,"pc":[3932]},{"teal":3951,"source":955,"pc":[3933,3934]},{"teal":3954,"source":955,"pc":[3935]},{"teal":3955,"source":955,"pc":[3936,3937]},{"teal":3956,"source":955,"pc":[3938]},{"teal":3957,"source":955,"pc":[3939]},{"teal":3958,"source":955,"pc":[3940,3941]},{"teal":3959,"source":955,"pc":[3942,3943,3944]},{"teal":3960,"source":955,"pc":[3945,3946]},{"teal":3964,"source":959,"pc":[3947,3948]},{"teal":3965,"source":959,"pc":[3949,3950]},{"teal":3966,"source":959,"pc":[3951,3952,3953]},{"teal":3967,"source":959,"pc":[3954]},{"teal":3968,"source":959,"pc":[3955]},{"teal":3969,"source":959,"pc":[3956,3957,3958]},{"teal":3970,"source":959,"pc":[3959,3960]},{"teal":3971,"source":959,"pc":[3961,3962]},{"teal":3972,"source":959,"pc":[3963,3964,3965]},{"teal":3973,"source":959,"pc":[3966]},{"teal":3974,"source":959,"pc":[3967]},{"teal":3978,"source":954,"pc":[3968,3969]},{"teal":3979,"source":954,"pc":[3970]},{"teal":3986,"source":966,"pc":[3971,3972,3973]},{"teal":3989,"source":966,"pc":[3974,3975]},{"teal":3993,"source":967,"pc":[3976,3977,3978]},{"teal":3994,"source":967,"pc":[3979,3980]},{"teal":3998,"source":969,"pc":[3981,3982]},{"teal":3999,"source":969,"pc":[3983,3984]},{"teal":4000,"source":969,"pc":[3985]},{"teal":4001,"source":969,"pc":[3986]},{"teal":4002,"source":969,"pc":[3987,3988]},{"teal":4003,"source":969,"pc":[3989]},{"teal":4004,"source":969,"pc":[3990]},{"teal":4005,"source":969,"pc":[3991]},{"teal":4006,"source":969,"pc":[3992]},{"teal":4007,"source":969,"pc":[3993]},{"teal":4010,"source":969,"errorMessage":"wideRatio failed","pc":[3994]},{"teal":4013,"source":966,"pc":[3995,3996]},{"teal":4014,"source":966,"pc":[3997]},{"teal":4018,"source":972,"pc":[3998,3999,4000]},{"teal":4023,"source":974,"pc":[4001,4002]},{"teal":4024,"source":974,"pc":[4003,4004]},{"teal":4025,"source":974,"pc":[4005]},{"teal":4026,"source":974,"pc":[4006]},{"teal":4027,"source":974,"pc":[4007,4008,4009]},{"teal":4032,"source":975,"pc":[4010,4011]},{"teal":4033,"source":975,"pc":[4012]},{"teal":4038,"source":977,"pc":[4013]},{"teal":4039,"source":972,"pc":[4014]},{"teal":4043,"source":980,"pc":[4015,4016,4017]},{"teal":4047,"source":981,"pc":[4018]},{"teal":4048,"source":980,"pc":[4019]},{"teal":4054,"source":987,"pc":[4020,4021,4022]},{"teal":4057,"source":987,"pc":[4023,4024]},{"teal":4058,"source":987,"pc":[4025,4026]},{"teal":4062,"source":988,"pc":[4027,4028]},{"teal":4063,"source":988,"pc":[4029]},{"teal":4064,"source":988,"pc":[4030]},{"teal":4065,"source":988,"pc":[4031,4032]},{"teal":4070,"source":989,"pc":[4033,4034]},{"teal":4071,"source":989,"pc":[4035,4036]},{"teal":4072,"source":989,"pc":[4037]},{"teal":4073,"source":989,"pc":[4038,4039]},{"teal":4074,"source":989,"pc":[4040]},{"teal":4075,"source":989,"pc":[4041]},{"teal":4076,"source":989,"pc":[4042]},{"teal":4077,"source":989,"pc":[4043]},{"teal":4080,"source":989,"errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[4044]},{"teal":4081,"source":989,"pc":[4045,4046,4047,4048,4049,4050,4051,4052,4053,4054]},{"teal":4082,"source":989,"pc":[4055]},{"teal":4083,"source":989,"pc":[4056]},{"teal":4084,"source":989,"pc":[4057]},{"teal":4085,"source":989,"pc":[4058]},{"teal":4086,"source":989,"pc":[4059,4060]},{"teal":4087,"source":989,"pc":[4061]},{"teal":4088,"source":989,"pc":[4062]},{"teal":4089,"source":989,"pc":[4063]},{"teal":4090,"source":989,"pc":[4064]},{"teal":4091,"source":989,"pc":[4065]},{"teal":4092,"source":989,"pc":[4066]},{"teal":4093,"source":989,"pc":[4067,4068,4069]},{"teal":4099,"source":990,"pc":[4070,4071]},{"teal":4100,"source":990,"pc":[4072,4073]},{"teal":4101,"source":990,"pc":[4074]},{"teal":4102,"source":990,"pc":[4075,4076,4077]},{"teal":4107,"source":991,"pc":[4078]},{"teal":4108,"source":991,"pc":[4079]},{"teal":4109,"source":991,"pc":[4080,4081]},{"teal":4110,"source":991,"pc":[4082]},{"teal":4111,"source":991,"pc":[4083,4084]},{"teal":4112,"source":991,"pc":[4085,4086]},{"teal":4113,"source":991,"pc":[4087]},{"teal":4114,"source":991,"pc":[4088,4089]},{"teal":4115,"source":991,"pc":[4090,4091]},{"teal":4116,"source":991,"pc":[4092,4093]},{"teal":4117,"source":991,"pc":[4094,4095]},{"teal":4118,"source":991,"pc":[4096]},{"teal":4123,"source":993,"pc":[4097,4098]},{"teal":4124,"source":993,"pc":[4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116]},{"teal":4125,"source":993,"pc":[4117]},{"teal":4126,"source":993,"pc":[4118]},{"teal":4127,"source":993,"pc":[4119]},{"teal":4128,"source":993,"pc":[4120,4121]},{"teal":4129,"source":993,"pc":[4122]},{"teal":4132,"source":993,"errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[4123]},{"teal":4133,"source":993,"pc":[4124,4125]},{"teal":4134,"source":993,"pc":[4126]},{"teal":4135,"source":993,"pc":[4127]},{"teal":4136,"source":993,"pc":[4128]},{"teal":4137,"source":993,"pc":[4129]},{"teal":4138,"source":993,"pc":[4130,4131]},{"teal":4139,"source":993,"pc":[4132]},{"teal":4140,"source":993,"pc":[4133]},{"teal":4141,"source":993,"pc":[4134]},{"teal":4142,"source":993,"pc":[4135,4136]},{"teal":4146,"source":994,"pc":[4137,4138]},{"teal":4147,"source":994,"pc":[4139]},{"teal":4148,"source":994,"pc":[4140,4141]},{"teal":4149,"source":994,"pc":[4142]},{"teal":4150,"source":994,"pc":[4143]},{"teal":4151,"source":994,"pc":[4144]},{"teal":4152,"source":994,"pc":[4145,4146]},{"teal":4153,"source":994,"pc":[4147]},{"teal":4156,"source":994,"errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[4148]},{"teal":4157,"source":994,"pc":[4149,4150]},{"teal":4158,"source":994,"pc":[4151]},{"teal":4159,"source":994,"pc":[4152]},{"teal":4160,"source":994,"pc":[4153]},{"teal":4161,"source":994,"pc":[4154]},{"teal":4162,"source":994,"pc":[4155,4156]},{"teal":4163,"source":994,"pc":[4157]},{"teal":4164,"source":994,"pc":[4158]},{"teal":4165,"source":994,"pc":[4159]},{"teal":4166,"source":994,"pc":[4160,4161]},{"teal":4171,"source":995,"pc":[4162,4163]},{"teal":4172,"source":995,"pc":[4164,4165]},{"teal":4173,"source":995,"pc":[4166]},{"teal":4174,"source":995,"pc":[4167,4168,4169]},{"teal":4181,"source":1000,"pc":[4170,4171]},{"teal":4182,"source":1000,"pc":[4172]},{"teal":4183,"source":1000,"pc":[4173]},{"teal":4184,"source":1000,"pc":[4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191]},{"teal":4185,"source":1000,"pc":[4192]},{"teal":4186,"source":1000,"pc":[4193,4194]},{"teal":4187,"source":1000,"pc":[4195]},{"teal":4188,"source":1001,"pc":[4196,4197]},{"teal":4189,"source":1001,"pc":[4198,4199]},{"teal":4190,"source":1001,"pc":[4200]},{"teal":4191,"source":1000,"pc":[4201]},{"teal":4192,"source":1000,"pc":[4202]},{"teal":4193,"source":1000,"pc":[4203]},{"teal":4194,"source":1000,"pc":[4204,4205]},{"teal":4195,"source":1000,"pc":[4206]},{"teal":4198,"source":1000,"errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[4207]},{"teal":4199,"source":1000,"pc":[4208,4209]},{"teal":4200,"source":1000,"pc":[4210]},{"teal":4201,"source":1000,"pc":[4211]},{"teal":4202,"source":1000,"pc":[4212]},{"teal":4203,"source":1000,"pc":[4213]},{"teal":4204,"source":1000,"pc":[4214,4215]},{"teal":4205,"source":1000,"pc":[4216]},{"teal":4206,"source":1000,"pc":[4217]},{"teal":4207,"source":1000,"pc":[4218]},{"teal":4208,"source":999,"pc":[4219,4220]},{"teal":4212,"source":1003,"pc":[4221,4222,4223,4224,4225,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238]},{"teal":4213,"source":1003,"pc":[4239,4240]},{"teal":4218,"source":1005,"pc":[4241,4242]},{"teal":4219,"source":1005,"pc":[4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260]},{"teal":4220,"source":1005,"pc":[4261]},{"teal":4221,"source":1005,"pc":[4262,4263,4264]},{"teal":4226,"source":1006,"pc":[4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282]},{"teal":4227,"source":1006,"pc":[4283,4284]},{"teal":4234,"source":1008,"pc":[4285,4286]},{"teal":4235,"source":1008,"pc":[4287]},{"teal":4236,"source":1009,"pc":[4288]},{"teal":4237,"source":1009,"pc":[4289,4290]},{"teal":4238,"source":1009,"pc":[4291,4292]},{"teal":4239,"source":1009,"pc":[4293]},{"teal":4240,"source":1009,"pc":[4294]},{"teal":4241,"source":1009,"pc":[4295,4296]},{"teal":4242,"source":1009,"pc":[4297]},{"teal":4243,"source":1010,"pc":[4298,4299]},{"teal":4244,"source":1010,"pc":[4300,4301]},{"teal":4245,"source":1010,"pc":[4302]},{"teal":4246,"source":1010,"pc":[4303,4304]},{"teal":4247,"source":1010,"pc":[4305]},{"teal":4248,"source":1009,"pc":[4306]},{"teal":4249,"source":1009,"pc":[4307]},{"teal":4250,"source":1009,"pc":[4308]},{"teal":4251,"source":1009,"pc":[4309,4310]},{"teal":4252,"source":1009,"pc":[4311]},{"teal":4255,"source":1009,"errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4312]},{"teal":4256,"source":1009,"pc":[4313,4314]},{"teal":4257,"source":1009,"pc":[4315]},{"teal":4258,"source":1009,"pc":[4316]},{"teal":4259,"source":1009,"pc":[4317]},{"teal":4260,"source":1009,"pc":[4318]},{"teal":4261,"source":1009,"pc":[4319,4320]},{"teal":4262,"source":1009,"pc":[4321]},{"teal":4263,"source":1009,"pc":[4322]},{"teal":4264,"source":1009,"pc":[4323]},{"teal":4265,"source":1008,"pc":[4324]},{"teal":4270,"source":1014,"pc":[4325,4326,4327]},{"teal":4274,"source":1015,"pc":[4328,4329]},{"teal":4275,"source":1015,"pc":[4330,4331]},{"teal":4276,"source":1015,"pc":[4332]},{"teal":4277,"source":1015,"pc":[4333]},{"teal":4278,"source":1015,"pc":[4334,4335]},{"teal":4279,"source":1015,"pc":[4336]},{"teal":4280,"source":1015,"pc":[4337]},{"teal":4281,"source":1015,"pc":[4338]},{"teal":4282,"source":1015,"pc":[4339]},{"teal":4283,"source":1015,"pc":[4340]},{"teal":4284,"source":1015,"pc":[4341,4342]},{"teal":4285,"source":1015,"pc":[4343]},{"teal":4288,"source":1015,"errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4344]},{"teal":4289,"source":1015,"pc":[4345,4346]},{"teal":4290,"source":1015,"pc":[4347]},{"teal":4291,"source":1015,"pc":[4348]},{"teal":4292,"source":1015,"pc":[4349]},{"teal":4293,"source":1015,"pc":[4350]},{"teal":4294,"source":1015,"pc":[4351,4352]},{"teal":4295,"source":1015,"pc":[4353]},{"teal":4296,"source":1015,"pc":[4354]},{"teal":4297,"source":1015,"pc":[4355]},{"teal":4298,"source":1015,"pc":[4356]},{"teal":4302,"source":1016,"pc":[4357,4358]},{"teal":4303,"source":1016,"pc":[4359]},{"teal":4304,"source":1016,"pc":[4360]},{"teal":4308,"source":1017,"pc":[4361,4362]},{"teal":4309,"source":1017,"pc":[4363,4364]},{"teal":4310,"source":1017,"pc":[4365,4366]},{"teal":4311,"source":1017,"pc":[4367,4368]},{"teal":4312,"source":1017,"pc":[4369]},{"teal":4313,"source":1017,"pc":[4370]},{"teal":4314,"source":1017,"pc":[4371]},{"teal":4315,"source":1017,"pc":[4372]},{"teal":4318,"source":987,"pc":[4373]},{"teal":4322,"source":1021,"pc":[4374,4375,4376]},{"teal":4325,"source":1021,"pc":[4377,4378]},{"teal":4330,"source":1026,"pc":[4379,4380]},{"teal":4331,"source":1026,"pc":[4381,4382]},{"teal":4332,"source":1026,"pc":[4383]},{"teal":4333,"source":1026,"pc":[4384,4385,4386]},{"teal":4338,"source":1028,"pc":[4387,4388]},{"teal":4339,"source":1028,"pc":[4389,4390]},{"teal":4340,"source":1028,"pc":[4391]},{"teal":4344,"source":1029,"pc":[4392]},{"teal":4350,"source":1033,"pc":[4393,4394]},{"teal":4351,"source":1033,"pc":[4395]},{"teal":4352,"source":1033,"pc":[4396]},{"teal":4353,"source":1033,"pc":[4397,4398]},{"teal":4354,"source":1033,"pc":[4399,4400]},{"teal":4355,"source":1033,"pc":[4401,4402]},{"teal":4356,"source":1033,"pc":[4403]},{"teal":4357,"source":1033,"pc":[4404,4405]},{"teal":4358,"source":1033,"pc":[4406]},{"teal":4359,"source":1032,"pc":[4407,4408]},{"teal":4364,"source":1034,"pc":[4409,4410]},{"teal":4365,"source":1034,"pc":[4411]},{"teal":4366,"source":1034,"pc":[4412]},{"teal":4367,"source":1034,"pc":[4413,4414,4415]},{"teal":4372,"source":1036,"pc":[4416,4417]},{"teal":4373,"source":1036,"pc":[4418,4419]},{"teal":4374,"source":1036,"pc":[4420]},{"teal":4378,"source":1037,"pc":[4421]},{"teal":4383,"source":1042,"pc":[4422,4423]},{"teal":4384,"source":1042,"pc":[4424,4425,4426,4427]},{"teal":4385,"source":1042,"pc":[4428,4429]},{"teal":4386,"source":1042,"pc":[4430]},{"teal":4387,"source":1042,"pc":[4431]},{"teal":4388,"source":1021,"pc":[4432]},{"teal":4391,"source":37,"pc":[4433,4434,4435,4436,4437,4438]},{"teal":4392,"source":37,"pc":[4439,4440,4441]},{"teal":4393,"source":37,"pc":[4442,4443,4444,4445]},{"teal":4396,"source":37,"errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4446]},{"teal":4399,"source":37,"pc":[4447,4448,4449,4450,4451,4452]},{"teal":4400,"source":37,"pc":[4453,4454,4455,4456,4457,4458]},{"teal":4401,"source":37,"pc":[4459,4460,4461,4462,4463,4464]},{"teal":4402,"source":37,"pc":[4465,4466,4467,4468,4469,4470]},{"teal":4403,"source":37,"pc":[4471,4472,4473,4474,4475,4476]},{"teal":4404,"source":37,"pc":[4477,4478,4479,4480,4481,4482]},{"teal":4405,"source":37,"pc":[4483,4484,4485,4486,4487,4488]},{"teal":4406,"source":37,"pc":[4489,4490,4491,4492,4493,4494]},{"teal":4407,"source":37,"pc":[4495,4496,4497,4498,4499,4500]},{"teal":4408,"source":37,"pc":[4501,4502,4503,4504,4505,4506]},{"teal":4409,"source":37,"pc":[4507,4508,4509,4510,4511,4512]},{"teal":4410,"source":37,"pc":[4513,4514,4515,4516,4517,4518]},{"teal":4411,"source":37,"pc":[4519,4520]},{"teal":4412,"source":37,"pc":[4521,4522,4523]},{"teal":4413,"source":37,"pc":[4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551]},{"teal":4416,"source":37,"errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4552]}],"clear":[]},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gbWluRW50cnlTdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gY3JlYXRpbmdDb250cmFjdElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbihjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElELCB2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCwgbWluRW50cnlTdGFrZTogdWludDY0KTogdm9pZAovLwovLyBJbml0aWFsaXplIHRoZSBzdGFraW5nIHBvb2wgdy8gb3duZXIgYW5kIG1hbmFnZXIsIGJ1dCBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QuCi8vIEBwYXJhbSB7dWludDY0fSBjcmVhdGluZ0NvbnRyYWN0SWQgLSBpZCBvZiBjb250cmFjdCB0aGF0IGNvbnN0cnVjdGVkIHVzIC0gdGhlIHZhbGlkYXRvciBhcHBsaWNhdGlvbiAoc2luZ2xlIGdsb2JhbCBpbnN0YW5jZSkKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIC0gaWQgb2YgdmFsaWRhdG9yIHdlJ3JlIGEgc3Rha2luZyBwb29sIG9mCi8vIEBwYXJhbSB7dWludDY0fSBwb29sSWQgLSB3aGljaCBwb29sIGlkIGFyZSB3ZQovLyBAcGFyYW0ge3VpbnQ2NH0gbWluRW50cnlTdGFrZSAtIG1pbmltdW0gYW1vdW50IHRvIGJlIGluIHBvb2wsIGJ1dCBhbHNvIG1pbmltdW0gYW1vdW50IGJhbGFuY2UgY2FuJ3QgZ28gYmVsb3cgKHdpdGhvdXQgcmVtb3ZpbmcgYWxsISkKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byA0IDAKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyCgkvLyBjcmVhdGluZ0NvbnRyYWN0SWQgPT09IEFwcElELmZyb21VaW50NjQoMCkKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglpbnQgMAoJPT0KCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgPT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50IDAKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDUKCS8vIGFzc2VydChwb29sSWQgPT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgk9PQoJYXNzZXJ0CgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDcKCS8vIGFzc2VydCh2YWxpZGF0b3JJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwOAoJLy8gYXNzZXJ0KHBvb2xJZCAhPT0gMCkKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50IDAKCSE9Cglhc3NlcnQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEwCgkvLyBhc3NlcnQobWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC00IC8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJaW50IDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTExCgkvLyB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSA9IGNyZWF0aW5nQ29udHJhY3RJZAoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJZnJhbWVfZGlnIC0xIC8vIGNyZWF0aW5nQ29udHJhY3RJZDogQXBwSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTEyCgkvLyB0aGlzLnZhbGlkYXRvcklkLnZhbHVlID0gdmFsaWRhdG9ySWQKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMwoJLy8gdGhpcy5wb29sSWQudmFsdWUgPSBwb29sSWQKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWZyYW1lX2RpZyAtMyAvLyBwb29sSWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTQKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWludCAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIwCgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMQoJLy8gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlID0gZ2xvYmFscy5yb3VuZCAtIChnbG9iYWxzLnJvdW5kICUgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUpCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglnbG9iYWwgUm91bmQKCWdsb2JhbCBSb3VuZAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTIyCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAwIGFzIHVpbnQxMjgKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjMKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEzNgoJLy8gcmV0dXJuIFNDQk9YX1BFUkJPWCArIHRvdGFsTnVtQnl0ZXMgKiBTQ0JPWF9QRVJCWVRFCglpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJaW50IDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMCAobWJyUGF5bWVudCkgZm9yIGluaXRTdG9yYWdlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgaW5pdFN0b3JhZ2UocGF5KXZvaWQKCWNhbGxzdWIgaW5pdFN0b3JhZ2UKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdG9yYWdlKG1iclBheW1lbnQ6IFBheVR4bik6IHZvaWQKLy8KLy8gQ2FsbGVkIGFmdGVyIHdlJ3JlIGNyZWF0ZWQgYW5kIHRoZW4gZnVuZGVkLCBzbyB3ZSBjYW4gY3JlYXRlIG91ciBsYXJnZSBzdGFrZXJzIGxlZGdlciBzdG9yYWdlCi8vIENhbGxlciBoYXMgdG8gZ2V0IE1CUiBhbW91bnRzIGZyb20gVmFsaWRhdG9yUmVnaXN0cnkgdG8ga25vdyBob3cgbXVjaCB0byBmdW5kIHVzIHRvIGNvdmVyIHRoZSBib3ggc3RvcmFnZSBjb3N0Ci8vIElmIHRoaXMgaXMgcG9vbCAxIEFORCB0aGUgdmFsaWRhdG9yIGhhcyBzcGVjaWZpZWQgYSByZXdhcmQgdG9rZW4sIG9wdC1pbiB0byB0aGF0IHRva2VuCi8vIHNvIHRoYXQgdGhlIHZhbGlkYXRvciBjYW4gc2VlZCB0aGUgcG9vbCB3aXRoIGZ1dHVyZSByZXdhcmRzIG9mIHRoYXQgdG9rZW4uCi8vIEBwYXJhbSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgc3Rha2luZyBwb29scycgc3RvcmFnZQppbml0U3RvcmFnZToKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDMKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNDcKCS8vIGFzc2VydCghdGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkJykKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTUyCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU0CgkvLyBpc1Rva2VuRWxpZ2libGUgPSB2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCAhPT0gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWludCAwCgkhPQoJZnJhbWVfYnVyeSAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NQoJLy8gZXh0cmFNQlIgPSBpc1Rva2VuRWxpZ2libGUgJiYgdGhpcy5wb29sSWQudmFsdWUgPT09IDEgPyBBU1NFVF9IT0xESU5HX0ZFRSA6IDAKCWZyYW1lX2RpZyAxIC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJZHVwCglieiAqc2tpcF9hbmQwCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgkmJgoKKnNraXBfYW5kMDoKCWJ6ICp0ZXJuYXJ5MF9mYWxzZQoJaW50IDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnQgMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnQgMTAwMDAwCglmcmFtZV9kaWcgMiAvLyBleHRyYU1CUjogdWludDY0CgkrCglpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWZyYW1lX2J1cnkgMyAvLyBQb29sSW5pdE1icjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYyCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBQb29sSW5pdE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6IlBvb2xJbml0TWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2MwoJLy8gdGhpcy5zdGFrZXJzLmNyZWF0ZSgpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCglpbnQgMTI4MDAKCWJveF9jcmVhdGUKCXBvcAoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjUKCS8vIGlzVG9rZW5FbGlnaWJsZSAmJiB0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMQoJZnJhbWVfZGlnIDEgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCglkdXAKCWJ6ICpza2lwX2FuZDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjkKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNzAKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjFfZW5kOgoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9hZGRTdGFrZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnQgMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50IHBheQoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZWRBbW91bnRQYXltZW50KSBmb3IgYWRkU3Rha2UgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgYWRkU3Rha2UKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHN0YWtlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBBZGRzIHN0YWtlIHRvIHRoZSBnaXZlbiBhY2NvdW50LgovLyBDYW4gT05MWSBiZSBjYWxsZWQgYnkgdGhlIHZhbGlkYXRvciBjb250cmFjdCB0aGF0IGNyZWF0ZWQgdXMKLy8gTXVzdCByZWNlaXZlIHBheW1lbnQgZnJvbSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciBhbW91bnQgYmVpbmcgc3Rha2VkLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCBwcmlvciBwYXltZW50IGNvbWluZyBmcm9tIHZhbGlkYXRvciBjb250cmFjdCB0byB1cyBvbiBiZWhhbGYgb2Ygc3Rha2VyLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhY2NvdW50IGFkZGluZyBuZXcgc3Rha2UKLy8gQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdGFraW5nIHBvb2wgaXMgZnVsbC4KLy8gQHJldHVybnMge3VpbnQ2NH0gbmV3ICdlbnRyeSByb3VuZCcgcm91bmQgbnVtYmVyIG9mIHN0YWtlIGFkZAphZGRTdGFrZToKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxODYKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMuZXhpc3RzLCAnc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QnKQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyBzdGFrZSBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTkzCgkvLyBhc3NlcnQoc3Rha2VyICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTk2CgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjAwCgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50LAoJLy8gICAgICAgICB9KQoJLy8gdmVyaWZ5IHNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSByZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgUmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoicmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50In0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIwOQoJLy8gZW50cnlSb3VuZCA9IGdsb2JhbHMucm91bmQgKyBBTEdPUkFORF9TVEFLSU5HX0JMT0NLX0RFTEFZCglnbG9iYWwgUm91bmQKCWludCAzMjAKCSsKCWZyYW1lX2J1cnkgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTAKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJKwoJZ2xvYmFsIFJvdW5kCgktCglmcmFtZV9idXJ5IDIgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9CgkvLyAgICAgICAgICAgICB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWl0b2IKCWZyYW1lX2RpZyAyIC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJYisKCWR1cAoJYml0bGVuCglpbnQgMTI4Cgk8PQoKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gaTogdWludDY0CgoqZm9yXzA6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMF9lbmQKCgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjNfZW5kCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMjYKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNwoJLy8gY21wU3Rha2VyLmVudHJ5Um91bmQgPSBlbnRyeVJvdW5kCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzIKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWIgKmFkZFN0YWtlKnJldHVybgoKKmlmM19lbmQ6CgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIGNtcFN0YWtlci5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAwCgk9PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgNCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDI6CglieiAqaWY0X2VuZAoKCS8vICppZjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjRfZW5kOgoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMyAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzOQoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBTdGFraW5nIHBvb2wgZnVsbAoJZXJyCgoqaWY1X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI0NgoJLy8gYXNzZXJ0KHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50ID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcpCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWJ5dGUgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAvLyAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ4CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXS5hY2NvdW50ID09PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnQgMQoJLQoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgMzIKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglnbG9iYWwgWmVyb0FkZHJlc3MKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDkKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSB7CgkvLyAgICAgICAgICAgICBhY2NvdW50OiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBiYWxhbmNlOiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCwKCS8vICAgICAgICAgICAgIHRvdGFsUmV3YXJkZWQ6IDAsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkJhbGFuY2U6IDAsCgkvLyAgICAgICAgICAgICBlbnRyeVJvdW5kOiBlbnRyeVJvdW5kLAoJLy8gICAgICAgICB9CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludCAxCgktCglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NgoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlICs9IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNTcKCS8vIHJldHVybiBlbnRyeVJvdW5kCglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCiphZGRTdGFrZSpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZToKCS8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIHJlbW92ZVN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQKCWNhbGxzdWIgcmVtb3ZlU3Rha2UKCWludCAxCglyZXR1cm4KCi8vIHJlbW92ZVN0YWtlKHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9VbnN0YWtlOiB1aW50NjQpOiB2b2lkCi8vCi8vIFJlbW92ZXMgc3Rha2Ugb24gYmVoYWxmIG9mIGNhbGxlciAocmVtb3Zpbmcgb3duIHN0YWtlKS4gIElmIGFueSB0b2tlbiByZXdhcmRzIGV4aXN0LCB0aG9zZSBhcmUgYWx3YXlzIHNlbnQgaW4KLy8gZnVsbC4gQWxzbyBub3RpZmllcyB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0IGZvciB0aGlzIHBvb2xzIHZhbGlkYXRvciBvZiB0aGUgc3Rha2VyIC8gYmFsYW5jZSBjaGFuZ2VzLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIGFjY291bnQgdG8gcmVtb3ZlLiAgbm9ybWFsbHkgc2FtZSBhcyBzZW5kZXIsIGJ1dCB0aGUgdmFsaWRhdG9yIG93bmVyIG9yIG1hbmFnZXIgY2FuIGFsc28gY2FsbAovLyB0aGlzIHRvIHJlbW92ZSB0aGUgc3BlY2lmaWVkIHN0YWtlciBleHBsaWNpdGx5LiBUaGUgcmVtb3ZlZCBzdGFrZSBNVVNUIG9ubHkgZ28gdG8gdGhlIHN0YWtlciBvZiBjb3Vyc2UuICBUaGlzIGlzCi8vIHNvIGEgdmFsaWRhdG9yIGNhbiBzaHV0IGRvd24gYSBwb29vbCBhbmQgcmVmdW5kIHRoZSBzdGFrZXJzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBraWNrIG91dCBzdGFrZXJzIHdobyBubyBsb25nZXIKLy8gbWVldCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyAoZGV0ZXJtaW5lZCBieSB0aGUgbm9kZSBkYWVtb24pLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9VbnN0YWtlIC0gVGhlIGFtb3VudCBvZiBzdGFrZSB0byBiZSByZW1vdmVkLiAgU3BlY2lmeSAwIHRvIHJlbW92ZSBhbGwgc3Rha2UuCi8vIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWNjb3VudCBoYXMgaW5zdWZmaWNpZW50IGJhbGFuY2Ugb3IgaWYgdGhlIGFjY291bnQgaXMgbm90IGZvdW5kLgpyZW1vdmVTdGFrZToKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDYKCgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjc0CgkvLyBzdGFrZXIgIT09IHRoaXMudHhuLnNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJIT0KCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwKCS8vICAgICAgICAgICAgICAgICAnSWYgc3Rha2VyIGlzIG5vdCBzZW5kZXIgaW4gcmVtb3ZlU3Rha2UgY2FsbCwgdGhlbiBzZW5kZXIgTVVTVCBiZSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICAgICApCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCippZjZfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgxCgkvLyB0aGlzLmNoZWNrSWZCaW5DbG9zZWQoKQoJY2FsbHN1YiBjaGVja0lmQmluQ2xvc2VkCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjgzCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfMV9lbmQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg0CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg4CgkvLyBjbXBTdGFrZXIuYWNjb3VudCA9PT0gc3Rha2VyCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJPT0KCWJ6ICppZjhfZW5kCgoJLy8gKmlmOF9jb25zZXF1ZW50CgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mjg5CgkvLyBhbW91bnRUb1Vuc3Rha2UgPT09IDAKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWY5X2VuZAoKCS8vICppZjlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjkxCgkvLyBhbW91bnRUb1Vuc3Rha2UgPSBjbXBTdGFrZXIuYmFsYW5jZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2J1cnkgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCippZjlfZW5kOgoJLy8gKmlmMTBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTMKCS8vIGNtcFN0YWtlci5iYWxhbmNlIDwgYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0Cgk8CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZQoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTYKCS8vIGNtcFN0YWtlci5iYWxhbmNlIC09IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMzIgLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTkKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA+IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglpbnQgMAoJPgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDIKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzA0CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwNQoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMyAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxMl9lbmQKCippZjEyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjIKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjMKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTJfZW5kOgoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzI4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgICAgIGNtcFN0YWtlci5iYWxhbmNlID09PSAwIHx8IGNtcFN0YWtlci5iYWxhbmNlID49IHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkJywKCS8vICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJaW50IDAKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglieXRlIDB4NmQ2OTZlNDU2ZTc0NzI3OTUzNzQ2MTZiNjUgLy8gIm1pbkVudHJ5U3Rha2UiCglhcHBfZ2xvYmFsX2dldAoJPj0KCXx8Cgoqc2tpcF9vcjA6CgkvLyBjYW5ub3QgcmVkdWNlIGJhbGFuY2UgYmVsb3cgbWluaW11bSBhbGxvd2VkIHN0YWtlIHVubGVzcyBhbGwgaXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM2CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICBub3RlOiAndW5zdGFrZWQnLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJYnl0ZSAweDc1NmU3Mzc0NjE2YjY1NjQgLy8gInVuc3Rha2VkIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MQoJLy8gc3Rha2VyUmVtb3ZlZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCgkvLyAqaWYxM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0MgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNDUKCS8vIGNtcFN0YWtlci5hY2NvdW50ID0gZ2xvYmFscy56ZXJvQWRkcmVzcwoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgMAoJZ2xvYmFsIFplcm9BZGRyZXNzCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ4CgkvLyBzdGFrZXJSZW1vdmVkID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgNCAvLyBzdGFrZXJSZW1vdmVkOiBib29sCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTEKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlIDB4NjI2OTZlNTI2Zjc1NmU2NDUzNzQ2MTcyNzQgLy8gImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzU0CgkvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOCA9IChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyA1IC8vIHJvdW5kc0xlZnRJbkJpbjogdWludDY0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKGFtb3VudFRvVW5zdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgNiAvLyBzdWJ0cmFjdEFtb3VudDogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQKCWJ5dGUgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYxCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM2MgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyA0IC8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludCAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTEKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50IDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjE3X2Vsc2UKCgkvLyAqaWYxN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTkKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDAxCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA0IC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA2CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQwNwoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpCglmcmFtZV9kaWcgNCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDgKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDkKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTEKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTIKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYiAqaWYxN19lbmQKCippZjE3X2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTcKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MTgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MjcKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc3Rha2VSZW1vdmVkPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvLyBubyBhbGdvIHJlbW92ZWQKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBzdGFrZXIgaXNuJ3QgYmVpbmcgcmVtb3ZlZC4KCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDI4CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJY29uY2F0Cgl0eG5hIEFwcGxpY2F0aW9ucyAwCglpdG9iCgljb25jYXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlckluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VySW5mbyhhZGRyZXNzKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0U3Rha2VySW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFN0YWtlckluZm8oc3Rha2VyOiBBZGRyZXNzKTogU3Rha2VkSW5mbwovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHJldHVybnMge1N0YWtlZEluZm99IC0gVGhlIHN0YWtlZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHN0YWtlci4KLy8gQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHN0YWtlcidzIGFjY291bnQgaXMgbm90IGZvdW5kLgpnZXRTdGFrZXJJbmZvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmMThfZW5kCgoJLy8gKmlmMThfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDU0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxOF9lbmQ6CgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NgoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCAzMgoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50IDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCA2NAoJYnl0ZSAweDczNzQ2MTZiNjU3MjczIC8vICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKmdldFN0YWtlckluZm8qcmV0dXJuCgoqaWYxOV9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCgoqZ2V0U3Rha2VySW5mbypyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9wYXlUb2tlblJld2FyZDoKCS8vIGFtb3VudFRvU2VuZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChzdGFrZXIpIGZvciBwYXlUb2tlblJld2FyZCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBwYXlUb2tlblJld2FyZAoJaW50IDEKCXJldHVybgoKLy8gcGF5VG9rZW5SZXdhcmQoc3Rha2VyOiBBZGRyZXNzLCByZXdhcmRUb2tlbjogdWludDY0LCBhbW91bnRUb1NlbmQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gW0ludGVybmFsIHByb3RvY29sIG1ldGhvZF0gUmVtb3ZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiAnY29tbXVuaXR5IHRva2VuJyByZXdhcmRzIGZvciBhIHN0YWtlci4KLy8gVGhpcyBjYW4gT05MWSBiZSBjYWxsZWQgYnkgb3VyIHZhbGlkYXRvciBhbmQgb25seSBpZiB3ZSdyZSBwb29sIDEgLSB3aXRoIHRoZSB0b2tlbi4KLy8gTm90ZTogdGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIGFzIHBhcnQgb2YgT1dORVIgd2FudGluZyB0byBzZW5kIHRoZSByZXdhcmQgdG9rZW5zCi8vIHNvbWV3aGVyZSBlbHNlIChpZSBpZiB0aGV5J3JlIHN1bnNldHRpbmcgdGhlaXIgdmFsaWRhdG9yIGFuZCBuZWVkIHRoZSByZXdhcmQgdG9rZW5zIGJhY2spLgovLyBJdCdzIHVwIHRvIHRoZSB2YWxpZGF0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGJhbGFuY2UgaW4gcmV3YXJkVG9rZW5IZWxkQmFjayBpcyBob25vcmVkLgovLyBAcGFyYW0gc3Rha2VyIC0gdGhlIHN0YWtlciBhY2NvdW50IHRvIHNlbmQgcmV3YXJkcyB0bwovLyBAcGFyYW0gcmV3YXJkVG9rZW4gLSBpZCBvZiByZXdhcmQgdG9rZW4gKHRvIGF2b2lkIHJlLWVudHJhbmN5IGluIGNhbGxpbmcgdmFsaWRhdG9yIGJhY2sgdG8gZ2V0IGlkKQovLyBAcGFyYW0gYW1vdW50VG9TZW5kIC0gYW1vdW50IHRvIHNlbmQgdGhlIHN0YWtlciAodGhlcmUgaXMgc2lnbmlmaWNhbnQgdHJ1c3QgaGVyZSghKSAtIGFsc28gd2h5IG9ubHkgdmFsaWRhdG9yIGNhbiBjYWxsIHVzCnBheVRva2VuUmV3YXJkOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICAndGhpcyBjYW4gb25seSBiZSBjYWxsZWQgdmlhIHRoZSB2YWxpZGF0b3IgY29udHJhY3QnLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzkKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ211c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMnKQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgk9PQoKCS8vIG11c3QgYmUgcG9vbCAxIGluIG9yZGVyIHRvIGJlIGNhbGxlZCB0byBwYXkgb3V0IHRva2VuIHJld2FyZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuICE9PSAwLCAnY2FuIG9ubHkgY2xhaW0gdG9rZW4gcmV3YXJkcyBmcm9tIHZhbGlkYXRvciB0aGF0IGhhcyB0aGVtJykKCWZyYW1lX2RpZyAtMiAvLyByZXdhcmRUb2tlbjogdWludDY0CglpbnQgMAoJIT0KCgkvLyBjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4MwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pLAoJLy8gICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZCwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW4pCglmcmFtZV9kaWcgLTIgLy8gcmV3YXJkVG9rZW46IHVpbnQ2NAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODUKCS8vIGFzc2V0UmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg2CgkvLyBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCiphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXI6CgkvLyBhbGdvZFZlcjogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGV4ZWN1dGUgdXBkYXRlQWxnb2RWZXIoc3RyaW5nKXZvaWQKCWNhbGxzdWIgdXBkYXRlQWxnb2RWZXIKCWludCAxCglyZXR1cm4KCi8vIHVwZGF0ZUFsZ29kVmVyKGFsZ29kVmVyOiBzdHJpbmcpOiB2b2lkCi8vCi8vIFVwZGF0ZSB0aGUgKGhvbm9yIHN5c3RlbSkgYWxnb2QgdmVyc2lvbiBmb3IgdGhlIG5vZGUgYXNzb2NpYXRlZCB0byB0aGlzIHBvb2wuICBUaGUgbm9kZSBtYW5hZ2VtZW50IGRhZW1vbgovLyBzaG91bGQgY29tcGFyZSBpdHMgY3VycmVudCBub2RlcyB2ZXJzaW9uIHRvIHRoZSB2ZXJzaW9uIHN0b3JlZCBpbiBnbG9iYWwgc3RhdGUsIHVwZGF0aW5nIHdoZW4gZGlmZmVyZW50LgovLyBUaGUgcmV0aSBub2RlIGRhZW1vbiBjb21wb3NlcyBpdHMgb3duIHZlcnNpb24gc3RyaW5nIHVzaW5nIGZvcm1hdDoKLy8ge21ham9yfS57bWlub3J9LntidWlsZH0ge2JyYW5jaH0gW3tjb21taXQgaGFzaH1dLAovLyBpZTogMy4yMi4wIHJlbC9zdGFibGUgWzZiNTA4OTc1XQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0FMTCBdCi8vIEBwYXJhbSB7c3RyaW5nfSBhbGdvZFZlciAtIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFsZ29yYW5kIG5vZGUgZGFlbW9uIHZlcnNpb24gKHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biBtZXRhIHZlcnNpb24pCnVwZGF0ZUFsZ29kVmVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAwCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MDEKCS8vIHRoaXMuYWxnb2RWZXIudmFsdWUgPSBhbGdvZFZlcgoJYnl0ZSAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50IDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MTYKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjMKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB2YWxpZGF0b3JDb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2OSA0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI0CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAyIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjUKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyOAoJLy8gbGFzdFBheW91dEVwb2NoID0gdGhpcy5sYXN0UGF5b3V0LnZhbHVlIC0gKHRoaXMubGFzdFBheW91dC52YWx1ZSAlIGVwb2NoUm91bmRMZW5ndGgpCglieXRlIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIGxhc3RQYXlvdXRFcG9jaDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTMwCgkvLyBhc3NlcnQobGFzdFBheW91dEVwb2NoICE9PSB0aGlzRXBvY2hCZWdpbiwgImNhbid0IGNhbGwgZXBvY2hCYWxhbmNlVXBkYXRlIGluIHNhbWUgZXBvY2ggYXMgcHJpb3IgY2FsbCIpCglmcmFtZV9kaWcgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMgoJLy8gdGhpcy5jaGVja0lmQmluQ2xvc2VkKCkKCWNhbGxzdWIgY2hlY2tJZkJpbkNsb3NlZAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNQoJLy8gdGhpcy5sYXN0UGF5b3V0LnZhbHVlID0gY3VyUm91bmQKCWJ5dGUgMHg2YzYxNzM3NDUwNjE3OTZmNzU3NCAvLyAibGFzdFBheW91dCIKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTM2CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlICs9IDEKCWJ5dGUgMHg2NTcwNmY2MzY4NGU3NTZkNjI2NTcyIC8vICJlcG9jaE51bWJlciIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJKwoJYnl0ZSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgLy8gImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50IDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkhPQoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTUxCgkvLyBwb29sT25lQXBwSUQgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFBvb2xBcHBJZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTMKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBwb29sT25lQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1NQoJLy8gcG9vbE9uZUFkZHJlc3MgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkuYWRkcmVzcwoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfYnVyeSA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJPT0KCWJ6ICppZjIyX2Vsc2UKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjEKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnNldFRva2VuUGF5b3V0UmF0aW8+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTYyCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTY4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xPbmVBcHBJRCkKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjkKCS8vIG1ldGhvZEFyZ3M6IFt7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH1dCglieXRlIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU3NwoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJLQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg4CgkvLyBhbGdvU2F0dXJhdGlvbkFtdCA9IHRoaXMuYWxnb1NhdHVyYXRpb25MZXZlbCgpCgljYWxsc3ViIGFsZ29TYXR1cmF0aW9uTGV2ZWwKCWZyYW1lX2J1cnkgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoKCS8vICppZjIzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk2CgkvLyB2YWxpZGF0b3JTdGF0ZS50b3RhbEFsZ29TdGFrZWQgPiBhbGdvU2F0dXJhdGlvbkFtdAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0Cgk+CglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1OTcKCS8vIGlzUG9vbFNhdHVyYXRlZCA9IHRydWUKCWludCAxCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjAzCgkvLyB0b2tlblJld2FyZEF2YWlsID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA0CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNQoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA2CgkvLyBleGNlc3NUb0ZlZVNpbmsgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA3CgkvLyBpc1Rva2VuRWxpZ2libGUKCWZyYW1lX2RpZyA1IC8vIGlzVG9rZW5FbGlnaWJsZTogYm9vbAoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjA4CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICAgICAgcG9vbE9uZUFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEwIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTMKCS8vIHRva2VuUmV3YXJkQmFsID49IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQKCWZyYW1lX2RpZyAxOCAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJPj0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYxOQoJLy8gb3VyUG9vbFBjdE9mV2hvbGUgPSB0b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW3RoaXMucG9vbElkLnZhbHVlIC0gMV0KCWZyYW1lX2RpZyA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCglpbnQgMAoJYnl0ZSAweDcwNmY2ZjZjNDk2NCAvLyAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgktCglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2J1cnkgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYyMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IHdpZGVSYXRpbyhbdmFsaWRhdG9yQ29uZmlnLnJld2FyZFBlclBheW91dCwgb3VyUG9vbFBjdE9mV2hvbGVdLCBbMV8wMDBfMDAwXSkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE2MSA4CglidG9pCglmcmFtZV9kaWcgMTkgLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKKmlmMjVfZW5kOgoKKmlmMjRfZW5kOgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjUKCS8vIHRva2VuUmV3YXJkQXZhaWwgPT09IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzAKCS8vIGFsZ29SZXdhcmRBdmFpbCA8IDFfMDAwXzAwMAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMV8wMDBfMDAwCgk8CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzEKCS8vIGxvZygnIXRva2VuJiYhbm9hbGdvIHRvIHBheScpCglieXRlIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnQgMAoJaW50IDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTUKCS8vIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU2CgkvLyByZWNlaXZlcjogYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS5mZWVTaW5rCgl0eG4gRmlyc3RWYWxpZAoJaW50IDEKCS0KCWJsb2NrIEJsa0ZlZVNpbmsKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTcKCS8vIG5vdGU6ICdwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rJwoJYnl0ZSAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50IDAKCWludCAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnQgMl8xMDBfMDAwCgk8CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NQoJLy8gbWFuYWdlclRvcE9mZiA9IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDwgMl8xMDBfMDAwID8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgOiAyXzEwMF8wMDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnQgMl8xMDBfMDAwCgk8CglieiAqdGVybmFyeTFfZmFsc2UKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CgliICp0ZXJuYXJ5MV9lbmQKCip0ZXJuYXJ5MV9mYWxzZToKCWludCAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODcKCS8vIGFtb3VudDogbWFuYWdlclRvcE9mZgoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODgKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcubWFuYWdlcgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODkKCS8vIG5vdGU6ICd2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcycKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50IDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NAoJLy8gYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgktCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NQoJLy8gcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTc3IDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njk2CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCcKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnQgMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50IDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCA0MDAKCTwKCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnQgNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDY0CglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnQgMTAwMAoJKgoJZnJhbWVfZGlnIDEgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgkvCglmcmFtZV9idXJ5IDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCgkvLyAqaWYzOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1OAoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjAKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnVG9rZW5SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSwgMTAwMF0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI2IC8vIG9yaWdUb2tlblJld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmMzhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzcyCgkvLyBzdGFrZXJSZXdhcmQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ0FsZ29SZXdhcmQsIHRpbWVQZXJjZW50YWdlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlLCAxMDAwXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNSAvLyBvcmlnQWxnb1Jld2FyZDogdWludDY0CgltdWx3CglmcmFtZV9kaWcgMzAgLy8gdGltZVBlcmNlbnRhZ2U6IHVpbnQ2NAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc3OAoJLy8gYWxnb1Jld2FyZEF2YWlsIC09IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODEKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDMyIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODIKCS8vIGNtcFN0YWtlci50b3RhbFJld2FyZGVkICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50IDQwIC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3ODMKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzg1CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk3CgkvLyBuZXdQb29sVG90YWxTdGFrZSA+IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMzlfZW5kCgoJLy8gKmlmMzlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoKKmZvcl81OgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50IDIwMAoJPAoJYnogKmZvcl81X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDIwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDIwMAoJPAoJYnogKmlmNDBfZW5kCgoJLy8gKmlmNDBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MDMKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgNjQKCWJ5dGUgMHg3Mzc0NjE2YjY1NzI3MyAvLyAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50IDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnQgNDggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE5CgkvLyB0b2tlblJld2FyZFBhaWRPdXQgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDM3IC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCippZjQzX2VuZDoKCS8vICppZjQ0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODIxCgkvLyBhbGdvUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludCAwCgk+CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgYWxnb1Jld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI4CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCAzMiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludCA0MCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODMwCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKKmlmNDRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODM0CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlIDB4NzM3NDYxNmI2NTcyNzMgLy8gInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl81X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Nzk5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDM0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgoqaWYzOV9lbmQ6CgoqaWYzM19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDQKCS8vIHJvdW5kc0xlZnRJbkJpbiA9IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIC0gZ2xvYmFscy5yb3VuZAoJYnl0ZSAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IC8vICJiaW5Sb3VuZFN0YXJ0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMzkgLy8gcm91bmRzTGVmdEluQmluOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NDUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGluY3JlYXNlZFN0YWtlCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ2CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPQoJLy8gICAgICAgICAgICAgdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlICsgKGluY3JlYXNlZFN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZSAweDcyNjU3NzYxNzI2NDQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInJld2FyZEFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU0CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlVXBkYXRlZFZpYVJld2FyZHM+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODU1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NgoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICBpbmNyZWFzZWRTdGFrZSwKCS8vICAgICAgICAgICAgICAgICB0b2tlblJld2FyZFBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQsCgkvLyAgICAgICAgICAgICAgICAgZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgXQoJYnl0ZSAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgLy8gInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgljb25jYXQKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWNvbmNhdAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBnb09ubGluZShwYXksYnl0ZVtdLGJ5dGVbXSxieXRlW10sdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2dvT25saW5lOgoJLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyB2b3RlTGFzdDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdm90ZUZpcnN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBzdGF0ZVByb29mUEs6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBzZWxlY3Rpb25QSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIHZvdGVQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIGZlZVBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnQgMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQga2V5cmVnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkyCgkvLyB2b3RlUEs6IHZvdGVQSwoJZnJhbWVfZGlnIC0yIC8vIHZvdGVQSzogYnl0ZXMKCWl0eG5fZmllbGQgVm90ZVBLCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkzCgkvLyBzZWxlY3Rpb25QSzogc2VsZWN0aW9uUEsKCWZyYW1lX2RpZyAtMyAvLyBzZWxlY3Rpb25QSzogYnl0ZXMKCWl0eG5fZmllbGQgU2VsZWN0aW9uUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTQKCS8vIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLCglmcmFtZV9kaWcgLTQgLy8gc3RhdGVQcm9vZlBLOiBieXRlcwoJaXR4bl9maWVsZCBTdGF0ZVByb29mUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTUKCS8vIHZvdGVGaXJzdDogdm90ZUZpcnN0CglmcmFtZV9kaWcgLTUgLy8gdm90ZUZpcnN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUZpcnN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk2CgkvLyB2b3RlTGFzdDogdm90ZUxhc3QKCWZyYW1lX2RpZyAtNiAvLyB2b3RlTGFzdDogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVMYXN0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk3CgkvLyB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbgoJZnJhbWVfZGlnIC03IC8vIHZvdGVLZXlEaWx1dGlvbjogdWludDY0CglpdHhuX2ZpZWxkIFZvdGVLZXlEaWx1dGlvbgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5OAoJLy8gZmVlOiBleHRyYUZlZQoJZnJhbWVfZGlnIDAgLy8gZXh0cmFGZWU6IHVpbnQ2NAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT2ZmbGluZSgpdm9pZAoqYWJpX3JvdXRlX2dvT2ZmbGluZToKCS8vIGV4ZWN1dGUgZ29PZmZsaW5lKCl2b2lkCgljYWxsc3ViIGdvT2ZmbGluZQoJaW50IDEKCXJldHVybgoKLy8gZ29PZmZsaW5lKCk6IHZvaWQKLy8KLy8gTWFya3MgYSBzdGFraW5nIHBvb2wga2V5IE9GRkxJTkUuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KZ29PZmZsaW5lOgoJcHJvdG8gMCAwCgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTAKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcwoJdHhuIFNlbmRlcgoJYnl0ZSAweDYzNzI2NTYxNzQ2ZjcyNDE3MDcwIC8vICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMQoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoqaWY0NV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTQKCS8vIHNlbmRPZmZsaW5lS2V5UmVnaXN0cmF0aW9uKHt9KQoJaXR4bl9iZWdpbgoJaW50IGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50IDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjQKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglieXRlIDB4NzY2NTcyNjk2Njc5NWY2ZTY2NjQ1ZjYxNjQ2NDcyIC8vICJ2ZXJpZnlfbmZkX2FkZHIiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI2CgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElkKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgcG9vbHMgIT0gMSAtIGNhbGxpbmcgVVMsIHBvb2wgIzEKLy8gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSBhcmUgaW4gZmFjdCBiZWluZyBjYWxsZWQgYnkgYW5vdGhlciBvZiBPVVIgcG9vbHMgKG5vdCB1cykKLy8gYW5kIHRoZW4gd2UnbGwgY2FsbCB0aGUgdmFsaWRhdG9yIG9uIHRoZWlyIGJlaGFsZiB0byB1cGRhdGUgdGhlIHRva2VuIHBheW91dHMKLy8gQHBhcmFtIHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR1cGxlCnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzcKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvcklkLnZhbHVlID09PSBwb29sS2V5LmlkLCAnY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhJykKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gY2FsbGVyIG11c3QgYmUgcGFydCBvZiBzYW1lIHZhbGlkYXRvciBzZXQhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzgKCS8vIGFzc2VydCh0aGlzLnBvb2xJZC52YWx1ZSA9PT0gMSwgJ2NhbGxlZSBtdXN0IGJlIHBvb2wgMScpCglieXRlIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCT09CgoJLy8gY2FsbGVlIG11c3QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MzkKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCAhPT0gMSwgJ2NhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJIT0KCgkvLyBjYWxsZXIgbXVzdCBOT1QgYmUgcG9vbCAxCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDEKCS8vIGNhbGxlclBvb2xBcHBJRCA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0UG9vbEFwcElkPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGUgMHg2MzcyNjU2MTc0NmY3MjQxNzA3MCAvLyAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDkKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTUwCgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCk6IGJvb2xlYW4KaXNPd25lck9yTWFuYWdlckNhbGxlcjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU1CgkvLyBPd25lckFuZE1hbmFnZXIgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcj4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlIDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgLy8gImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU3CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NTkKCS8vIHJldHVybiB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclswXSB8fCB0aGlzLnR4bi5zZW5kZXIgPT09IE93bmVyQW5kTWFuYWdlclsxXQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAwIDMyCgk9PQoJZHVwCglibnogKnNraXBfb3IyCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCglleHRyYWN0IDMyIDMyCgk9PQoJfHwKCipza2lwX29yMjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnQgMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoKCS8vICppZjQ3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTg5CgkvLyBnbG9iYWxzLnJvdW5kID49IHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSArIChjdXJyZW50QmluU2l6ZSBhcyB1aW50NjQpCglnbG9iYWwgUm91bmQKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gY3VycmVudEJpblNpemUgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludCA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCgkrCgk+PQoJYnogKmlmNDdfZW5kCgoJLy8gKmlmNDdfY29uc2VxdWVudAoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTAKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgMzAwCgk8CglieiAqaWY0OF9lbmQKCgkvLyAqaWY0OF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTEKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGUgYjY0IENvRUIgLy8gI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50IERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjQ4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MwoJLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOCA9IGN1cnJlbnRCaW5TaXplICogKDM2NSBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNmQKCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyBjdXJyZW50QmluU2l6ZSAqICgzNjUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk0CgkvLyBhdmdTdGFrZTogdWludDEyOCA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAvIGN1cnJlbnRCaW5TaXplCglieXRlIDB4NzM3NDYxNmI2NTQxNjM2Mzc1NmQ3NTZjNjE3NDZmNzIgLy8gInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYiE9CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5OTkKCS8vIGFwcjogdWludDEyOCA9CgkvLyAgICAgICAgICAgICAgICAgICAgICgoKHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgYXMgdWludDEyOCkgKiAoMTAwMDAgYXMgdWludDEyOCkpIC8gYXZnU3Rha2UpICoKCS8vICAgICAgICAgICAgICAgICAgICAgKGFwcHJveFJvdW5kc1BlclllYXIgLyBjdXJyZW50QmluU2l6ZSkKCWJ5dGUgMHg3MjY1Nzc2MTcyNjQ0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJyZXdhcmRBY2N1bXVsYXRvciIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAKCWIqCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYi8KCWZyYW1lX2RpZyAxIC8vIGFwcHJveFJvdW5kc1BlclllYXI6IHVpbnQxMjgKCWZyYW1lX2RpZyAwIC8vIGN1cnJlbnRCaW5TaXplOiB1bnNhZmUgdWludDEyOAoJYi8KCWIqCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqXG4gICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDMgLy8gYXByOiB1aW50MTI4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwMwoJLy8gYWxwaGE6IHVpbnQxMjggPSAxMCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NWQ5NjRiODAwCgliPgoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAwNgoJLy8gYWxwaGEgPSA5MCBhcyB1aW50MTI4CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNWEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCippZjUwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDgKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0KCS8vICAgICAgICAgICAgICAgICAgICAgKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpCglieXRlIDB4NjU3NzZkNjEgLy8gImV3bWEiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYi0KCWIqCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJYi8KCWIrCglkdXAKCWJpdGxlbgoJaW50IDEyOAoJPD0KCgkvLyAodGhpcy53ZWlnaHRlZE1vdmluZ0F2ZXJhZ2UudmFsdWUgKiAoKDEwMCBhcyB1aW50MTI4KSAtIGFscGhhKSkgLyAoMTAwIGFzIHVpbnQxMjgpICtcbiAgICAgICAgICAgICAgICAgICAgKGFwciAqIGFscGhhKSAvICgxMDAgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnQgMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoqaWY0OV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE0CgkvLyB0aGlzLnNldFJvdW5kc1BlckRheSgpCgljYWxsc3ViIHNldFJvdW5kc1BlckRheQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9ICh0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSBhcyB1aW50MTI4KSAqICh0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4KQoJYnl0ZSAweDczNzQ2MTZiNjU0MTYzNjM3NTZkNzU2YzYxNzQ2ZjcyIC8vICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCgliKgoJZHVwCgliaXRsZW4KCWludCAxMjgKCTw9CgoJLy8gKHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIGFzIHVpbnQxMjgpICogKHRoaXMucm91bmRzUGVyRGF5LnZhbHVlIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMTYKCS8vIHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgPSAwCglieXRlIDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAvLyAicmV3YXJkQWNjdW11bGF0b3IiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGUgMHg2MjY5NmU1MjZmNzU2ZTY0NTM3NDYxNzI3NCAvLyAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCippZjQ3X2VuZDoKCXJldHN1YgoKLy8gc2V0Um91bmRzUGVyRGF5KCk6IHZvaWQKc2V0Um91bmRzUGVyRGF5OgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjYKCS8vIHRoaXMudHhuLmZpcnN0VmFsaWQgPCAxMgoJdHhuIEZpcnN0VmFsaWQKCWludCAxMgoJPAoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOAoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlIDB4NzI2Zjc1NmU2NDczNTA2NTcyNDQ2MTc5IC8vICJyb3VuZHNQZXJEYXkiCglpbnQgMzA4NTcKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAyOQoJLy8gcmV0dXJuCglyZXRzdWIKCippZjUxX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzIKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9CgkvLyAgICAgICAgICAgICBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLnRpbWVzdGFtcCAtIGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMTFdLnRpbWVzdGFtcAoJdHhuIEZpcnN0VmFsaWQKCWludCAxCgktCglibG9jayBCbGtUaW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnQgMTEKCS0KCWJsb2NrIEJsa1RpbWVzdGFtcAoJLQoJZnJhbWVfYnVyeSAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM0CgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPT09IDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjUyX2VuZAoKCS8vICppZjUyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzYKCS8vIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlID0gQVBQUk9YX0FWR19ST1VORFNfUEVSX0RBWQoJYnl0ZSAweDcyNmY3NTZlNjQ3MzUwNjU3MjQ0NjE3OSAvLyAicm91bmRzUGVyRGF5IgoJaW50IDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1Ml9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDQyCgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9ICgyNCAqIDYwICogNjAgKiAxMCkgLyBhdmdCbG9ja1RpbWVUZW50aHMKCWJ5dGUgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgLy8gInJvdW5kc1BlckRheSIKCWludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJnYXMoKXZvaWQiCgltZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCgltZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCgltZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCgltZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCgltZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCgltZXRob2QgInByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfaW5pdFN0b3JhZ2UgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3JlbW92ZVN0YWtlICphYmlfcm91dGVfY2xhaW1Ub2tlbnMgKmFiaV9yb3V0ZV9nZXRTdGFrZXJJbmZvICphYmlfcm91dGVfcGF5VG9rZW5SZXdhcmQgKmFiaV9yb3V0ZV91cGRhdGVBbGdvZFZlciAqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZSAqYWJpX3JvdXRlX2dvT25saW5lICphYmlfcm91dGVfZ29PZmZsaW5lICphYmlfcm91dGVfbGlua1RvTkZEICphYmlfcm91dGVfcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/stakingPool.algo.ts:37","pc":[1,2]},{"teal":16,"source":"contracts/stakingPool.algo.ts:37","pc":[3]},{"teal":17,"source":"contracts/stakingPool.algo.ts:37","pc":[4]},{"teal":18,"source":"contracts/stakingPool.algo.ts:37","pc":[5]},{"teal":19,"source":"contracts/stakingPool.algo.ts:37","pc":[6,7]},{"teal":20,"source":"contracts/stakingPool.algo.ts:37","pc":[8]},{"teal":21,"source":"contracts/stakingPool.algo.ts:37","pc":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]},{"teal":25,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[35]},{"teal":30,"source":"contracts/stakingPool.algo.ts:101","pc":[36,37,38]},{"teal":31,"source":"contracts/stakingPool.algo.ts:101","pc":[39]},{"teal":34,"source":"contracts/stakingPool.algo.ts:101","pc":[40,41,42]},{"teal":35,"source":"contracts/stakingPool.algo.ts:101","pc":[43]},{"teal":38,"source":"contracts/stakingPool.algo.ts:101","pc":[44,45,46]},{"teal":39,"source":"contracts/stakingPool.algo.ts:101","pc":[47]},{"teal":42,"source":"contracts/stakingPool.algo.ts:101","pc":[48,49,50]},{"teal":43,"source":"contracts/stakingPool.algo.ts:101","pc":[51]},{"teal":46,"source":"contracts/stakingPool.algo.ts:101","pc":[52,53,54]},{"teal":47,"source":"contracts/stakingPool.algo.ts:101","pc":[55]},{"teal":48,"source":"contracts/stakingPool.algo.ts:101","pc":[56]},{"teal":58,"source":"contracts/stakingPool.algo.ts:101","pc":[57,58,59]},{"teal":63,"source":"contracts/stakingPool.algo.ts:102","pc":[60,61]},{"teal":64,"source":"contracts/stakingPool.algo.ts:102","pc":[62]},{"teal":65,"source":"contracts/stakingPool.algo.ts:102","pc":[63]},{"teal":66,"source":"contracts/stakingPool.algo.ts:102","pc":[64,65,66]},{"teal":71,"source":"contracts/stakingPool.algo.ts:104","pc":[67,68]},{"teal":72,"source":"contracts/stakingPool.algo.ts:104","pc":[69]},{"teal":73,"source":"contracts/stakingPool.algo.ts:104","pc":[70]},{"teal":74,"source":"contracts/stakingPool.algo.ts:104","pc":[71]},{"teal":78,"source":"contracts/stakingPool.algo.ts:105","pc":[72,73]},{"teal":79,"source":"contracts/stakingPool.algo.ts:105","pc":[74]},{"teal":80,"source":"contracts/stakingPool.algo.ts:105","pc":[75]},{"teal":81,"source":"contracts/stakingPool.algo.ts:105","pc":[76]},{"teal":82,"source":"contracts/stakingPool.algo.ts:102","pc":[77,78,79]},{"teal":87,"source":"contracts/stakingPool.algo.ts:107","pc":[80,81]},{"teal":88,"source":"contracts/stakingPool.algo.ts:107","pc":[82]},{"teal":89,"source":"contracts/stakingPool.algo.ts:107","pc":[83]},{"teal":90,"source":"contracts/stakingPool.algo.ts:107","pc":[84]},{"teal":94,"source":"contracts/stakingPool.algo.ts:108","pc":[85,86]},{"teal":95,"source":"contracts/stakingPool.algo.ts:108","pc":[87]},{"teal":96,"source":"contracts/stakingPool.algo.ts:108","pc":[88]},{"teal":97,"source":"contracts/stakingPool.algo.ts:108","pc":[89]},{"teal":102,"source":"contracts/stakingPool.algo.ts:110","pc":[90,91]},{"teal":103,"source":"contracts/stakingPool.algo.ts:110","pc":[92,93,94,95]},{"teal":104,"source":"contracts/stakingPool.algo.ts:110","pc":[96]},{"teal":107,"source":"contracts/stakingPool.algo.ts:110","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[97]},{"teal":111,"source":"contracts/stakingPool.algo.ts:111","pc":[98]},{"teal":112,"source":"contracts/stakingPool.algo.ts:111","pc":[99,100]},{"teal":113,"source":"contracts/stakingPool.algo.ts:111","pc":[101]},{"teal":117,"source":"contracts/stakingPool.algo.ts:112","pc":[102]},{"teal":118,"source":"contracts/stakingPool.algo.ts:112","pc":[103,104]},{"teal":119,"source":"contracts/stakingPool.algo.ts:112","pc":[105]},{"teal":123,"source":"contracts/stakingPool.algo.ts:113","pc":[106,107]},{"teal":124,"source":"contracts/stakingPool.algo.ts:113","pc":[108,109]},{"teal":125,"source":"contracts/stakingPool.algo.ts:113","pc":[110]},{"teal":129,"source":"contracts/stakingPool.algo.ts:114","pc":[111,112]},{"teal":130,"source":"contracts/stakingPool.algo.ts:114","pc":[113]},{"teal":131,"source":"contracts/stakingPool.algo.ts:114","pc":[114]},{"teal":135,"source":"contracts/stakingPool.algo.ts:115","pc":[115,116]},{"teal":136,"source":"contracts/stakingPool.algo.ts:115","pc":[117]},{"teal":137,"source":"contracts/stakingPool.algo.ts:115","pc":[118]},{"teal":141,"source":"contracts/stakingPool.algo.ts:116","pc":[119,120]},{"teal":142,"source":"contracts/stakingPool.algo.ts:116","pc":[121,122]},{"teal":143,"source":"contracts/stakingPool.algo.ts:116","pc":[123]},{"teal":147,"source":"contracts/stakingPool.algo.ts:117","pc":[124,125]},{"teal":148,"source":"contracts/stakingPool.algo.ts:117","pc":[126,127]},{"teal":149,"source":"contracts/stakingPool.algo.ts:117","pc":[128]},{"teal":153,"source":"contracts/stakingPool.algo.ts:118","pc":[129,130]},{"teal":154,"source":"contracts/stakingPool.algo.ts:118","pc":[131]},{"teal":155,"source":"contracts/stakingPool.algo.ts:118","pc":[132]},{"teal":159,"source":"contracts/stakingPool.algo.ts:120","pc":[133,134,135]},{"teal":163,"source":"contracts/stakingPool.algo.ts:121","pc":[136,137]},{"teal":164,"source":"contracts/stakingPool.algo.ts:121","pc":[138,139]},{"teal":165,"source":"contracts/stakingPool.algo.ts:121","pc":[140,141]},{"teal":166,"source":"contracts/stakingPool.algo.ts:121","pc":[142,143]},{"teal":167,"source":"contracts/stakingPool.algo.ts:121","pc":[144]},{"teal":168,"source":"contracts/stakingPool.algo.ts:121","pc":[145]},{"teal":169,"source":"contracts/stakingPool.algo.ts:121","pc":[146]},{"teal":170,"source":"contracts/stakingPool.algo.ts:121","pc":[147]},{"teal":174,"source":"contracts/stakingPool.algo.ts:122","pc":[148,149]},{"teal":175,"source":"contracts/stakingPool.algo.ts:122","pc":[150,151]},{"teal":176,"source":"contracts/stakingPool.algo.ts:122","pc":[152]},{"teal":180,"source":"contracts/stakingPool.algo.ts:123","pc":[153,154]},{"teal":181,"source":"contracts/stakingPool.algo.ts:123","pc":[155]},{"teal":182,"source":"contracts/stakingPool.algo.ts:123","pc":[156]},{"teal":186,"source":"contracts/stakingPool.algo.ts:124","pc":[157,158]},{"teal":187,"source":"contracts/stakingPool.algo.ts:124","pc":[159,160]},{"teal":188,"source":"contracts/stakingPool.algo.ts:124","pc":[161]},{"teal":189,"source":"contracts/stakingPool.algo.ts:101","pc":[162]},{"teal":194,"source":"contracts/stakingPool.algo.ts:130","pc":[163,164,165]},{"teal":195,"source":"contracts/stakingPool.algo.ts:130","pc":[166]},{"teal":196,"source":"contracts/stakingPool.algo.ts:130","pc":[167]},{"teal":202,"source":"contracts/stakingPool.algo.ts:130","pc":[168,169,170]},{"teal":203,"source":"contracts/stakingPool.algo.ts:130","pc":[171]},{"teal":207,"source":"contracts/stakingPool.algo.ts:132","pc":[172,173,174]},{"teal":211,"source":"contracts/stakingPool.algo.ts:136","pc":[175,176,177]},{"teal":212,"source":"contracts/stakingPool.algo.ts:136","pc":[178,179]},{"teal":213,"source":"contracts/stakingPool.algo.ts:136","pc":[180,181]},{"teal":214,"source":"contracts/stakingPool.algo.ts:136","pc":[182]},{"teal":215,"source":"contracts/stakingPool.algo.ts:136","pc":[183]},{"teal":216,"source":"contracts/stakingPool.algo.ts:132","pc":[184]},{"teal":221,"source":"contracts/stakingPool.algo.ts:146","pc":[185,186]},{"teal":222,"source":"contracts/stakingPool.algo.ts:146","pc":[187]},{"teal":223,"source":"contracts/stakingPool.algo.ts:146","pc":[188]},{"teal":224,"source":"contracts/stakingPool.algo.ts:146","pc":[189]},{"teal":225,"source":"contracts/stakingPool.algo.ts:146","pc":[190,191]},{"teal":226,"source":"contracts/stakingPool.algo.ts:146","pc":[192]},{"teal":227,"source":"contracts/stakingPool.algo.ts:146","pc":[193]},{"teal":230,"source":"contracts/stakingPool.algo.ts:146","errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[194]},{"teal":233,"source":"contracts/stakingPool.algo.ts:146","pc":[195,196,197]},{"teal":234,"source":"contracts/stakingPool.algo.ts:146","pc":[198]},{"teal":235,"source":"contracts/stakingPool.algo.ts:146","pc":[199]},{"teal":245,"source":"contracts/stakingPool.algo.ts:146","pc":[200,201,202]},{"teal":248,"source":"contracts/stakingPool.algo.ts:146","pc":[203]},{"teal":249,"source":"contracts/stakingPool.algo.ts:146","pc":[204,205]},{"teal":253,"source":"contracts/stakingPool.algo.ts:147","pc":[206]},{"teal":254,"source":"contracts/stakingPool.algo.ts:147","pc":[207]},{"teal":255,"source":"contracts/stakingPool.algo.ts:147","pc":[208]},{"teal":256,"source":"contracts/stakingPool.algo.ts:147","pc":[209]},{"teal":257,"source":"contracts/stakingPool.algo.ts:147","pc":[210]},{"teal":260,"source":"contracts/stakingPool.algo.ts:147","errorMessage":"staking pool already initialized","pc":[211]},{"teal":267,"source":"contracts/stakingPool.algo.ts:150","pc":[212]},{"teal":268,"source":"contracts/stakingPool.algo.ts:150","pc":[213]},{"teal":269,"source":"contracts/stakingPool.algo.ts:150","pc":[214,215]},{"teal":270,"source":"contracts/stakingPool.algo.ts:150","pc":[216,217]},{"teal":271,"source":"contracts/stakingPool.algo.ts:150","pc":[218,219]},{"teal":275,"source":"contracts/stakingPool.algo.ts:151","pc":[220]},{"teal":276,"source":"contracts/stakingPool.algo.ts:151","pc":[221]},{"teal":277,"source":"contracts/stakingPool.algo.ts:151","pc":[222,223]},{"teal":281,"source":"contracts/stakingPool.algo.ts:152","pc":[224]},{"teal":282,"source":"contracts/stakingPool.algo.ts:152","pc":[225]},{"teal":283,"source":"contracts/stakingPool.algo.ts:152","pc":[226]},{"teal":284,"source":"contracts/stakingPool.algo.ts:152","pc":[227,228]},{"teal":287,"source":"contracts/stakingPool.algo.ts:150","pc":[229]},{"teal":288,"source":"contracts/stakingPool.algo.ts:150","pc":[230,231]},{"teal":291,"source":"contracts/stakingPool.algo.ts:150","pc":[232]},{"teal":292,"source":"contracts/stakingPool.algo.ts:150","pc":[233,234]},{"teal":293,"source":"contracts/stakingPool.algo.ts:150","pc":[235]},{"teal":294,"source":"contracts/stakingPool.algo.ts:150","pc":[236]},{"teal":295,"source":"contracts/stakingPool.algo.ts:150","pc":[237,238]},{"teal":296,"source":"contracts/stakingPool.algo.ts:150","pc":[239,240,241]},{"teal":297,"source":"contracts/stakingPool.algo.ts:150","pc":[242,243]},{"teal":301,"source":"contracts/stakingPool.algo.ts:154","pc":[244,245]},{"teal":302,"source":"contracts/stakingPool.algo.ts:154","pc":[246,247,248]},{"teal":303,"source":"contracts/stakingPool.algo.ts:154","pc":[249]},{"teal":304,"source":"contracts/stakingPool.algo.ts:154","pc":[250]},{"teal":305,"source":"contracts/stakingPool.algo.ts:154","pc":[251]},{"teal":306,"source":"contracts/stakingPool.algo.ts:154","pc":[252,253]},{"teal":310,"source":"contracts/stakingPool.algo.ts:155","pc":[254,255]},{"teal":311,"source":"contracts/stakingPool.algo.ts:155","pc":[256]},{"teal":312,"source":"contracts/stakingPool.algo.ts:155","pc":[257,258,259]},{"teal":313,"source":"contracts/stakingPool.algo.ts:155","pc":[260,261]},{"teal":314,"source":"contracts/stakingPool.algo.ts:155","pc":[262]},{"teal":315,"source":"contracts/stakingPool.algo.ts:155","pc":[263]},{"teal":316,"source":"contracts/stakingPool.algo.ts:155","pc":[264]},{"teal":317,"source":"contracts/stakingPool.algo.ts:155","pc":[265]},{"teal":320,"source":"contracts/stakingPool.algo.ts:155","pc":[266,267,268]},{"teal":321,"source":"contracts/stakingPool.algo.ts:155","pc":[269,270]},{"teal":322,"source":"contracts/stakingPool.algo.ts:155","pc":[271,272,273]},{"teal":325,"source":"contracts/stakingPool.algo.ts:155","pc":[274]},{"teal":328,"source":"contracts/stakingPool.algo.ts:155","pc":[275,276]},{"teal":335,"source":"contracts/stakingPool.algo.ts:157","pc":[277,278]},{"teal":336,"source":"contracts/stakingPool.algo.ts:158","pc":[279,280]},{"teal":337,"source":"contracts/stakingPool.algo.ts:157","pc":[281]},{"teal":338,"source":"contracts/stakingPool.algo.ts:159","pc":[282,283,284]},{"teal":339,"source":"contracts/stakingPool.algo.ts:159","pc":[285,286,287]},{"teal":340,"source":"contracts/stakingPool.algo.ts:158","pc":[288]},{"teal":341,"source":"contracts/stakingPool.algo.ts:156","pc":[289,290]},{"teal":346,"source":"contracts/stakingPool.algo.ts:162","pc":[291,292]},{"teal":347,"source":"contracts/stakingPool.algo.ts:162","pc":[293,294]},{"teal":348,"source":"contracts/stakingPool.algo.ts:162","pc":[295,296]},{"teal":349,"source":"contracts/stakingPool.algo.ts:162","pc":[297]},{"teal":352,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[298]},{"teal":355,"source":"contracts/stakingPool.algo.ts:162","pc":[299,300]},{"teal":356,"source":"contracts/stakingPool.algo.ts:162","pc":[301,302]},{"teal":357,"source":"contracts/stakingPool.algo.ts:162","pc":[303,304]},{"teal":358,"source":"contracts/stakingPool.algo.ts:162","pc":[305]},{"teal":361,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[306]},{"teal":365,"source":"contracts/stakingPool.algo.ts:163","pc":[307]},{"teal":366,"source":"contracts/stakingPool.algo.ts:163","pc":[308,309,310]},{"teal":367,"source":"contracts/stakingPool.algo.ts:163","pc":[311]},{"teal":368,"source":"contracts/stakingPool.algo.ts:163","pc":[312]},{"teal":373,"source":"contracts/stakingPool.algo.ts:165","pc":[313,314]},{"teal":374,"source":"contracts/stakingPool.algo.ts:165","pc":[315]},{"teal":375,"source":"contracts/stakingPool.algo.ts:165","pc":[316,317,318]},{"teal":376,"source":"contracts/stakingPool.algo.ts:165","pc":[319,320]},{"teal":377,"source":"contracts/stakingPool.algo.ts:165","pc":[321]},{"teal":378,"source":"contracts/stakingPool.algo.ts:165","pc":[322]},{"teal":379,"source":"contracts/stakingPool.algo.ts:165","pc":[323]},{"teal":380,"source":"contracts/stakingPool.algo.ts:165","pc":[324]},{"teal":383,"source":"contracts/stakingPool.algo.ts:165","pc":[325,326,327]},{"teal":392,"source":"contracts/stakingPool.algo.ts:167","pc":[328]},{"teal":393,"source":"contracts/stakingPool.algo.ts:167","pc":[329,330]},{"teal":394,"source":"contracts/stakingPool.algo.ts:167","pc":[331,332]},{"teal":398,"source":"contracts/stakingPool.algo.ts:168","pc":[333,334]},{"teal":399,"source":"contracts/stakingPool.algo.ts:168","pc":[335,336,337]},{"teal":400,"source":"contracts/stakingPool.algo.ts:168","pc":[338]},{"teal":401,"source":"contracts/stakingPool.algo.ts:168","pc":[339,340]},{"teal":405,"source":"contracts/stakingPool.algo.ts:169","pc":[341,342]},{"teal":406,"source":"contracts/stakingPool.algo.ts:169","pc":[343,344]},{"teal":410,"source":"contracts/stakingPool.algo.ts:170","pc":[345]},{"teal":411,"source":"contracts/stakingPool.algo.ts:170","pc":[346,347]},{"teal":414,"source":"contracts/stakingPool.algo.ts:167","pc":[348]},{"teal":415,"source":"contracts/stakingPool.algo.ts:167","pc":[349,350]},{"teal":418,"source":"contracts/stakingPool.algo.ts:167","pc":[351]},{"teal":421,"source":"contracts/stakingPool.algo.ts:146","pc":[352]},{"teal":426,"source":"contracts/stakingPool.algo.ts:185","pc":[353,354]},{"teal":429,"source":"contracts/stakingPool.algo.ts:185","pc":[355,356,357]},{"teal":430,"source":"contracts/stakingPool.algo.ts:185","pc":[358]},{"teal":431,"source":"contracts/stakingPool.algo.ts:185","pc":[359]},{"teal":432,"source":"contracts/stakingPool.algo.ts:185","pc":[360,361]},{"teal":433,"source":"contracts/stakingPool.algo.ts:185","pc":[362]},{"teal":436,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 0 (staker) for addStake must be a address","pc":[363]},{"teal":439,"source":"contracts/stakingPool.algo.ts:185","pc":[364,365]},{"teal":440,"source":"contracts/stakingPool.algo.ts:185","pc":[366]},{"teal":441,"source":"contracts/stakingPool.algo.ts:185","pc":[367]},{"teal":442,"source":"contracts/stakingPool.algo.ts:185","pc":[368]},{"teal":443,"source":"contracts/stakingPool.algo.ts:185","pc":[369,370]},{"teal":444,"source":"contracts/stakingPool.algo.ts:185","pc":[371]},{"teal":445,"source":"contracts/stakingPool.algo.ts:185","pc":[372]},{"teal":448,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[373]},{"teal":451,"source":"contracts/stakingPool.algo.ts:185","pc":[374,375,376]},{"teal":452,"source":"contracts/stakingPool.algo.ts:185","pc":[377]},{"teal":453,"source":"contracts/stakingPool.algo.ts:185","pc":[378]},{"teal":454,"source":"contracts/stakingPool.algo.ts:185","pc":[379]},{"teal":455,"source":"contracts/stakingPool.algo.ts:185","pc":[380]},{"teal":456,"source":"contracts/stakingPool.algo.ts:185","pc":[381]},{"teal":469,"source":"contracts/stakingPool.algo.ts:185","pc":[382,383,384]},{"teal":472,"source":"contracts/stakingPool.algo.ts:185","pc":[385]},{"teal":473,"source":"contracts/stakingPool.algo.ts:185","pc":[386,387]},{"teal":477,"source":"contracts/stakingPool.algo.ts:186","pc":[388]},{"teal":478,"source":"contracts/stakingPool.algo.ts:186","pc":[389]},{"teal":479,"source":"contracts/stakingPool.algo.ts:186","pc":[390]},{"teal":480,"source":"contracts/stakingPool.algo.ts:186","pc":[391]},{"teal":483,"source":"contracts/stakingPool.algo.ts:186","errorMessage":"staking pool must be initialized first","pc":[392]},{"teal":490,"source":"contracts/stakingPool.algo.ts:190","pc":[393,394]},{"teal":491,"source":"contracts/stakingPool.algo.ts:190","pc":[395]},{"teal":492,"source":"contracts/stakingPool.algo.ts:190","pc":[396]},{"teal":493,"source":"contracts/stakingPool.algo.ts:190","pc":[397,398]},{"teal":494,"source":"contracts/stakingPool.algo.ts:190","pc":[399]},{"teal":495,"source":"contracts/stakingPool.algo.ts:190","pc":[400]},{"teal":498,"source":"contracts/stakingPool.algo.ts:189","errorMessage":"stake can only be added via the validator contract","pc":[401]},{"teal":502,"source":"contracts/stakingPool.algo.ts:193","pc":[402,403]},{"teal":503,"source":"contracts/stakingPool.algo.ts:193","pc":[404,405]},{"teal":504,"source":"contracts/stakingPool.algo.ts:193","pc":[406]},{"teal":505,"source":"contracts/stakingPool.algo.ts:193","pc":[407]},{"teal":509,"source":"contracts/stakingPool.algo.ts:196","pc":[408,409,410]},{"teal":518,"source":"contracts/stakingPool.algo.ts:200","pc":[411,412]},{"teal":519,"source":"contracts/stakingPool.algo.ts:201","pc":[413,414]},{"teal":520,"source":"contracts/stakingPool.algo.ts:201","pc":[415]},{"teal":521,"source":"contracts/stakingPool.algo.ts:201","pc":[416]},{"teal":522,"source":"contracts/stakingPool.algo.ts:201","pc":[417,418]},{"teal":523,"source":"contracts/stakingPool.algo.ts:201","pc":[419]},{"teal":524,"source":"contracts/stakingPool.algo.ts:201","pc":[420]},{"teal":527,"source":"contracts/stakingPool.algo.ts:201","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[421]},{"teal":530,"source":"contracts/stakingPool.algo.ts:200","pc":[422,423]},{"teal":531,"source":"contracts/stakingPool.algo.ts:202","pc":[424,425]},{"teal":532,"source":"contracts/stakingPool.algo.ts:202","pc":[426,427]},{"teal":533,"source":"contracts/stakingPool.algo.ts:202","pc":[428]},{"teal":536,"source":"contracts/stakingPool.algo.ts:202","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[429]},{"teal":539,"source":"contracts/stakingPool.algo.ts:200","pc":[430,431]},{"teal":540,"source":"contracts/stakingPool.algo.ts:203","pc":[432,433]},{"teal":541,"source":"contracts/stakingPool.algo.ts:203","pc":[434,435]},{"teal":542,"source":"contracts/stakingPool.algo.ts:203","pc":[436,437]},{"teal":543,"source":"contracts/stakingPool.algo.ts:203","pc":[438]},{"teal":546,"source":"contracts/stakingPool.algo.ts:203","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[439]},{"teal":550,"source":"contracts/stakingPool.algo.ts:209","pc":[440,441]},{"teal":551,"source":"contracts/stakingPool.algo.ts:209","pc":[442,443,444]},{"teal":552,"source":"contracts/stakingPool.algo.ts:209","pc":[445]},{"teal":553,"source":"contracts/stakingPool.algo.ts:209","pc":[446,447]},{"teal":557,"source":"contracts/stakingPool.algo.ts:210","pc":[448]},{"teal":558,"source":"contracts/stakingPool.algo.ts:210","pc":[449,450]},{"teal":562,"source":"contracts/stakingPool.algo.ts:212","pc":[451,452]},{"teal":563,"source":"contracts/stakingPool.algo.ts:212","pc":[453]},{"teal":564,"source":"contracts/stakingPool.algo.ts:212","pc":[454,455]},{"teal":565,"source":"contracts/stakingPool.algo.ts:212","pc":[456,457]},{"teal":566,"source":"contracts/stakingPool.algo.ts:212","pc":[458]},{"teal":567,"source":"contracts/stakingPool.algo.ts:212","pc":[459,460]},{"teal":568,"source":"contracts/stakingPool.algo.ts:212","pc":[461]},{"teal":569,"source":"contracts/stakingPool.algo.ts:212","pc":[462]},{"teal":573,"source":"contracts/stakingPool.algo.ts:214","pc":[463,464]},{"teal":574,"source":"contracts/stakingPool.algo.ts:214","pc":[465]},{"teal":575,"source":"contracts/stakingPool.algo.ts:214","pc":[466,467]},{"teal":576,"source":"contracts/stakingPool.algo.ts:214","pc":[468]},{"teal":577,"source":"contracts/stakingPool.algo.ts:214","pc":[469]},{"teal":578,"source":"contracts/stakingPool.algo.ts:214","pc":[470,471]},{"teal":579,"source":"contracts/stakingPool.algo.ts:214","pc":[472]},{"teal":580,"source":"contracts/stakingPool.algo.ts:214","pc":[473,474]},{"teal":585,"source":"contracts/stakingPool.algo.ts:215","pc":[475,476]},{"teal":586,"source":"contracts/stakingPool.algo.ts:215","pc":[477]},{"teal":587,"source":"contracts/stakingPool.algo.ts:216","pc":[478]},{"teal":588,"source":"contracts/stakingPool.algo.ts:216","pc":[479,480]},{"teal":589,"source":"contracts/stakingPool.algo.ts:216","pc":[481,482]},{"teal":590,"source":"contracts/stakingPool.algo.ts:216","pc":[483]},{"teal":591,"source":"contracts/stakingPool.algo.ts:216","pc":[484,485]},{"teal":592,"source":"contracts/stakingPool.algo.ts:216","pc":[486]},{"teal":593,"source":"contracts/stakingPool.algo.ts:216","pc":[487]},{"teal":594,"source":"contracts/stakingPool.algo.ts:216","pc":[488]},{"teal":595,"source":"contracts/stakingPool.algo.ts:216","pc":[489]},{"teal":596,"source":"contracts/stakingPool.algo.ts:216","pc":[490]},{"teal":597,"source":"contracts/stakingPool.algo.ts:216","pc":[491,492]},{"teal":598,"source":"contracts/stakingPool.algo.ts:216","pc":[493]},{"teal":601,"source":"contracts/stakingPool.algo.ts:216","errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[494]},{"teal":602,"source":"contracts/stakingPool.algo.ts:216","pc":[495,496]},{"teal":603,"source":"contracts/stakingPool.algo.ts:216","pc":[497]},{"teal":604,"source":"contracts/stakingPool.algo.ts:216","pc":[498]},{"teal":605,"source":"contracts/stakingPool.algo.ts:216","pc":[499]},{"teal":606,"source":"contracts/stakingPool.algo.ts:216","pc":[500]},{"teal":607,"source":"contracts/stakingPool.algo.ts:216","pc":[501,502]},{"teal":608,"source":"contracts/stakingPool.algo.ts:216","pc":[503]},{"teal":609,"source":"contracts/stakingPool.algo.ts:216","pc":[504]},{"teal":610,"source":"contracts/stakingPool.algo.ts:216","pc":[505]},{"teal":611,"source":"contracts/stakingPool.algo.ts:215","pc":[506]},{"teal":615,"source":"contracts/stakingPool.algo.ts:219","pc":[507]},{"teal":616,"source":"contracts/stakingPool.algo.ts:219","pc":[508,509]},{"teal":621,"source":"contracts/stakingPool.algo.ts:219","pc":[510,511]},{"teal":622,"source":"contracts/stakingPool.algo.ts:219","pc":[512,513]},{"teal":623,"source":"contracts/stakingPool.algo.ts:219","pc":[514]},{"teal":624,"source":"contracts/stakingPool.algo.ts:219","pc":[515,516,517]},{"teal":629,"source":"contracts/stakingPool.algo.ts:220","pc":[518,519]},{"teal":630,"source":"contracts/stakingPool.algo.ts:220","pc":[520,521]},{"teal":631,"source":"contracts/stakingPool.algo.ts:220","pc":[522]},{"teal":632,"source":"contracts/stakingPool.algo.ts:220","pc":[523,524,525]},{"teal":637,"source":"contracts/stakingPool.algo.ts:221","pc":[526]},{"teal":638,"source":"contracts/stakingPool.algo.ts:221","pc":[527]},{"teal":639,"source":"contracts/stakingPool.algo.ts:221","pc":[528,529]},{"teal":640,"source":"contracts/stakingPool.algo.ts:221","pc":[530]},{"teal":641,"source":"contracts/stakingPool.algo.ts:221","pc":[531,532]},{"teal":642,"source":"contracts/stakingPool.algo.ts:221","pc":[533,534]},{"teal":643,"source":"contracts/stakingPool.algo.ts:221","pc":[535]},{"teal":644,"source":"contracts/stakingPool.algo.ts:221","pc":[536,537]},{"teal":645,"source":"contracts/stakingPool.algo.ts:221","pc":[538,539]},{"teal":646,"source":"contracts/stakingPool.algo.ts:221","pc":[540,541]},{"teal":647,"source":"contracts/stakingPool.algo.ts:221","pc":[542,543]},{"teal":648,"source":"contracts/stakingPool.algo.ts:221","pc":[544]},{"teal":653,"source":"contracts/stakingPool.algo.ts:223","pc":[545,546]},{"teal":654,"source":"contracts/stakingPool.algo.ts:223","pc":[547]},{"teal":655,"source":"contracts/stakingPool.algo.ts:223","pc":[548]},{"teal":656,"source":"contracts/stakingPool.algo.ts:223","pc":[549]},{"teal":657,"source":"contracts/stakingPool.algo.ts:223","pc":[550]},{"teal":658,"source":"contracts/stakingPool.algo.ts:223","pc":[551,552]},{"teal":659,"source":"contracts/stakingPool.algo.ts:223","pc":[553]},{"teal":660,"source":"contracts/stakingPool.algo.ts:223","pc":[554,555]},{"teal":665,"source":"contracts/stakingPool.algo.ts:224","pc":[556,557]},{"teal":666,"source":"contracts/stakingPool.algo.ts:224","pc":[558,559,560]},{"teal":667,"source":"contracts/stakingPool.algo.ts:224","pc":[561,562]},{"teal":668,"source":"contracts/stakingPool.algo.ts:224","pc":[563]},{"teal":669,"source":"contracts/stakingPool.algo.ts:224","pc":[564,565,566]},{"teal":674,"source":"contracts/stakingPool.algo.ts:226","pc":[567,568]},{"teal":675,"source":"contracts/stakingPool.algo.ts:226","pc":[569,570]},{"teal":676,"source":"contracts/stakingPool.algo.ts:226","pc":[571,572]},{"teal":677,"source":"contracts/stakingPool.algo.ts:226","pc":[573,574,575]},{"teal":678,"source":"contracts/stakingPool.algo.ts:226","pc":[576]},{"teal":679,"source":"contracts/stakingPool.algo.ts:226","pc":[577,578]},{"teal":680,"source":"contracts/stakingPool.algo.ts:226","pc":[579,580]},{"teal":681,"source":"contracts/stakingPool.algo.ts:226","pc":[581]},{"teal":682,"source":"contracts/stakingPool.algo.ts:226","pc":[582]},{"teal":683,"source":"contracts/stakingPool.algo.ts:226","pc":[583]},{"teal":684,"source":"contracts/stakingPool.algo.ts:226","pc":[584,585]},{"teal":688,"source":"contracts/stakingPool.algo.ts:227","pc":[586,587]},{"teal":689,"source":"contracts/stakingPool.algo.ts:227","pc":[588,589]},{"teal":690,"source":"contracts/stakingPool.algo.ts:227","pc":[590,591]},{"teal":691,"source":"contracts/stakingPool.algo.ts:227","pc":[592]},{"teal":692,"source":"contracts/stakingPool.algo.ts:227","pc":[593]},{"teal":693,"source":"contracts/stakingPool.algo.ts:227","pc":[594,595]},{"teal":697,"source":"contracts/stakingPool.algo.ts:230","pc":[596,597]},{"teal":698,"source":"contracts/stakingPool.algo.ts:230","pc":[598]},{"teal":699,"source":"contracts/stakingPool.algo.ts:230","pc":[599]},{"teal":700,"source":"contracts/stakingPool.algo.ts:230","pc":[600,601]},{"teal":701,"source":"contracts/stakingPool.algo.ts:230","pc":[602]},{"teal":702,"source":"contracts/stakingPool.algo.ts:230","pc":[603,604]},{"teal":703,"source":"contracts/stakingPool.algo.ts:230","pc":[605]},{"teal":707,"source":"contracts/stakingPool.algo.ts:232","pc":[606,607]},{"teal":708,"source":"contracts/stakingPool.algo.ts:232","pc":[608,609,610]},{"teal":714,"source":"contracts/stakingPool.algo.ts:234","pc":[611,612]},{"teal":715,"source":"contracts/stakingPool.algo.ts:234","pc":[613]},{"teal":716,"source":"contracts/stakingPool.algo.ts:234","pc":[614]},{"teal":717,"source":"contracts/stakingPool.algo.ts:234","pc":[615]},{"teal":718,"source":"contracts/stakingPool.algo.ts:234","pc":[616,617,618]},{"teal":719,"source":"contracts/stakingPool.algo.ts:234","pc":[619,620]},{"teal":720,"source":"contracts/stakingPool.algo.ts:234","pc":[621,622,623]},{"teal":721,"source":"contracts/stakingPool.algo.ts:234","pc":[624,625]},{"teal":722,"source":"contracts/stakingPool.algo.ts:234","pc":[626]},{"teal":723,"source":"contracts/stakingPool.algo.ts:234","pc":[627]},{"teal":726,"source":"contracts/stakingPool.algo.ts:234","pc":[628,629,630]},{"teal":731,"source":"contracts/stakingPool.algo.ts:235","pc":[631,632]},{"teal":732,"source":"contracts/stakingPool.algo.ts:235","pc":[633]},{"teal":733,"source":"contracts/stakingPool.algo.ts:235","pc":[634]},{"teal":734,"source":"contracts/stakingPool.algo.ts:235","pc":[635,636]},{"teal":741,"source":"contracts/stakingPool.algo.ts:219","pc":[637,638]},{"teal":742,"source":"contracts/stakingPool.algo.ts:219","pc":[639]},{"teal":743,"source":"contracts/stakingPool.algo.ts:219","pc":[640]},{"teal":744,"source":"contracts/stakingPool.algo.ts:219","pc":[641,642]},{"teal":745,"source":"contracts/stakingPool.algo.ts:219","pc":[643,644,645]},{"teal":751,"source":"contracts/stakingPool.algo.ts:239","pc":[646,647]},{"teal":752,"source":"contracts/stakingPool.algo.ts:239","pc":[648]},{"teal":753,"source":"contracts/stakingPool.algo.ts:239","pc":[649]},{"teal":754,"source":"contracts/stakingPool.algo.ts:239","pc":[650,651,652]},{"teal":758,"source":"contracts/stakingPool.algo.ts:241","errorMessage":"Staking pool full","pc":[653]},{"teal":763,"source":"contracts/stakingPool.algo.ts:246","pc":[654,655]},{"teal":764,"source":"contracts/stakingPool.algo.ts:246","pc":[656,657]},{"teal":765,"source":"contracts/stakingPool.algo.ts:246","pc":[658,659]},{"teal":766,"source":"contracts/stakingPool.algo.ts:246","pc":[660]},{"teal":767,"source":"contracts/stakingPool.algo.ts:246","pc":[661]},{"teal":770,"source":"contracts/stakingPool.algo.ts:246","errorMessage":"must stake at least the minimum for this pool","pc":[662]},{"teal":774,"source":"contracts/stakingPool.algo.ts:248","pc":[663,664]},{"teal":775,"source":"contracts/stakingPool.algo.ts:248","pc":[665]},{"teal":776,"source":"contracts/stakingPool.algo.ts:248","pc":[666]},{"teal":777,"source":"contracts/stakingPool.algo.ts:248","pc":[667]},{"teal":778,"source":"contracts/stakingPool.algo.ts:248","pc":[668]},{"teal":779,"source":"contracts/stakingPool.algo.ts:248","pc":[669]},{"teal":780,"source":"contracts/stakingPool.algo.ts:248","pc":[670]},{"teal":781,"source":"contracts/stakingPool.algo.ts:248","pc":[671,672]},{"teal":782,"source":"contracts/stakingPool.algo.ts:248","pc":[673]},{"teal":783,"source":"contracts/stakingPool.algo.ts:248","pc":[674,675]},{"teal":784,"source":"contracts/stakingPool.algo.ts:248","pc":[676]},{"teal":785,"source":"contracts/stakingPool.algo.ts:248","pc":[677,678]},{"teal":786,"source":"contracts/stakingPool.algo.ts:248","pc":[679]},{"teal":787,"source":"contracts/stakingPool.algo.ts:248","pc":[680]},{"teal":797,"source":"contracts/stakingPool.algo.ts:249","pc":[681,682]},{"teal":798,"source":"contracts/stakingPool.algo.ts:249","pc":[683]},{"teal":799,"source":"contracts/stakingPool.algo.ts:249","pc":[684]},{"teal":800,"source":"contracts/stakingPool.algo.ts:249","pc":[685]},{"teal":801,"source":"contracts/stakingPool.algo.ts:249","pc":[686]},{"teal":802,"source":"contracts/stakingPool.algo.ts:250","pc":[687,688]},{"teal":803,"source":"contracts/stakingPool.algo.ts:251","pc":[689,690]},{"teal":804,"source":"contracts/stakingPool.algo.ts:251","pc":[691,692]},{"teal":805,"source":"contracts/stakingPool.algo.ts:251","pc":[693]},{"teal":806,"source":"contracts/stakingPool.algo.ts:251","pc":[694]},{"teal":807,"source":"contracts/stakingPool.algo.ts:252","pc":[695,696]},{"teal":808,"source":"contracts/stakingPool.algo.ts:252","pc":[697]},{"teal":809,"source":"contracts/stakingPool.algo.ts:253","pc":[698,699]},{"teal":810,"source":"contracts/stakingPool.algo.ts:253","pc":[700]},{"teal":811,"source":"contracts/stakingPool.algo.ts:254","pc":[701,702]},{"teal":812,"source":"contracts/stakingPool.algo.ts:254","pc":[703]},{"teal":813,"source":"contracts/stakingPool.algo.ts:254","pc":[704]},{"teal":814,"source":"contracts/stakingPool.algo.ts:249","pc":[705]},{"teal":815,"source":"contracts/stakingPool.algo.ts:249","pc":[706,707]},{"teal":816,"source":"contracts/stakingPool.algo.ts:249","pc":[708]},{"teal":820,"source":"contracts/stakingPool.algo.ts:256","pc":[709,710]},{"teal":821,"source":"contracts/stakingPool.algo.ts:256","pc":[711]},{"teal":822,"source":"contracts/stakingPool.algo.ts:256","pc":[712]},{"teal":823,"source":"contracts/stakingPool.algo.ts:256","pc":[713]},{"teal":824,"source":"contracts/stakingPool.algo.ts:256","pc":[714,715]},{"teal":825,"source":"contracts/stakingPool.algo.ts:256","pc":[716]},{"teal":826,"source":"contracts/stakingPool.algo.ts:256","pc":[717]},{"teal":830,"source":"contracts/stakingPool.algo.ts:257","pc":[718,719]},{"teal":834,"source":"contracts/stakingPool.algo.ts:185","pc":[720,721]},{"teal":837,"source":"contracts/stakingPool.algo.ts:185","pc":[722,723]},{"teal":838,"source":"contracts/stakingPool.algo.ts:185","pc":[724]},{"teal":843,"source":"contracts/stakingPool.algo.ts:271","pc":[725,726,727]},{"teal":844,"source":"contracts/stakingPool.algo.ts:271","pc":[728]},{"teal":847,"source":"contracts/stakingPool.algo.ts:271","pc":[729,730,731]},{"teal":848,"source":"contracts/stakingPool.algo.ts:271","pc":[732]},{"teal":849,"source":"contracts/stakingPool.algo.ts:271","pc":[733]},{"teal":850,"source":"contracts/stakingPool.algo.ts:271","pc":[734,735]},{"teal":851,"source":"contracts/stakingPool.algo.ts:271","pc":[736]},{"teal":854,"source":"contracts/stakingPool.algo.ts:271","errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[737]},{"teal":857,"source":"contracts/stakingPool.algo.ts:271","pc":[738,739,740]},{"teal":858,"source":"contracts/stakingPool.algo.ts:271","pc":[741]},{"teal":859,"source":"contracts/stakingPool.algo.ts:271","pc":[742]},{"teal":873,"source":"contracts/stakingPool.algo.ts:271","pc":[743,744,745]},{"teal":876,"source":"contracts/stakingPool.algo.ts:271","pc":[746]},{"teal":877,"source":"contracts/stakingPool.algo.ts:271","pc":[747,748]},{"teal":882,"source":"contracts/stakingPool.algo.ts:274","pc":[749,750]},{"teal":883,"source":"contracts/stakingPool.algo.ts:274","pc":[751,752]},{"teal":884,"source":"contracts/stakingPool.algo.ts:274","pc":[753]},{"teal":885,"source":"contracts/stakingPool.algo.ts:274","pc":[754,755,756]},{"teal":893,"source":"contracts/stakingPool.algo.ts:276","pc":[757,758,759]},{"teal":896,"source":"contracts/stakingPool.algo.ts:275","errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[760]},{"teal":901,"source":"contracts/stakingPool.algo.ts:281","pc":[761,762,763]},{"teal":905,"source":"contracts/stakingPool.algo.ts:283","pc":[764]},{"teal":906,"source":"contracts/stakingPool.algo.ts:283","pc":[765,766]},{"teal":911,"source":"contracts/stakingPool.algo.ts:283","pc":[767,768]},{"teal":912,"source":"contracts/stakingPool.algo.ts:283","pc":[769,770]},{"teal":913,"source":"contracts/stakingPool.algo.ts:283","pc":[771]},{"teal":914,"source":"contracts/stakingPool.algo.ts:283","pc":[772,773,774]},{"teal":919,"source":"contracts/stakingPool.algo.ts:284","pc":[775,776]},{"teal":920,"source":"contracts/stakingPool.algo.ts:284","pc":[777,778]},{"teal":921,"source":"contracts/stakingPool.algo.ts:284","pc":[779]},{"teal":922,"source":"contracts/stakingPool.algo.ts:284","pc":[780,781,782]},{"teal":927,"source":"contracts/stakingPool.algo.ts:285","pc":[783]},{"teal":928,"source":"contracts/stakingPool.algo.ts:285","pc":[784]},{"teal":929,"source":"contracts/stakingPool.algo.ts:285","pc":[785,786]},{"teal":930,"source":"contracts/stakingPool.algo.ts:285","pc":[787]},{"teal":931,"source":"contracts/stakingPool.algo.ts:285","pc":[788,789]},{"teal":932,"source":"contracts/stakingPool.algo.ts:285","pc":[790,791]},{"teal":933,"source":"contracts/stakingPool.algo.ts:285","pc":[792]},{"teal":934,"source":"contracts/stakingPool.algo.ts:285","pc":[793,794]},{"teal":935,"source":"contracts/stakingPool.algo.ts:285","pc":[795,796]},{"teal":936,"source":"contracts/stakingPool.algo.ts:285","pc":[797,798]},{"teal":937,"source":"contracts/stakingPool.algo.ts:285","pc":[799,800]},{"teal":938,"source":"contracts/stakingPool.algo.ts:285","pc":[801]},{"teal":943,"source":"contracts/stakingPool.algo.ts:287","pc":[802,803]},{"teal":944,"source":"contracts/stakingPool.algo.ts:287","pc":[804]},{"teal":945,"source":"contracts/stakingPool.algo.ts:287","pc":[805]},{"teal":946,"source":"contracts/stakingPool.algo.ts:287","pc":[806]},{"teal":947,"source":"contracts/stakingPool.algo.ts:287","pc":[807]},{"teal":948,"source":"contracts/stakingPool.algo.ts:287","pc":[808,809]},{"teal":949,"source":"contracts/stakingPool.algo.ts:287","pc":[810]},{"teal":950,"source":"contracts/stakingPool.algo.ts:287","pc":[811,812]},{"teal":955,"source":"contracts/stakingPool.algo.ts:288","pc":[813,814]},{"teal":956,"source":"contracts/stakingPool.algo.ts:288","pc":[815,816,817]},{"teal":957,"source":"contracts/stakingPool.algo.ts:288","pc":[818,819]},{"teal":958,"source":"contracts/stakingPool.algo.ts:288","pc":[820]},{"teal":959,"source":"contracts/stakingPool.algo.ts:288","pc":[821,822,823]},{"teal":965,"source":"contracts/stakingPool.algo.ts:289","pc":[824,825]},{"teal":966,"source":"contracts/stakingPool.algo.ts:289","pc":[826]},{"teal":967,"source":"contracts/stakingPool.algo.ts:289","pc":[827]},{"teal":968,"source":"contracts/stakingPool.algo.ts:289","pc":[828,829,830]},{"teal":973,"source":"contracts/stakingPool.algo.ts:291","pc":[831,832]},{"teal":974,"source":"contracts/stakingPool.algo.ts:291","pc":[833,834,835]},{"teal":975,"source":"contracts/stakingPool.algo.ts:291","pc":[836]},{"teal":976,"source":"contracts/stakingPool.algo.ts:291","pc":[837,838]},{"teal":982,"source":"contracts/stakingPool.algo.ts:293","pc":[839,840]},{"teal":983,"source":"contracts/stakingPool.algo.ts:293","pc":[841,842,843]},{"teal":984,"source":"contracts/stakingPool.algo.ts:293","pc":[844]},{"teal":985,"source":"contracts/stakingPool.algo.ts:293","pc":[845,846]},{"teal":986,"source":"contracts/stakingPool.algo.ts:293","pc":[847]},{"teal":987,"source":"contracts/stakingPool.algo.ts:293","pc":[848,849,850]},{"teal":991,"source":"contracts/stakingPool.algo.ts:294","errorMessage":"Insufficient balance","pc":[851]},{"teal":996,"source":"contracts/stakingPool.algo.ts:296","pc":[852,853]},{"teal":997,"source":"contracts/stakingPool.algo.ts:296","pc":[854,855]},{"teal":998,"source":"contracts/stakingPool.algo.ts:296","pc":[856,857]},{"teal":999,"source":"contracts/stakingPool.algo.ts:296","pc":[858,859,860]},{"teal":1000,"source":"contracts/stakingPool.algo.ts:296","pc":[861]},{"teal":1001,"source":"contracts/stakingPool.algo.ts:296","pc":[862,863]},{"teal":1002,"source":"contracts/stakingPool.algo.ts:296","pc":[864]},{"teal":1003,"source":"contracts/stakingPool.algo.ts:296","pc":[865]},{"teal":1004,"source":"contracts/stakingPool.algo.ts:296","pc":[866]},{"teal":1005,"source":"contracts/stakingPool.algo.ts:296","pc":[867,868]},{"teal":1009,"source":"contracts/stakingPool.algo.ts:297","pc":[869,870]},{"teal":1010,"source":"contracts/stakingPool.algo.ts:297","pc":[871]},{"teal":1011,"source":"contracts/stakingPool.algo.ts:297","pc":[872,873]},{"teal":1012,"source":"contracts/stakingPool.algo.ts:297","pc":[874]},{"teal":1013,"source":"contracts/stakingPool.algo.ts:297","pc":[875,876]},{"teal":1014,"source":"contracts/stakingPool.algo.ts:297","pc":[877]},{"teal":1015,"source":"contracts/stakingPool.algo.ts:297","pc":[878]},{"teal":1019,"source":"contracts/stakingPool.algo.ts:299","pc":[879]},{"teal":1020,"source":"contracts/stakingPool.algo.ts:299","pc":[880,881]},{"teal":1025,"source":"contracts/stakingPool.algo.ts:300","pc":[882,883]},{"teal":1026,"source":"contracts/stakingPool.algo.ts:300","pc":[884,885,886]},{"teal":1027,"source":"contracts/stakingPool.algo.ts:300","pc":[887]},{"teal":1028,"source":"contracts/stakingPool.algo.ts:300","pc":[888]},{"teal":1029,"source":"contracts/stakingPool.algo.ts:300","pc":[889]},{"teal":1030,"source":"contracts/stakingPool.algo.ts:300","pc":[890,891,892]},{"teal":1036,"source":"contracts/stakingPool.algo.ts:302","pc":[893,894]},{"teal":1037,"source":"contracts/stakingPool.algo.ts:302","pc":[895]},{"teal":1038,"source":"contracts/stakingPool.algo.ts:302","pc":[896]},{"teal":1039,"source":"contracts/stakingPool.algo.ts:302","pc":[897]},{"teal":1040,"source":"contracts/stakingPool.algo.ts:302","pc":[898,899,900]},{"teal":1048,"source":"contracts/stakingPool.algo.ts:303","pc":[901]},{"teal":1049,"source":"contracts/stakingPool.algo.ts:303","pc":[902]},{"teal":1050,"source":"contracts/stakingPool.algo.ts:303","pc":[903,904]},{"teal":1051,"source":"contracts/stakingPool.algo.ts:303","pc":[905,906]},{"teal":1052,"source":"contracts/stakingPool.algo.ts:303","pc":[907,908]},{"teal":1056,"source":"contracts/stakingPool.algo.ts:304","pc":[909]},{"teal":1057,"source":"contracts/stakingPool.algo.ts:304","pc":[910]},{"teal":1058,"source":"contracts/stakingPool.algo.ts:304","pc":[911,912]},{"teal":1062,"source":"contracts/stakingPool.algo.ts:305","pc":[913]},{"teal":1063,"source":"contracts/stakingPool.algo.ts:305","pc":[914]},{"teal":1064,"source":"contracts/stakingPool.algo.ts:305","pc":[915]},{"teal":1065,"source":"contracts/stakingPool.algo.ts:305","pc":[916,917]},{"teal":1068,"source":"contracts/stakingPool.algo.ts:303","pc":[918]},{"teal":1069,"source":"contracts/stakingPool.algo.ts:303","pc":[919,920]},{"teal":1072,"source":"contracts/stakingPool.algo.ts:303","pc":[921]},{"teal":1073,"source":"contracts/stakingPool.algo.ts:303","pc":[922,923]},{"teal":1074,"source":"contracts/stakingPool.algo.ts:303","pc":[924]},{"teal":1075,"source":"contracts/stakingPool.algo.ts:303","pc":[925]},{"teal":1076,"source":"contracts/stakingPool.algo.ts:303","pc":[926,927]},{"teal":1077,"source":"contracts/stakingPool.algo.ts:303","pc":[928,929,930]},{"teal":1078,"source":"contracts/stakingPool.algo.ts:303","pc":[931,932]},{"teal":1086,"source":"contracts/stakingPool.algo.ts:311","pc":[933]},{"teal":1087,"source":"contracts/stakingPool.algo.ts:311","pc":[934,935]},{"teal":1088,"source":"contracts/stakingPool.algo.ts:311","pc":[936,937]},{"teal":1092,"source":"contracts/stakingPool.algo.ts:312","pc":[938,939]},{"teal":1093,"source":"contracts/stakingPool.algo.ts:312","pc":[940,941,942]},{"teal":1094,"source":"contracts/stakingPool.algo.ts:312","pc":[943]},{"teal":1095,"source":"contracts/stakingPool.algo.ts:312","pc":[944,945]},{"teal":1099,"source":"contracts/stakingPool.algo.ts:313","pc":[946,947]},{"teal":1100,"source":"contracts/stakingPool.algo.ts:313","pc":[948,949]},{"teal":1104,"source":"contracts/stakingPool.algo.ts:314","pc":[950,951]},{"teal":1105,"source":"contracts/stakingPool.algo.ts:314","pc":[952,953,954]},{"teal":1106,"source":"contracts/stakingPool.algo.ts:314","pc":[955]},{"teal":1107,"source":"contracts/stakingPool.algo.ts:314","pc":[956,957]},{"teal":1110,"source":"contracts/stakingPool.algo.ts:311","pc":[958]},{"teal":1111,"source":"contracts/stakingPool.algo.ts:311","pc":[959,960]},{"teal":1114,"source":"contracts/stakingPool.algo.ts:311","pc":[961]},{"teal":1118,"source":"contracts/stakingPool.algo.ts:316","pc":[962,963]},{"teal":1119,"source":"contracts/stakingPool.algo.ts:316","pc":[964,965,966]},{"teal":1120,"source":"contracts/stakingPool.algo.ts:316","pc":[967]},{"teal":1121,"source":"contracts/stakingPool.algo.ts:316","pc":[968,969]},{"teal":1125,"source":"contracts/stakingPool.algo.ts:317","pc":[970,971]},{"teal":1126,"source":"contracts/stakingPool.algo.ts:317","pc":[972,973]},{"teal":1127,"source":"contracts/stakingPool.algo.ts:317","pc":[974,975]},{"teal":1128,"source":"contracts/stakingPool.algo.ts:317","pc":[976,977]},{"teal":1129,"source":"contracts/stakingPool.algo.ts:302","pc":[978,979,980]},{"teal":1134,"source":"contracts/stakingPool.algo.ts:322","pc":[981,982]},{"teal":1135,"source":"contracts/stakingPool.algo.ts:322","pc":[983,984,985]},{"teal":1136,"source":"contracts/stakingPool.algo.ts:322","pc":[986]},{"teal":1137,"source":"contracts/stakingPool.algo.ts:322","pc":[987,988]},{"teal":1141,"source":"contracts/stakingPool.algo.ts:323","pc":[989,990]},{"teal":1142,"source":"contracts/stakingPool.algo.ts:323","pc":[991,992]},{"teal":1143,"source":"contracts/stakingPool.algo.ts:323","pc":[993,994]},{"teal":1144,"source":"contracts/stakingPool.algo.ts:323","pc":[995,996]},{"teal":1154,"source":"contracts/stakingPool.algo.ts:329","pc":[997,998]},{"teal":1155,"source":"contracts/stakingPool.algo.ts:329","pc":[999,1000,1001]},{"teal":1156,"source":"contracts/stakingPool.algo.ts:329","pc":[1002]},{"teal":1157,"source":"contracts/stakingPool.algo.ts:329","pc":[1003]},{"teal":1158,"source":"contracts/stakingPool.algo.ts:329","pc":[1004]},{"teal":1159,"source":"contracts/stakingPool.algo.ts:329","pc":[1005]},{"teal":1160,"source":"contracts/stakingPool.algo.ts:329","pc":[1006,1007,1008]},{"teal":1161,"source":"contracts/stakingPool.algo.ts:329","pc":[1009,1010]},{"teal":1162,"source":"contracts/stakingPool.algo.ts:329","pc":[1011,1012,1013]},{"teal":1163,"source":"contracts/stakingPool.algo.ts:329","pc":[1014]},{"teal":1164,"source":"contracts/stakingPool.algo.ts:329","pc":[1015,1016]},{"teal":1165,"source":"contracts/stakingPool.algo.ts:329","pc":[1017]},{"teal":1166,"source":"contracts/stakingPool.algo.ts:329","pc":[1018]},{"teal":1167,"source":"contracts/stakingPool.algo.ts:329","pc":[1019]},{"teal":1171,"source":"contracts/stakingPool.algo.ts:328","errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1020]},{"teal":1179,"source":"contracts/stakingPool.algo.ts:336","pc":[1021]},{"teal":1180,"source":"contracts/stakingPool.algo.ts:336","pc":[1022]},{"teal":1181,"source":"contracts/stakingPool.algo.ts:336","pc":[1023,1024]},{"teal":1185,"source":"contracts/stakingPool.algo.ts:337","pc":[1025,1026]},{"teal":1186,"source":"contracts/stakingPool.algo.ts:337","pc":[1027,1028]},{"teal":1190,"source":"contracts/stakingPool.algo.ts:338","pc":[1029,1030]},{"teal":1191,"source":"contracts/stakingPool.algo.ts:338","pc":[1031,1032]},{"teal":1195,"source":"contracts/stakingPool.algo.ts:339","pc":[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042]},{"teal":1196,"source":"contracts/stakingPool.algo.ts:339","pc":[1043,1044]},{"teal":1199,"source":"contracts/stakingPool.algo.ts:336","pc":[1045]},{"teal":1200,"source":"contracts/stakingPool.algo.ts:336","pc":[1046,1047]},{"teal":1203,"source":"contracts/stakingPool.algo.ts:336","pc":[1048]},{"teal":1207,"source":"contracts/stakingPool.algo.ts:341","pc":[1049]},{"teal":1208,"source":"contracts/stakingPool.algo.ts:341","pc":[1050,1051]},{"teal":1213,"source":"contracts/stakingPool.algo.ts:342","pc":[1052,1053]},{"teal":1214,"source":"contracts/stakingPool.algo.ts:342","pc":[1054,1055,1056]},{"teal":1215,"source":"contracts/stakingPool.algo.ts:342","pc":[1057]},{"teal":1216,"source":"contracts/stakingPool.algo.ts:342","pc":[1058]},{"teal":1217,"source":"contracts/stakingPool.algo.ts:342","pc":[1059]},{"teal":1218,"source":"contracts/stakingPool.algo.ts:342","pc":[1060,1061,1062]},{"teal":1223,"source":"contracts/stakingPool.algo.ts:344","pc":[1063,1064]},{"teal":1224,"source":"contracts/stakingPool.algo.ts:344","pc":[1065]},{"teal":1225,"source":"contracts/stakingPool.algo.ts:344","pc":[1066]},{"teal":1226,"source":"contracts/stakingPool.algo.ts:344","pc":[1067]},{"teal":1227,"source":"contracts/stakingPool.algo.ts:344","pc":[1068,1069]},{"teal":1228,"source":"contracts/stakingPool.algo.ts:344","pc":[1070]},{"teal":1229,"source":"contracts/stakingPool.algo.ts:344","pc":[1071]},{"teal":1233,"source":"contracts/stakingPool.algo.ts:345","pc":[1072,1073]},{"teal":1234,"source":"contracts/stakingPool.algo.ts:345","pc":[1074]},{"teal":1235,"source":"contracts/stakingPool.algo.ts:345","pc":[1075,1076]},{"teal":1236,"source":"contracts/stakingPool.algo.ts:345","pc":[1077]},{"teal":1237,"source":"contracts/stakingPool.algo.ts:345","pc":[1078,1079]},{"teal":1241,"source":"contracts/stakingPool.algo.ts:346","pc":[1080,1081]},{"teal":1242,"source":"contracts/stakingPool.algo.ts:346","pc":[1082,1083]},{"teal":1243,"source":"contracts/stakingPool.algo.ts:346","pc":[1084,1085]},{"teal":1244,"source":"contracts/stakingPool.algo.ts:346","pc":[1086,1087]},{"teal":1248,"source":"contracts/stakingPool.algo.ts:347","pc":[1088,1089]},{"teal":1249,"source":"contracts/stakingPool.algo.ts:347","pc":[1090,1091]},{"teal":1250,"source":"contracts/stakingPool.algo.ts:347","pc":[1092,1093]},{"teal":1251,"source":"contracts/stakingPool.algo.ts:347","pc":[1094,1095]},{"teal":1255,"source":"contracts/stakingPool.algo.ts:348","pc":[1096]},{"teal":1256,"source":"contracts/stakingPool.algo.ts:348","pc":[1097,1098]},{"teal":1261,"source":"contracts/stakingPool.algo.ts:351","pc":[1099,1100]},{"teal":1262,"source":"contracts/stakingPool.algo.ts:351","pc":[1101]},{"teal":1263,"source":"contracts/stakingPool.algo.ts:351","pc":[1102]},{"teal":1264,"source":"contracts/stakingPool.algo.ts:351","pc":[1103,1104]},{"teal":1265,"source":"contracts/stakingPool.algo.ts:351","pc":[1105]},{"teal":1266,"source":"contracts/stakingPool.algo.ts:351","pc":[1106,1107]},{"teal":1267,"source":"contracts/stakingPool.algo.ts:351","pc":[1108]},{"teal":1271,"source":"contracts/stakingPool.algo.ts:353","pc":[1109,1110]},{"teal":1272,"source":"contracts/stakingPool.algo.ts:353","pc":[1111]},{"teal":1273,"source":"contracts/stakingPool.algo.ts:353","pc":[1112,1113]},{"teal":1274,"source":"contracts/stakingPool.algo.ts:353","pc":[1114]},{"teal":1275,"source":"contracts/stakingPool.algo.ts:353","pc":[1115]},{"teal":1276,"source":"contracts/stakingPool.algo.ts:353","pc":[1116,1117]},{"teal":1277,"source":"contracts/stakingPool.algo.ts:353","pc":[1118]},{"teal":1278,"source":"contracts/stakingPool.algo.ts:353","pc":[1119,1120]},{"teal":1282,"source":"contracts/stakingPool.algo.ts:354","pc":[1121,1122]},{"teal":1283,"source":"contracts/stakingPool.algo.ts:354","pc":[1123]},{"teal":1284,"source":"contracts/stakingPool.algo.ts:354","pc":[1124,1125]},{"teal":1285,"source":"contracts/stakingPool.algo.ts:354","pc":[1126]},{"teal":1286,"source":"contracts/stakingPool.algo.ts:354","pc":[1127]},{"teal":1287,"source":"contracts/stakingPool.algo.ts:354","pc":[1128]},{"teal":1288,"source":"contracts/stakingPool.algo.ts:354","pc":[1129]},{"teal":1289,"source":"contracts/stakingPool.algo.ts:354","pc":[1130,1131]},{"teal":1290,"source":"contracts/stakingPool.algo.ts:354","pc":[1132]},{"teal":1293,"source":"contracts/stakingPool.algo.ts:354","errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1133]},{"teal":1294,"source":"contracts/stakingPool.algo.ts:354","pc":[1134,1135]},{"teal":1295,"source":"contracts/stakingPool.algo.ts:354","pc":[1136]},{"teal":1296,"source":"contracts/stakingPool.algo.ts:354","pc":[1137]},{"teal":1297,"source":"contracts/stakingPool.algo.ts:354","pc":[1138]},{"teal":1298,"source":"contracts/stakingPool.algo.ts:354","pc":[1139]},{"teal":1299,"source":"contracts/stakingPool.algo.ts:354","pc":[1140,1141]},{"teal":1300,"source":"contracts/stakingPool.algo.ts:354","pc":[1142]},{"teal":1301,"source":"contracts/stakingPool.algo.ts:354","pc":[1143]},{"teal":1302,"source":"contracts/stakingPool.algo.ts:354","pc":[1144]},{"teal":1303,"source":"contracts/stakingPool.algo.ts:354","pc":[1145,1146]},{"teal":1307,"source":"contracts/stakingPool.algo.ts:355","pc":[1147,1148]},{"teal":1308,"source":"contracts/stakingPool.algo.ts:355","pc":[1149]},{"teal":1309,"source":"contracts/stakingPool.algo.ts:355","pc":[1150]},{"teal":1310,"source":"contracts/stakingPool.algo.ts:355","pc":[1151,1152]},{"teal":1311,"source":"contracts/stakingPool.algo.ts:355","pc":[1153]},{"teal":1312,"source":"contracts/stakingPool.algo.ts:355","pc":[1154]},{"teal":1313,"source":"contracts/stakingPool.algo.ts:355","pc":[1155]},{"teal":1314,"source":"contracts/stakingPool.algo.ts:355","pc":[1156,1157]},{"teal":1315,"source":"contracts/stakingPool.algo.ts:355","pc":[1158]},{"teal":1318,"source":"contracts/stakingPool.algo.ts:355","errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1159]},{"teal":1319,"source":"contracts/stakingPool.algo.ts:355","pc":[1160,1161]},{"teal":1320,"source":"contracts/stakingPool.algo.ts:355","pc":[1162]},{"teal":1321,"source":"contracts/stakingPool.algo.ts:355","pc":[1163]},{"teal":1322,"source":"contracts/stakingPool.algo.ts:355","pc":[1164]},{"teal":1323,"source":"contracts/stakingPool.algo.ts:355","pc":[1165]},{"teal":1324,"source":"contracts/stakingPool.algo.ts:355","pc":[1166,1167]},{"teal":1325,"source":"contracts/stakingPool.algo.ts:355","pc":[1168]},{"teal":1326,"source":"contracts/stakingPool.algo.ts:355","pc":[1169]},{"teal":1327,"source":"contracts/stakingPool.algo.ts:355","pc":[1170]},{"teal":1328,"source":"contracts/stakingPool.algo.ts:355","pc":[1171]},{"teal":1341,"source":"contracts/stakingPool.algo.ts:360","pc":[1172]},{"teal":1342,"source":"contracts/stakingPool.algo.ts:360","pc":[1173]},{"teal":1343,"source":"contracts/stakingPool.algo.ts:360","pc":[1174,1175]},{"teal":1344,"source":"contracts/stakingPool.algo.ts:360","pc":[1176,1177]},{"teal":1345,"source":"contracts/stakingPool.algo.ts:360","pc":[1178,1179]},{"teal":1349,"source":"contracts/stakingPool.algo.ts:361","pc":[1180]},{"teal":1350,"source":"contracts/stakingPool.algo.ts:361","pc":[1181]},{"teal":1351,"source":"contracts/stakingPool.algo.ts:361","pc":[1182,1183]},{"teal":1361,"source":"contracts/stakingPool.algo.ts:363","pc":[1184]},{"teal":1362,"source":"contracts/stakingPool.algo.ts:363","pc":[1185]},{"teal":1363,"source":"contracts/stakingPool.algo.ts:363","pc":[1186]},{"teal":1364,"source":"contracts/stakingPool.algo.ts:363","pc":[1187,1188]},{"teal":1365,"source":"contracts/stakingPool.algo.ts:363","pc":[1189]},{"teal":1366,"source":"contracts/stakingPool.algo.ts:363","pc":[1190]},{"teal":1367,"source":"contracts/stakingPool.algo.ts:363","pc":[1191]},{"teal":1368,"source":"contracts/stakingPool.algo.ts:363","pc":[1192,1193,1194]},{"teal":1369,"source":"contracts/stakingPool.algo.ts:363","pc":[1195]},{"teal":1370,"source":"contracts/stakingPool.algo.ts:363","pc":[1196]},{"teal":1371,"source":"contracts/stakingPool.algo.ts:363","pc":[1197,1198]},{"teal":1372,"source":"contracts/stakingPool.algo.ts:364","pc":[1199,1200]},{"teal":1373,"source":"contracts/stakingPool.algo.ts:364","pc":[1201,1202]},{"teal":1374,"source":"contracts/stakingPool.algo.ts:365","pc":[1203,1204]},{"teal":1375,"source":"contracts/stakingPool.algo.ts:365","pc":[1205]},{"teal":1376,"source":"contracts/stakingPool.algo.ts:365","pc":[1206,1207]},{"teal":1377,"source":"contracts/stakingPool.algo.ts:366","pc":[1208,1209]},{"teal":1378,"source":"contracts/stakingPool.algo.ts:366","pc":[1210]},{"teal":1379,"source":"contracts/stakingPool.algo.ts:366","pc":[1211,1212]},{"teal":1380,"source":"contracts/stakingPool.algo.ts:367","pc":[1213,1214]},{"teal":1381,"source":"contracts/stakingPool.algo.ts:367","pc":[1215,1216]},{"teal":1382,"source":"contracts/stakingPool.algo.ts:367","pc":[1217]},{"teal":1383,"source":"contracts/stakingPool.algo.ts:367","pc":[1218,1219]},{"teal":1384,"source":"contracts/stakingPool.algo.ts:367","pc":[1220]},{"teal":1385,"source":"contracts/stakingPool.algo.ts:367","pc":[1221,1222]},{"teal":1388,"source":"contracts/stakingPool.algo.ts:360","pc":[1223]},{"teal":1389,"source":"contracts/stakingPool.algo.ts:360","pc":[1224,1225]},{"teal":1392,"source":"contracts/stakingPool.algo.ts:360","pc":[1226]},{"teal":1396,"source":"contracts/stakingPool.algo.ts:370","pc":[1227]},{"teal":1403,"source":"contracts/stakingPool.algo.ts:283","pc":[1228,1229]},{"teal":1404,"source":"contracts/stakingPool.algo.ts:283","pc":[1230]},{"teal":1405,"source":"contracts/stakingPool.algo.ts:283","pc":[1231]},{"teal":1406,"source":"contracts/stakingPool.algo.ts:283","pc":[1232,1233]},{"teal":1407,"source":"contracts/stakingPool.algo.ts:283","pc":[1234,1235,1236]},{"teal":1411,"source":"contracts/stakingPool.algo.ts:373","errorMessage":"account not found","pc":[1237]},{"teal":1412,"source":"contracts/stakingPool.algo.ts:271","pc":[1238]},{"teal":1417,"source":"contracts/stakingPool.algo.ts:381","pc":[1239,1240,1241]},{"teal":1418,"source":"contracts/stakingPool.algo.ts:381","pc":[1242]},{"teal":1419,"source":"contracts/stakingPool.algo.ts:381","pc":[1243]},{"teal":1427,"source":"contracts/stakingPool.algo.ts:381","pc":[1244,1245,1246]},{"teal":1430,"source":"contracts/stakingPool.algo.ts:381","pc":[1247]},{"teal":1431,"source":"contracts/stakingPool.algo.ts:381","pc":[1248,1249]},{"teal":1435,"source":"contracts/stakingPool.algo.ts:385","pc":[1250,1251]},{"teal":1436,"source":"contracts/stakingPool.algo.ts:385","pc":[1252,1253]},{"teal":1440,"source":"contracts/stakingPool.algo.ts:387","pc":[1254]},{"teal":1441,"source":"contracts/stakingPool.algo.ts:387","pc":[1255,1256]},{"teal":1446,"source":"contracts/stakingPool.algo.ts:387","pc":[1257,1258]},{"teal":1447,"source":"contracts/stakingPool.algo.ts:387","pc":[1259,1260]},{"teal":1448,"source":"contracts/stakingPool.algo.ts:387","pc":[1261]},{"teal":1449,"source":"contracts/stakingPool.algo.ts:387","pc":[1262,1263,1264]},{"teal":1454,"source":"contracts/stakingPool.algo.ts:388","pc":[1265,1266]},{"teal":1455,"source":"contracts/stakingPool.algo.ts:388","pc":[1267,1268]},{"teal":1456,"source":"contracts/stakingPool.algo.ts:388","pc":[1269]},{"teal":1457,"source":"contracts/stakingPool.algo.ts:388","pc":[1270,1271,1272]},{"teal":1462,"source":"contracts/stakingPool.algo.ts:389","pc":[1273]},{"teal":1463,"source":"contracts/stakingPool.algo.ts:389","pc":[1274]},{"teal":1464,"source":"contracts/stakingPool.algo.ts:389","pc":[1275,1276]},{"teal":1465,"source":"contracts/stakingPool.algo.ts:389","pc":[1277]},{"teal":1466,"source":"contracts/stakingPool.algo.ts:389","pc":[1278,1279]},{"teal":1467,"source":"contracts/stakingPool.algo.ts:389","pc":[1280,1281]},{"teal":1468,"source":"contracts/stakingPool.algo.ts:389","pc":[1282]},{"teal":1469,"source":"contracts/stakingPool.algo.ts:389","pc":[1283,1284]},{"teal":1470,"source":"contracts/stakingPool.algo.ts:389","pc":[1285,1286]},{"teal":1471,"source":"contracts/stakingPool.algo.ts:389","pc":[1287,1288]},{"teal":1472,"source":"contracts/stakingPool.algo.ts:389","pc":[1289,1290]},{"teal":1473,"source":"contracts/stakingPool.algo.ts:389","pc":[1291]},{"teal":1478,"source":"contracts/stakingPool.algo.ts:391","pc":[1292,1293]},{"teal":1479,"source":"contracts/stakingPool.algo.ts:391","pc":[1294]},{"teal":1480,"source":"contracts/stakingPool.algo.ts:391","pc":[1295]},{"teal":1481,"source":"contracts/stakingPool.algo.ts:391","pc":[1296]},{"teal":1482,"source":"contracts/stakingPool.algo.ts:391","pc":[1297]},{"teal":1483,"source":"contracts/stakingPool.algo.ts:391","pc":[1298,1299]},{"teal":1484,"source":"contracts/stakingPool.algo.ts:391","pc":[1300]},{"teal":1485,"source":"contracts/stakingPool.algo.ts:391","pc":[1301,1302]},{"teal":1490,"source":"contracts/stakingPool.algo.ts:392","pc":[1303,1304]},{"teal":1491,"source":"contracts/stakingPool.algo.ts:392","pc":[1305,1306,1307]},{"teal":1492,"source":"contracts/stakingPool.algo.ts:392","pc":[1308,1309]},{"teal":1493,"source":"contracts/stakingPool.algo.ts:392","pc":[1310]},{"teal":1494,"source":"contracts/stakingPool.algo.ts:392","pc":[1311,1312,1313]},{"teal":1500,"source":"contracts/stakingPool.algo.ts:393","pc":[1314,1315]},{"teal":1501,"source":"contracts/stakingPool.algo.ts:393","pc":[1316,1317,1318]},{"teal":1502,"source":"contracts/stakingPool.algo.ts:393","pc":[1319]},{"teal":1503,"source":"contracts/stakingPool.algo.ts:393","pc":[1320]},{"teal":1504,"source":"contracts/stakingPool.algo.ts:393","pc":[1321]},{"teal":1505,"source":"contracts/stakingPool.algo.ts:393","pc":[1322,1323,1324]},{"teal":1510,"source":"contracts/stakingPool.algo.ts:394","pc":[1325]},{"teal":1515,"source":"contracts/stakingPool.algo.ts:396","pc":[1326]},{"teal":1516,"source":"contracts/stakingPool.algo.ts:396","pc":[1327,1328]},{"teal":1521,"source":"contracts/stakingPool.algo.ts:398","pc":[1329,1330]},{"teal":1522,"source":"contracts/stakingPool.algo.ts:398","pc":[1331]},{"teal":1523,"source":"contracts/stakingPool.algo.ts:398","pc":[1332]},{"teal":1524,"source":"contracts/stakingPool.algo.ts:398","pc":[1333]},{"teal":1525,"source":"contracts/stakingPool.algo.ts:398","pc":[1334,1335,1336]},{"teal":1533,"source":"contracts/stakingPool.algo.ts:399","pc":[1337]},{"teal":1534,"source":"contracts/stakingPool.algo.ts:399","pc":[1338]},{"teal":1535,"source":"contracts/stakingPool.algo.ts:399","pc":[1339,1340]},{"teal":1536,"source":"contracts/stakingPool.algo.ts:399","pc":[1341,1342]},{"teal":1537,"source":"contracts/stakingPool.algo.ts:399","pc":[1343,1344]},{"teal":1541,"source":"contracts/stakingPool.algo.ts:400","pc":[1345]},{"teal":1542,"source":"contracts/stakingPool.algo.ts:400","pc":[1346]},{"teal":1543,"source":"contracts/stakingPool.algo.ts:400","pc":[1347,1348]},{"teal":1547,"source":"contracts/stakingPool.algo.ts:401","pc":[1349]},{"teal":1548,"source":"contracts/stakingPool.algo.ts:401","pc":[1350]},{"teal":1549,"source":"contracts/stakingPool.algo.ts:401","pc":[1351]},{"teal":1550,"source":"contracts/stakingPool.algo.ts:401","pc":[1352,1353]},{"teal":1553,"source":"contracts/stakingPool.algo.ts:399","pc":[1354]},{"teal":1554,"source":"contracts/stakingPool.algo.ts:399","pc":[1355,1356]},{"teal":1557,"source":"contracts/stakingPool.algo.ts:399","pc":[1357]},{"teal":1558,"source":"contracts/stakingPool.algo.ts:399","pc":[1358,1359]},{"teal":1559,"source":"contracts/stakingPool.algo.ts:399","pc":[1360]},{"teal":1560,"source":"contracts/stakingPool.algo.ts:399","pc":[1361]},{"teal":1561,"source":"contracts/stakingPool.algo.ts:399","pc":[1362,1363]},{"teal":1562,"source":"contracts/stakingPool.algo.ts:399","pc":[1364,1365,1366]},{"teal":1563,"source":"contracts/stakingPool.algo.ts:399","pc":[1367,1368]},{"teal":1571,"source":"contracts/stakingPool.algo.ts:406","pc":[1369]},{"teal":1572,"source":"contracts/stakingPool.algo.ts:406","pc":[1370,1371]},{"teal":1573,"source":"contracts/stakingPool.algo.ts:406","pc":[1372,1373]},{"teal":1577,"source":"contracts/stakingPool.algo.ts:407","pc":[1374,1375]},{"teal":1578,"source":"contracts/stakingPool.algo.ts:407","pc":[1376,1377,1378]},{"teal":1579,"source":"contracts/stakingPool.algo.ts:407","pc":[1379]},{"teal":1580,"source":"contracts/stakingPool.algo.ts:407","pc":[1380,1381]},{"teal":1584,"source":"contracts/stakingPool.algo.ts:408","pc":[1382,1383]},{"teal":1585,"source":"contracts/stakingPool.algo.ts:408","pc":[1384,1385]},{"teal":1589,"source":"contracts/stakingPool.algo.ts:409","pc":[1386,1387]},{"teal":1590,"source":"contracts/stakingPool.algo.ts:409","pc":[1388,1389,1390]},{"teal":1591,"source":"contracts/stakingPool.algo.ts:409","pc":[1391]},{"teal":1592,"source":"contracts/stakingPool.algo.ts:409","pc":[1392,1393]},{"teal":1595,"source":"contracts/stakingPool.algo.ts:406","pc":[1394]},{"teal":1596,"source":"contracts/stakingPool.algo.ts:406","pc":[1395,1396]},{"teal":1599,"source":"contracts/stakingPool.algo.ts:406","pc":[1397]},{"teal":1603,"source":"contracts/stakingPool.algo.ts:411","pc":[1398,1399]},{"teal":1604,"source":"contracts/stakingPool.algo.ts:411","pc":[1400,1401,1402]},{"teal":1605,"source":"contracts/stakingPool.algo.ts:411","pc":[1403]},{"teal":1606,"source":"contracts/stakingPool.algo.ts:411","pc":[1404,1405]},{"teal":1610,"source":"contracts/stakingPool.algo.ts:412","pc":[1406,1407]},{"teal":1611,"source":"contracts/stakingPool.algo.ts:412","pc":[1408,1409]},{"teal":1612,"source":"contracts/stakingPool.algo.ts:412","pc":[1410,1411]},{"teal":1613,"source":"contracts/stakingPool.algo.ts:412","pc":[1412,1413]},{"teal":1614,"source":"contracts/stakingPool.algo.ts:398","pc":[1414,1415,1416]},{"teal":1619,"source":"contracts/stakingPool.algo.ts:417","pc":[1417,1418]},{"teal":1620,"source":"contracts/stakingPool.algo.ts:417","pc":[1419,1420,1421]},{"teal":1621,"source":"contracts/stakingPool.algo.ts:417","pc":[1422]},{"teal":1622,"source":"contracts/stakingPool.algo.ts:417","pc":[1423,1424]},{"teal":1626,"source":"contracts/stakingPool.algo.ts:418","pc":[1425,1426]},{"teal":1627,"source":"contracts/stakingPool.algo.ts:418","pc":[1427,1428]},{"teal":1628,"source":"contracts/stakingPool.algo.ts:418","pc":[1429,1430]},{"teal":1629,"source":"contracts/stakingPool.algo.ts:418","pc":[1431,1432]},{"teal":1634,"source":"contracts/stakingPool.algo.ts:422","pc":[1433,1434]},{"teal":1635,"source":"contracts/stakingPool.algo.ts:422","pc":[1435]},{"teal":1636,"source":"contracts/stakingPool.algo.ts:422","pc":[1436]},{"teal":1637,"source":"contracts/stakingPool.algo.ts:422","pc":[1437,1438]},{"teal":1638,"source":"contracts/stakingPool.algo.ts:422","pc":[1439]},{"teal":1639,"source":"contracts/stakingPool.algo.ts:422","pc":[1440,1441]},{"teal":1640,"source":"contracts/stakingPool.algo.ts:422","pc":[1442]},{"teal":1653,"source":"contracts/stakingPool.algo.ts:427","pc":[1443]},{"teal":1654,"source":"contracts/stakingPool.algo.ts:427","pc":[1444]},{"teal":1655,"source":"contracts/stakingPool.algo.ts:427","pc":[1445,1446]},{"teal":1656,"source":"contracts/stakingPool.algo.ts:427","pc":[1447,1448]},{"teal":1657,"source":"contracts/stakingPool.algo.ts:427","pc":[1449,1450]},{"teal":1661,"source":"contracts/stakingPool.algo.ts:428","pc":[1451]},{"teal":1662,"source":"contracts/stakingPool.algo.ts:428","pc":[1452]},{"teal":1663,"source":"contracts/stakingPool.algo.ts:428","pc":[1453,1454]},{"teal":1673,"source":"contracts/stakingPool.algo.ts:430","pc":[1455]},{"teal":1674,"source":"contracts/stakingPool.algo.ts:430","pc":[1456]},{"teal":1675,"source":"contracts/stakingPool.algo.ts:430","pc":[1457]},{"teal":1676,"source":"contracts/stakingPool.algo.ts:430","pc":[1458,1459]},{"teal":1677,"source":"contracts/stakingPool.algo.ts:430","pc":[1460]},{"teal":1678,"source":"contracts/stakingPool.algo.ts:430","pc":[1461]},{"teal":1679,"source":"contracts/stakingPool.algo.ts:430","pc":[1462]},{"teal":1680,"source":"contracts/stakingPool.algo.ts:430","pc":[1463,1464,1465]},{"teal":1681,"source":"contracts/stakingPool.algo.ts:430","pc":[1466]},{"teal":1682,"source":"contracts/stakingPool.algo.ts:430","pc":[1467]},{"teal":1683,"source":"contracts/stakingPool.algo.ts:430","pc":[1468,1469]},{"teal":1684,"source":"contracts/stakingPool.algo.ts:431","pc":[1470,1471]},{"teal":1685,"source":"contracts/stakingPool.algo.ts:431","pc":[1472,1473]},{"teal":1686,"source":"contracts/stakingPool.algo.ts:432","pc":[1474,1475]},{"teal":1687,"source":"contracts/stakingPool.algo.ts:432","pc":[1476,1477]},{"teal":1688,"source":"contracts/stakingPool.algo.ts:433","pc":[1478,1479]},{"teal":1689,"source":"contracts/stakingPool.algo.ts:433","pc":[1480]},{"teal":1690,"source":"contracts/stakingPool.algo.ts:433","pc":[1481,1482]},{"teal":1691,"source":"contracts/stakingPool.algo.ts:434","pc":[1483]},{"teal":1692,"source":"contracts/stakingPool.algo.ts:434","pc":[1484,1485]},{"teal":1693,"source":"contracts/stakingPool.algo.ts:434","pc":[1486]},{"teal":1694,"source":"contracts/stakingPool.algo.ts:434","pc":[1487,1488]},{"teal":1695,"source":"contracts/stakingPool.algo.ts:434","pc":[1489]},{"teal":1696,"source":"contracts/stakingPool.algo.ts:434","pc":[1490,1491]},{"teal":1699,"source":"contracts/stakingPool.algo.ts:427","pc":[1492]},{"teal":1700,"source":"contracts/stakingPool.algo.ts:427","pc":[1493,1494]},{"teal":1703,"source":"contracts/stakingPool.algo.ts:427","pc":[1495]},{"teal":1707,"source":"contracts/stakingPool.algo.ts:437","pc":[1496]},{"teal":1714,"source":"contracts/stakingPool.algo.ts:387","pc":[1497,1498]},{"teal":1715,"source":"contracts/stakingPool.algo.ts:387","pc":[1499]},{"teal":1716,"source":"contracts/stakingPool.algo.ts:387","pc":[1500]},{"teal":1717,"source":"contracts/stakingPool.algo.ts:387","pc":[1501,1502]},{"teal":1718,"source":"contracts/stakingPool.algo.ts:387","pc":[1503,1504,1505]},{"teal":1722,"source":"contracts/stakingPool.algo.ts:440","errorMessage":"account not found","pc":[1506]},{"teal":1723,"source":"contracts/stakingPool.algo.ts:381","pc":[1507]},{"teal":1728,"source":"contracts/stakingPool.algo.ts:450","pc":[1508,1509]},{"teal":1731,"source":"contracts/stakingPool.algo.ts:451","pc":[1510,1511,1512]},{"teal":1732,"source":"contracts/stakingPool.algo.ts:451","pc":[1513]},{"teal":1733,"source":"contracts/stakingPool.algo.ts:451","pc":[1514]},{"teal":1734,"source":"contracts/stakingPool.algo.ts:451","pc":[1515,1516]},{"teal":1735,"source":"contracts/stakingPool.algo.ts:451","pc":[1517]},{"teal":1738,"source":"contracts/stakingPool.algo.ts:451","errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1518]},{"teal":1741,"source":"contracts/stakingPool.algo.ts:450","pc":[1519,1520,1521]},{"teal":1742,"source":"contracts/stakingPool.algo.ts:450","pc":[1522]},{"teal":1743,"source":"contracts/stakingPool.algo.ts:450","pc":[1523]},{"teal":1744,"source":"contracts/stakingPool.algo.ts:450","pc":[1524]},{"teal":1745,"source":"contracts/stakingPool.algo.ts:450","pc":[1525]},{"teal":1755,"source":"contracts/stakingPool.algo.ts:450","pc":[1526,1527,1528]},{"teal":1758,"source":"contracts/stakingPool.algo.ts:450","pc":[1529]},{"teal":1762,"source":"contracts/stakingPool.algo.ts:452","pc":[1530]},{"teal":1763,"source":"contracts/stakingPool.algo.ts:452","pc":[1531,1532]},{"teal":1768,"source":"contracts/stakingPool.algo.ts:452","pc":[1533,1534]},{"teal":1769,"source":"contracts/stakingPool.algo.ts:452","pc":[1535,1536]},{"teal":1770,"source":"contracts/stakingPool.algo.ts:452","pc":[1537]},{"teal":1771,"source":"contracts/stakingPool.algo.ts:452","pc":[1538,1539,1540]},{"teal":1776,"source":"contracts/stakingPool.algo.ts:453","pc":[1541,1542]},{"teal":1777,"source":"contracts/stakingPool.algo.ts:453","pc":[1543,1544]},{"teal":1778,"source":"contracts/stakingPool.algo.ts:453","pc":[1545]},{"teal":1779,"source":"contracts/stakingPool.algo.ts:453","pc":[1546,1547,1548]},{"teal":1784,"source":"contracts/stakingPool.algo.ts:454","pc":[1549]},{"teal":1785,"source":"contracts/stakingPool.algo.ts:454","pc":[1550]},{"teal":1786,"source":"contracts/stakingPool.algo.ts:454","pc":[1551,1552]},{"teal":1787,"source":"contracts/stakingPool.algo.ts:454","pc":[1553]},{"teal":1788,"source":"contracts/stakingPool.algo.ts:454","pc":[1554,1555]},{"teal":1789,"source":"contracts/stakingPool.algo.ts:454","pc":[1556,1557]},{"teal":1790,"source":"contracts/stakingPool.algo.ts:454","pc":[1558]},{"teal":1791,"source":"contracts/stakingPool.algo.ts:454","pc":[1559,1560]},{"teal":1792,"source":"contracts/stakingPool.algo.ts:454","pc":[1561,1562]},{"teal":1793,"source":"contracts/stakingPool.algo.ts:454","pc":[1563,1564]},{"teal":1794,"source":"contracts/stakingPool.algo.ts:454","pc":[1565,1566]},{"teal":1795,"source":"contracts/stakingPool.algo.ts:454","pc":[1567]},{"teal":1801,"source":"contracts/stakingPool.algo.ts:456","pc":[1568,1569]},{"teal":1802,"source":"contracts/stakingPool.algo.ts:456","pc":[1570]},{"teal":1803,"source":"contracts/stakingPool.algo.ts:456","pc":[1571]},{"teal":1804,"source":"contracts/stakingPool.algo.ts:456","pc":[1572]},{"teal":1805,"source":"contracts/stakingPool.algo.ts:456","pc":[1573]},{"teal":1806,"source":"contracts/stakingPool.algo.ts:456","pc":[1574,1575]},{"teal":1807,"source":"contracts/stakingPool.algo.ts:456","pc":[1576]},{"teal":1808,"source":"contracts/stakingPool.algo.ts:456","pc":[1577,1578]},{"teal":1809,"source":"contracts/stakingPool.algo.ts:456","pc":[1579]},{"teal":1810,"source":"contracts/stakingPool.algo.ts:456","pc":[1580,1581]},{"teal":1811,"source":"contracts/stakingPool.algo.ts:456","pc":[1582]},{"teal":1812,"source":"contracts/stakingPool.algo.ts:456","pc":[1583,1584,1585]},{"teal":1817,"source":"contracts/stakingPool.algo.ts:457","pc":[1586,1587]},{"teal":1818,"source":"contracts/stakingPool.algo.ts:457","pc":[1588]},{"teal":1819,"source":"contracts/stakingPool.algo.ts:457","pc":[1589]},{"teal":1820,"source":"contracts/stakingPool.algo.ts:457","pc":[1590]},{"teal":1821,"source":"contracts/stakingPool.algo.ts:457","pc":[1591]},{"teal":1822,"source":"contracts/stakingPool.algo.ts:457","pc":[1592,1593]},{"teal":1823,"source":"contracts/stakingPool.algo.ts:457","pc":[1594]},{"teal":1824,"source":"contracts/stakingPool.algo.ts:457","pc":[1595,1596,1597]},{"teal":1831,"source":"contracts/stakingPool.algo.ts:452","pc":[1598,1599]},{"teal":1832,"source":"contracts/stakingPool.algo.ts:452","pc":[1600]},{"teal":1833,"source":"contracts/stakingPool.algo.ts:452","pc":[1601]},{"teal":1834,"source":"contracts/stakingPool.algo.ts:452","pc":[1602,1603]},{"teal":1835,"source":"contracts/stakingPool.algo.ts:452","pc":[1604,1605,1606]},{"teal":1839,"source":"contracts/stakingPool.algo.ts:460","errorMessage":"account not found","pc":[1607]},{"teal":1843,"source":"contracts/stakingPool.algo.ts:450","pc":[1608,1609]},{"teal":1844,"source":"contracts/stakingPool.algo.ts:450","pc":[1610]},{"teal":1849,"source":"contracts/stakingPool.algo.ts:473","pc":[1611,1612,1613]},{"teal":1850,"source":"contracts/stakingPool.algo.ts:473","pc":[1614]},{"teal":1853,"source":"contracts/stakingPool.algo.ts:473","pc":[1615,1616,1617]},{"teal":1854,"source":"contracts/stakingPool.algo.ts:473","pc":[1618]},{"teal":1857,"source":"contracts/stakingPool.algo.ts:473","pc":[1619,1620,1621]},{"teal":1858,"source":"contracts/stakingPool.algo.ts:473","pc":[1622]},{"teal":1859,"source":"contracts/stakingPool.algo.ts:473","pc":[1623]},{"teal":1860,"source":"contracts/stakingPool.algo.ts:473","pc":[1624,1625]},{"teal":1861,"source":"contracts/stakingPool.algo.ts:473","pc":[1626]},{"teal":1864,"source":"contracts/stakingPool.algo.ts:473","errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1627]},{"teal":1867,"source":"contracts/stakingPool.algo.ts:473","pc":[1628,1629,1630]},{"teal":1868,"source":"contracts/stakingPool.algo.ts:473","pc":[1631]},{"teal":1869,"source":"contracts/stakingPool.algo.ts:473","pc":[1632]},{"teal":1882,"source":"contracts/stakingPool.algo.ts:473","pc":[1633,1634,1635]},{"teal":1889,"source":"contracts/stakingPool.algo.ts:476","pc":[1636,1637]},{"teal":1890,"source":"contracts/stakingPool.algo.ts:476","pc":[1638]},{"teal":1891,"source":"contracts/stakingPool.algo.ts:476","pc":[1639]},{"teal":1892,"source":"contracts/stakingPool.algo.ts:476","pc":[1640,1641]},{"teal":1893,"source":"contracts/stakingPool.algo.ts:476","pc":[1642]},{"teal":1894,"source":"contracts/stakingPool.algo.ts:476","pc":[1643]},{"teal":1897,"source":"contracts/stakingPool.algo.ts:475","errorMessage":"this can only be called via the validator contract","pc":[1644]},{"teal":1901,"source":"contracts/stakingPool.algo.ts:479","pc":[1645,1646]},{"teal":1902,"source":"contracts/stakingPool.algo.ts:479","pc":[1647]},{"teal":1903,"source":"contracts/stakingPool.algo.ts:479","pc":[1648]},{"teal":1904,"source":"contracts/stakingPool.algo.ts:479","pc":[1649]},{"teal":1907,"source":"contracts/stakingPool.algo.ts:479","errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1650]},{"teal":1911,"source":"contracts/stakingPool.algo.ts:480","pc":[1651,1652]},{"teal":1912,"source":"contracts/stakingPool.algo.ts:480","pc":[1653]},{"teal":1913,"source":"contracts/stakingPool.algo.ts:480","pc":[1654]},{"teal":1916,"source":"contracts/stakingPool.algo.ts:480","errorMessage":"can only claim token rewards from validator that has them","pc":[1655]},{"teal":1924,"source":"contracts/stakingPool.algo.ts:483","pc":[1656]},{"teal":1925,"source":"contracts/stakingPool.algo.ts:483","pc":[1657,1658]},{"teal":1926,"source":"contracts/stakingPool.algo.ts:483","pc":[1659,1660]},{"teal":1930,"source":"contracts/stakingPool.algo.ts:484","pc":[1661,1662]},{"teal":1931,"source":"contracts/stakingPool.algo.ts:484","pc":[1663,1664]},{"teal":1935,"source":"contracts/stakingPool.algo.ts:485","pc":[1665,1666]},{"teal":1936,"source":"contracts/stakingPool.algo.ts:485","pc":[1667,1668]},{"teal":1940,"source":"contracts/stakingPool.algo.ts:486","pc":[1669,1670]},{"teal":1941,"source":"contracts/stakingPool.algo.ts:486","pc":[1671,1672]},{"teal":1944,"source":"contracts/stakingPool.algo.ts:483","pc":[1673]},{"teal":1945,"source":"contracts/stakingPool.algo.ts:483","pc":[1674,1675]},{"teal":1948,"source":"contracts/stakingPool.algo.ts:483","pc":[1676]},{"teal":1949,"source":"contracts/stakingPool.algo.ts:473","pc":[1677]},{"teal":1954,"source":"contracts/stakingPool.algo.ts:499","pc":[1678,1679,1680]},{"teal":1955,"source":"contracts/stakingPool.algo.ts:499","pc":[1681,1682,1683]},{"teal":1958,"source":"contracts/stakingPool.algo.ts:499","pc":[1684,1685,1686]},{"teal":1959,"source":"contracts/stakingPool.algo.ts:499","pc":[1687]},{"teal":1960,"source":"contracts/stakingPool.algo.ts:499","pc":[1688]},{"teal":1972,"source":"contracts/stakingPool.algo.ts:499","pc":[1689,1690,1691]},{"teal":1976,"source":"contracts/stakingPool.algo.ts:500","pc":[1692,1693,1694]},{"teal":1979,"source":"contracts/stakingPool.algo.ts:500","errorMessage":"can only be called by owner or manager of validator","pc":[1695]},{"teal":1983,"source":"contracts/stakingPool.algo.ts:501","pc":[1696,1697,1698,1699,1700,1701,1702,1703,1704,1705]},{"teal":1984,"source":"contracts/stakingPool.algo.ts:501","pc":[1706,1707]},{"teal":1985,"source":"contracts/stakingPool.algo.ts:501","pc":[1708]},{"teal":1986,"source":"contracts/stakingPool.algo.ts:499","pc":[1709]},{"teal":1991,"source":"contracts/stakingPool.algo.ts:512","pc":[1710,1711,1712]},{"teal":1992,"source":"contracts/stakingPool.algo.ts:512","pc":[1713]},{"teal":1993,"source":"contracts/stakingPool.algo.ts:512","pc":[1714]},{"teal":2004,"source":"contracts/stakingPool.algo.ts:512","pc":[1715,1716,1717]},{"teal":2007,"source":"contracts/stakingPool.algo.ts:512","pc":[1718]},{"teal":2008,"source":"contracts/stakingPool.algo.ts:512","pc":[1719,1720]},{"teal":2015,"source":"contracts/stakingPool.algo.ts:514","pc":[1721]},{"teal":2016,"source":"contracts/stakingPool.algo.ts:514","pc":[1722]},{"teal":2017,"source":"contracts/stakingPool.algo.ts:514","pc":[1723,1724]},{"teal":2018,"source":"contracts/stakingPool.algo.ts:514","pc":[1725,1726]},{"teal":2019,"source":"contracts/stakingPool.algo.ts:514","pc":[1727,1728]},{"teal":2023,"source":"contracts/stakingPool.algo.ts:515","pc":[1729]},{"teal":2024,"source":"contracts/stakingPool.algo.ts:515","pc":[1730]},{"teal":2025,"source":"contracts/stakingPool.algo.ts:515","pc":[1731,1732]},{"teal":2029,"source":"contracts/stakingPool.algo.ts:516","pc":[1733]},{"teal":2030,"source":"contracts/stakingPool.algo.ts:516","pc":[1734]},{"teal":2031,"source":"contracts/stakingPool.algo.ts:516","pc":[1735]},{"teal":2032,"source":"contracts/stakingPool.algo.ts:516","pc":[1736,1737]},{"teal":2035,"source":"contracts/stakingPool.algo.ts:514","pc":[1738]},{"teal":2036,"source":"contracts/stakingPool.algo.ts:514","pc":[1739,1740]},{"teal":2039,"source":"contracts/stakingPool.algo.ts:514","pc":[1741]},{"teal":2040,"source":"contracts/stakingPool.algo.ts:514","pc":[1742,1743]},{"teal":2041,"source":"contracts/stakingPool.algo.ts:514","pc":[1744]},{"teal":2042,"source":"contracts/stakingPool.algo.ts:514","pc":[1745]},{"teal":2043,"source":"contracts/stakingPool.algo.ts:514","pc":[1746,1747]},{"teal":2044,"source":"contracts/stakingPool.algo.ts:514","pc":[1748,1749,1750]},{"teal":2045,"source":"contracts/stakingPool.algo.ts:514","pc":[1751,1752]},{"teal":2049,"source":"contracts/stakingPool.algo.ts:523","pc":[1753,1754]},{"teal":2050,"source":"contracts/stakingPool.algo.ts:523","pc":[1755,1756,1757]},{"teal":2051,"source":"contracts/stakingPool.algo.ts:523","pc":[1758]},{"teal":2052,"source":"contracts/stakingPool.algo.ts:523","pc":[1759,1760]},{"teal":2056,"source":"contracts/stakingPool.algo.ts:524","pc":[1761,1762]},{"teal":2057,"source":"contracts/stakingPool.algo.ts:524","pc":[1763,1764]},{"teal":2061,"source":"contracts/stakingPool.algo.ts:525","pc":[1765,1766]},{"teal":2062,"source":"contracts/stakingPool.algo.ts:525","pc":[1767,1768]},{"teal":2063,"source":"contracts/stakingPool.algo.ts:525","pc":[1769,1770]},{"teal":2064,"source":"contracts/stakingPool.algo.ts:525","pc":[1771]},{"teal":2065,"source":"contracts/stakingPool.algo.ts:525","pc":[1772]},{"teal":2066,"source":"contracts/stakingPool.algo.ts:525","pc":[1773,1774]},{"teal":2070,"source":"contracts/stakingPool.algo.ts:528","pc":[1775,1776]},{"teal":2071,"source":"contracts/stakingPool.algo.ts:528","pc":[1777]},{"teal":2072,"source":"contracts/stakingPool.algo.ts:528","pc":[1778,1779]},{"teal":2073,"source":"contracts/stakingPool.algo.ts:528","pc":[1780]},{"teal":2074,"source":"contracts/stakingPool.algo.ts:528","pc":[1781,1782]},{"teal":2075,"source":"contracts/stakingPool.algo.ts:528","pc":[1783]},{"teal":2076,"source":"contracts/stakingPool.algo.ts:528","pc":[1784]},{"teal":2077,"source":"contracts/stakingPool.algo.ts:528","pc":[1785,1786]},{"teal":2081,"source":"contracts/stakingPool.algo.ts:530","pc":[1787,1788]},{"teal":2082,"source":"contracts/stakingPool.algo.ts:530","pc":[1789,1790]},{"teal":2083,"source":"contracts/stakingPool.algo.ts:530","pc":[1791]},{"teal":2086,"source":"contracts/stakingPool.algo.ts:530","errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[1792]},{"teal":2090,"source":"contracts/stakingPool.algo.ts:532","pc":[1793,1794,1795]},{"teal":2094,"source":"contracts/stakingPool.algo.ts:535","pc":[1796,1797]},{"teal":2095,"source":"contracts/stakingPool.algo.ts:535","pc":[1798,1799]},{"teal":2096,"source":"contracts/stakingPool.algo.ts:535","pc":[1800]},{"teal":2100,"source":"contracts/stakingPool.algo.ts:536","pc":[1801,1802]},{"teal":2101,"source":"contracts/stakingPool.algo.ts:536","pc":[1803]},{"teal":2102,"source":"contracts/stakingPool.algo.ts:536","pc":[1804]},{"teal":2103,"source":"contracts/stakingPool.algo.ts:536","pc":[1805]},{"teal":2104,"source":"contracts/stakingPool.algo.ts:536","pc":[1806,1807]},{"teal":2105,"source":"contracts/stakingPool.algo.ts:536","pc":[1808]},{"teal":2106,"source":"contracts/stakingPool.algo.ts:536","pc":[1809]},{"teal":2110,"source":"contracts/stakingPool.algo.ts:541","pc":[1810,1811]},{"teal":2111,"source":"contracts/stakingPool.algo.ts:541","pc":[1812,1813,1814]},{"teal":2112,"source":"contracts/stakingPool.algo.ts:541","pc":[1815]},{"teal":2113,"source":"contracts/stakingPool.algo.ts:541","pc":[1816]},{"teal":2114,"source":"contracts/stakingPool.algo.ts:541","pc":[1817]},{"teal":2115,"source":"contracts/stakingPool.algo.ts:541","pc":[1818,1819]},{"teal":2119,"source":"contracts/stakingPool.algo.ts:542","pc":[1820,1821,1822]},{"teal":2120,"source":"contracts/stakingPool.algo.ts:542","pc":[1823,1824]},{"teal":2124,"source":"contracts/stakingPool.algo.ts:543","pc":[1825,1826]},{"teal":2125,"source":"contracts/stakingPool.algo.ts:543","pc":[1827,1828]},{"teal":2130,"source":"contracts/stakingPool.algo.ts:548","pc":[1829,1830]},{"teal":2131,"source":"contracts/stakingPool.algo.ts:548","pc":[1831,1832,1833]},{"teal":2137,"source":"contracts/stakingPool.algo.ts:549","pc":[1834,1835]},{"teal":2138,"source":"contracts/stakingPool.algo.ts:549","pc":[1836]},{"teal":2139,"source":"contracts/stakingPool.algo.ts:549","pc":[1837]},{"teal":2140,"source":"contracts/stakingPool.algo.ts:549","pc":[1838]},{"teal":2141,"source":"contracts/stakingPool.algo.ts:549","pc":[1839,1840,1841]},{"teal":2149,"source":"contracts/stakingPool.algo.ts:551","pc":[1842]},{"teal":2150,"source":"contracts/stakingPool.algo.ts:551","pc":[1843]},{"teal":2151,"source":"contracts/stakingPool.algo.ts:551","pc":[1844,1845]},{"teal":2152,"source":"contracts/stakingPool.algo.ts:551","pc":[1846,1847]},{"teal":2153,"source":"contracts/stakingPool.algo.ts:551","pc":[1848,1849]},{"teal":2157,"source":"contracts/stakingPool.algo.ts:552","pc":[1850]},{"teal":2158,"source":"contracts/stakingPool.algo.ts:552","pc":[1851]},{"teal":2159,"source":"contracts/stakingPool.algo.ts:552","pc":[1852,1853]},{"teal":2163,"source":"contracts/stakingPool.algo.ts:553","pc":[1854]},{"teal":2164,"source":"contracts/stakingPool.algo.ts:553","pc":[1855]},{"teal":2165,"source":"contracts/stakingPool.algo.ts:553","pc":[1856]},{"teal":2166,"source":"contracts/stakingPool.algo.ts:553","pc":[1857,1858]},{"teal":2167,"source":"contracts/stakingPool.algo.ts:553","pc":[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868]},{"teal":2168,"source":"contracts/stakingPool.algo.ts:553","pc":[1869,1870]},{"teal":2171,"source":"contracts/stakingPool.algo.ts:551","pc":[1871]},{"teal":2172,"source":"contracts/stakingPool.algo.ts:551","pc":[1872,1873]},{"teal":2175,"source":"contracts/stakingPool.algo.ts:551","pc":[1874]},{"teal":2176,"source":"contracts/stakingPool.algo.ts:551","pc":[1875,1876]},{"teal":2177,"source":"contracts/stakingPool.algo.ts:551","pc":[1877]},{"teal":2178,"source":"contracts/stakingPool.algo.ts:551","pc":[1878]},{"teal":2179,"source":"contracts/stakingPool.algo.ts:551","pc":[1879,1880]},{"teal":2180,"source":"contracts/stakingPool.algo.ts:551","pc":[1881,1882,1883]},{"teal":2181,"source":"contracts/stakingPool.algo.ts:551","pc":[1884]},{"teal":2182,"source":"contracts/stakingPool.algo.ts:551","pc":[1885,1886]},{"teal":2186,"source":"contracts/stakingPool.algo.ts:555","pc":[1887,1888]},{"teal":2187,"source":"contracts/stakingPool.algo.ts:555","pc":[1889,1890]},{"teal":2188,"source":"contracts/stakingPool.algo.ts:555","pc":[1891]},{"teal":2189,"source":"contracts/stakingPool.algo.ts:555","pc":[1892,1893]},{"teal":2195,"source":"contracts/stakingPool.algo.ts:560","pc":[1894,1895]},{"teal":2196,"source":"contracts/stakingPool.algo.ts:560","pc":[1896]},{"teal":2197,"source":"contracts/stakingPool.algo.ts:560","pc":[1897]},{"teal":2198,"source":"contracts/stakingPool.algo.ts:560","pc":[1898]},{"teal":2199,"source":"contracts/stakingPool.algo.ts:560","pc":[1899,1900,1901]},{"teal":2207,"source":"contracts/stakingPool.algo.ts:561","pc":[1902]},{"teal":2208,"source":"contracts/stakingPool.algo.ts:561","pc":[1903]},{"teal":2209,"source":"contracts/stakingPool.algo.ts:561","pc":[1904,1905]},{"teal":2210,"source":"contracts/stakingPool.algo.ts:561","pc":[1906,1907]},{"teal":2211,"source":"contracts/stakingPool.algo.ts:561","pc":[1908,1909]},{"teal":2215,"source":"contracts/stakingPool.algo.ts:562","pc":[1910]},{"teal":2216,"source":"contracts/stakingPool.algo.ts:562","pc":[1911]},{"teal":2217,"source":"contracts/stakingPool.algo.ts:562","pc":[1912,1913]},{"teal":2221,"source":"contracts/stakingPool.algo.ts:563","pc":[1914]},{"teal":2222,"source":"contracts/stakingPool.algo.ts:563","pc":[1915]},{"teal":2223,"source":"contracts/stakingPool.algo.ts:563","pc":[1916]},{"teal":2224,"source":"contracts/stakingPool.algo.ts:563","pc":[1917,1918]},{"teal":2227,"source":"contracts/stakingPool.algo.ts:561","pc":[1919]},{"teal":2228,"source":"contracts/stakingPool.algo.ts:561","pc":[1920,1921]},{"teal":2231,"source":"contracts/stakingPool.algo.ts:561","pc":[1922]},{"teal":2232,"source":"contracts/stakingPool.algo.ts:561","pc":[1923,1924]},{"teal":2233,"source":"contracts/stakingPool.algo.ts:561","pc":[1925]},{"teal":2234,"source":"contracts/stakingPool.algo.ts:561","pc":[1926]},{"teal":2235,"source":"contracts/stakingPool.algo.ts:561","pc":[1927,1928]},{"teal":2236,"source":"contracts/stakingPool.algo.ts:561","pc":[1929,1930,1931]},{"teal":2237,"source":"contracts/stakingPool.algo.ts:561","pc":[1932,1933]},{"teal":2238,"source":"contracts/stakingPool.algo.ts:560","pc":[1934,1935,1936]},{"teal":2246,"source":"contracts/stakingPool.algo.ts:567","pc":[1937]},{"teal":2247,"source":"contracts/stakingPool.algo.ts:567","pc":[1938]},{"teal":2248,"source":"contracts/stakingPool.algo.ts:567","pc":[1939,1940]},{"teal":2249,"source":"contracts/stakingPool.algo.ts:567","pc":[1941,1942]},{"teal":2250,"source":"contracts/stakingPool.algo.ts:567","pc":[1943,1944]},{"teal":2254,"source":"contracts/stakingPool.algo.ts:568","pc":[1945,1946]},{"teal":2255,"source":"contracts/stakingPool.algo.ts:568","pc":[1947,1948]},{"teal":2259,"source":"contracts/stakingPool.algo.ts:569","pc":[1949]},{"teal":2260,"source":"contracts/stakingPool.algo.ts:569","pc":[1950]},{"teal":2261,"source":"contracts/stakingPool.algo.ts:569","pc":[1951]},{"teal":2262,"source":"contracts/stakingPool.algo.ts:569","pc":[1952,1953]},{"teal":2263,"source":"contracts/stakingPool.algo.ts:569","pc":[1954]},{"teal":2264,"source":"contracts/stakingPool.algo.ts:569","pc":[1955]},{"teal":2265,"source":"contracts/stakingPool.algo.ts:569","pc":[1956]},{"teal":2266,"source":"contracts/stakingPool.algo.ts:569","pc":[1957,1958,1959]},{"teal":2267,"source":"contracts/stakingPool.algo.ts:569","pc":[1960]},{"teal":2268,"source":"contracts/stakingPool.algo.ts:569","pc":[1961]},{"teal":2269,"source":"contracts/stakingPool.algo.ts:569","pc":[1962,1963]},{"teal":2272,"source":"contracts/stakingPool.algo.ts:567","pc":[1964]},{"teal":2273,"source":"contracts/stakingPool.algo.ts:567","pc":[1965,1966]},{"teal":2276,"source":"contracts/stakingPool.algo.ts:567","pc":[1967]},{"teal":2277,"source":"contracts/stakingPool.algo.ts:567","pc":[1968,1969]},{"teal":2278,"source":"contracts/stakingPool.algo.ts:567","pc":[1970]},{"teal":2279,"source":"contracts/stakingPool.algo.ts:567","pc":[1971]},{"teal":2280,"source":"contracts/stakingPool.algo.ts:567","pc":[1972,1973]},{"teal":2281,"source":"contracts/stakingPool.algo.ts:567","pc":[1974,1975,1976]},{"teal":2282,"source":"contracts/stakingPool.algo.ts:567","pc":[1977,1978]},{"teal":2292,"source":"contracts/stakingPool.algo.ts:576","pc":[1979]},{"teal":2293,"source":"contracts/stakingPool.algo.ts:576","pc":[1980]},{"teal":2294,"source":"contracts/stakingPool.algo.ts:576","pc":[1981,1982]},{"teal":2295,"source":"contracts/stakingPool.algo.ts:576","pc":[1983,1984,1985,1986,1987,1988]},{"teal":2296,"source":"contracts/stakingPool.algo.ts:576","pc":[1989,1990]},{"teal":2300,"source":"contracts/stakingPool.algo.ts:577","pc":[1991]},{"teal":2301,"source":"contracts/stakingPool.algo.ts:577","pc":[1992]},{"teal":2302,"source":"contracts/stakingPool.algo.ts:577","pc":[1993,1994]},{"teal":2306,"source":"contracts/stakingPool.algo.ts:578","pc":[1995]},{"teal":2307,"source":"contracts/stakingPool.algo.ts:578","pc":[1996]},{"teal":2308,"source":"contracts/stakingPool.algo.ts:578","pc":[1997]},{"teal":2309,"source":"contracts/stakingPool.algo.ts:578","pc":[1998,1999]},{"teal":2312,"source":"contracts/stakingPool.algo.ts:576","pc":[2000]},{"teal":2313,"source":"contracts/stakingPool.algo.ts:576","pc":[2001,2002]},{"teal":2316,"source":"contracts/stakingPool.algo.ts:576","pc":[2003]},{"teal":2317,"source":"contracts/stakingPool.algo.ts:576","pc":[2004,2005]},{"teal":2318,"source":"contracts/stakingPool.algo.ts:576","pc":[2006]},{"teal":2319,"source":"contracts/stakingPool.algo.ts:576","pc":[2007]},{"teal":2320,"source":"contracts/stakingPool.algo.ts:576","pc":[2008,2009]},{"teal":2321,"source":"contracts/stakingPool.algo.ts:576","pc":[2010,2011,2012]},{"teal":2322,"source":"contracts/stakingPool.algo.ts:576","pc":[2013,2014]},{"teal":2326,"source":"contracts/stakingPool.algo.ts:580","pc":[2015,2016]},{"teal":2327,"source":"contracts/stakingPool.algo.ts:580","pc":[2017,2018,2019]},{"teal":2328,"source":"contracts/stakingPool.algo.ts:580","pc":[2020]},{"teal":2329,"source":"contracts/stakingPool.algo.ts:580","pc":[2021,2022]},{"teal":2333,"source":"contracts/stakingPool.algo.ts:586","pc":[2023,2024]},{"teal":2334,"source":"contracts/stakingPool.algo.ts:586","pc":[2025,2026]},{"teal":2335,"source":"contracts/stakingPool.algo.ts:586","pc":[2027]},{"teal":2336,"source":"contracts/stakingPool.algo.ts:586","pc":[2028,2029]},{"teal":2337,"source":"contracts/stakingPool.algo.ts:586","pc":[2030]},{"teal":2338,"source":"contracts/stakingPool.algo.ts:586","pc":[2031]},{"teal":2339,"source":"contracts/stakingPool.algo.ts:586","pc":[2032,2033]},{"teal":2340,"source":"contracts/stakingPool.algo.ts:586","pc":[2034,2035]},{"teal":2341,"source":"contracts/stakingPool.algo.ts:586","pc":[2036]},{"teal":2342,"source":"contracts/stakingPool.algo.ts:586","pc":[2037]},{"teal":2343,"source":"contracts/stakingPool.algo.ts:586","pc":[2038,2039]},{"teal":2347,"source":"contracts/stakingPool.algo.ts:587","pc":[2040]},{"teal":2348,"source":"contracts/stakingPool.algo.ts:587","pc":[2041,2042]},{"teal":2352,"source":"contracts/stakingPool.algo.ts:588","pc":[2043,2044,2045]},{"teal":2353,"source":"contracts/stakingPool.algo.ts:588","pc":[2046,2047]},{"teal":2358,"source":"contracts/stakingPool.algo.ts:596","pc":[2048,2049]},{"teal":2359,"source":"contracts/stakingPool.algo.ts:596","pc":[2050,2051,2052]},{"teal":2360,"source":"contracts/stakingPool.algo.ts:596","pc":[2053]},{"teal":2361,"source":"contracts/stakingPool.algo.ts:596","pc":[2054,2055]},{"teal":2362,"source":"contracts/stakingPool.algo.ts:596","pc":[2056]},{"teal":2363,"source":"contracts/stakingPool.algo.ts:596","pc":[2057,2058,2059]},{"teal":2368,"source":"contracts/stakingPool.algo.ts:597","pc":[2060]},{"teal":2369,"source":"contracts/stakingPool.algo.ts:597","pc":[2061,2062]},{"teal":2374,"source":"contracts/stakingPool.algo.ts:603","pc":[2063]},{"teal":2375,"source":"contracts/stakingPool.algo.ts:603","pc":[2064,2065]},{"teal":2379,"source":"contracts/stakingPool.algo.ts:604","pc":[2066]},{"teal":2380,"source":"contracts/stakingPool.algo.ts:604","pc":[2067,2068]},{"teal":2384,"source":"contracts/stakingPool.algo.ts:605","pc":[2069]},{"teal":2385,"source":"contracts/stakingPool.algo.ts:605","pc":[2070,2071]},{"teal":2389,"source":"contracts/stakingPool.algo.ts:606","pc":[2072]},{"teal":2390,"source":"contracts/stakingPool.algo.ts:606","pc":[2073,2074]},{"teal":2395,"source":"contracts/stakingPool.algo.ts:607","pc":[2075,2076]},{"teal":2396,"source":"contracts/stakingPool.algo.ts:607","pc":[2077,2078,2079]},{"teal":2402,"source":"contracts/stakingPool.algo.ts:609","pc":[2080,2081]},{"teal":2403,"source":"contracts/stakingPool.algo.ts:609","pc":[2082,2083]},{"teal":2404,"source":"contracts/stakingPool.algo.ts:609","pc":[2084,2085,2086]},{"teal":2405,"source":"contracts/stakingPool.algo.ts:609","pc":[2087]},{"teal":2406,"source":"contracts/stakingPool.algo.ts:609","pc":[2088,2089]},{"teal":2407,"source":"contracts/stakingPool.algo.ts:609","pc":[2090]},{"teal":2408,"source":"contracts/stakingPool.algo.ts:609","pc":[2091,2092]},{"teal":2409,"source":"contracts/stakingPool.algo.ts:609","pc":[2093]},{"teal":2410,"source":"contracts/stakingPool.algo.ts:608","pc":[2094,2095]},{"teal":2415,"source":"contracts/stakingPool.algo.ts:613","pc":[2096,2097]},{"teal":2416,"source":"contracts/stakingPool.algo.ts:613","pc":[2098,2099]},{"teal":2417,"source":"contracts/stakingPool.algo.ts:613","pc":[2100,2101,2102]},{"teal":2418,"source":"contracts/stakingPool.algo.ts:613","pc":[2103]},{"teal":2419,"source":"contracts/stakingPool.algo.ts:613","pc":[2104]},{"teal":2420,"source":"contracts/stakingPool.algo.ts:613","pc":[2105,2106,2107]},{"teal":2425,"source":"contracts/stakingPool.algo.ts:619","pc":[2108,2109]},{"teal":2426,"source":"contracts/stakingPool.algo.ts:619","pc":[2110]},{"teal":2427,"source":"contracts/stakingPool.algo.ts:619","pc":[2111,2112]},{"teal":2428,"source":"contracts/stakingPool.algo.ts:619","pc":[2113]},{"teal":2429,"source":"contracts/stakingPool.algo.ts:619","pc":[2114]},{"teal":2430,"source":"contracts/stakingPool.algo.ts:619","pc":[2115]},{"teal":2431,"source":"contracts/stakingPool.algo.ts:619","pc":[2116,2117]},{"teal":2432,"source":"contracts/stakingPool.algo.ts:619","pc":[2118]},{"teal":2433,"source":"contracts/stakingPool.algo.ts:619","pc":[2119]},{"teal":2434,"source":"contracts/stakingPool.algo.ts:619","pc":[2120,2121]},{"teal":2435,"source":"contracts/stakingPool.algo.ts:619","pc":[2122]},{"teal":2436,"source":"contracts/stakingPool.algo.ts:619","pc":[2123]},{"teal":2437,"source":"contracts/stakingPool.algo.ts:619","pc":[2124,2125]},{"teal":2441,"source":"contracts/stakingPool.algo.ts:622","pc":[2126,2127]},{"teal":2442,"source":"contracts/stakingPool.algo.ts:622","pc":[2128,2129,2130]},{"teal":2443,"source":"contracts/stakingPool.algo.ts:622","pc":[2131]},{"teal":2444,"source":"contracts/stakingPool.algo.ts:622","pc":[2132,2133]},{"teal":2445,"source":"contracts/stakingPool.algo.ts:622","pc":[2134]},{"teal":2446,"source":"contracts/stakingPool.algo.ts:622","pc":[2135]},{"teal":2447,"source":"contracts/stakingPool.algo.ts:622","pc":[2136,2137]},{"teal":2448,"source":"contracts/stakingPool.algo.ts:622","pc":[2138]},{"teal":2449,"source":"contracts/stakingPool.algo.ts:622","pc":[2139]},{"teal":2450,"source":"contracts/stakingPool.algo.ts:622","pc":[2140]},{"teal":2451,"source":"contracts/stakingPool.algo.ts:622","pc":[2141]},{"teal":2452,"source":"contracts/stakingPool.algo.ts:622","pc":[2142]},{"teal":2455,"source":"contracts/stakingPool.algo.ts:622","errorMessage":"wideRatio failed","pc":[2143]},{"teal":2456,"source":"contracts/stakingPool.algo.ts:622","pc":[2144,2145]},{"teal":2464,"source":"contracts/stakingPool.algo.ts:625","pc":[2146,2147]},{"teal":2465,"source":"contracts/stakingPool.algo.ts:625","pc":[2148]},{"teal":2466,"source":"contracts/stakingPool.algo.ts:625","pc":[2149]},{"teal":2467,"source":"contracts/stakingPool.algo.ts:625","pc":[2150,2151,2152]},{"teal":2473,"source":"contracts/stakingPool.algo.ts:630","pc":[2153,2154]},{"teal":2474,"source":"contracts/stakingPool.algo.ts:630","pc":[2155,2156]},{"teal":2475,"source":"contracts/stakingPool.algo.ts:630","pc":[2157]},{"teal":2476,"source":"contracts/stakingPool.algo.ts:630","pc":[2158,2159,2160]},{"teal":2481,"source":"contracts/stakingPool.algo.ts:631","pc":[2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184]},{"teal":2482,"source":"contracts/stakingPool.algo.ts:631","pc":[2185]},{"teal":2486,"source":"contracts/stakingPool.algo.ts:632","pc":[2186]},{"teal":2494,"source":"contracts/stakingPool.algo.ts:636","pc":[2187,2188]},{"teal":2495,"source":"contracts/stakingPool.algo.ts:636","pc":[2189,2190,2191]},{"teal":2503,"source":"contracts/stakingPool.algo.ts:643","pc":[2192,2193]},{"teal":2504,"source":"contracts/stakingPool.algo.ts:643","pc":[2194,2195]},{"teal":2505,"source":"contracts/stakingPool.algo.ts:643","pc":[2196,2197,2198]},{"teal":2506,"source":"contracts/stakingPool.algo.ts:643","pc":[2199]},{"teal":2507,"source":"contracts/stakingPool.algo.ts:642","pc":[2200]},{"teal":2508,"source":"contracts/stakingPool.algo.ts:642","pc":[2201]},{"teal":2509,"source":"contracts/stakingPool.algo.ts:644","pc":[2202,2203]},{"teal":2510,"source":"contracts/stakingPool.algo.ts:642","pc":[2204]},{"teal":2511,"source":"contracts/stakingPool.algo.ts:642","pc":[2205]},{"teal":2512,"source":"contracts/stakingPool.algo.ts:642","pc":[2206]},{"teal":2513,"source":"contracts/stakingPool.algo.ts:642","pc":[2207]},{"teal":2514,"source":"contracts/stakingPool.algo.ts:642","pc":[2208]},{"teal":2517,"source":"contracts/stakingPool.algo.ts:642","errorMessage":"wideRatio failed","pc":[2209]},{"teal":2518,"source":"contracts/stakingPool.algo.ts:642","pc":[2210,2211]},{"teal":2522,"source":"contracts/stakingPool.algo.ts:647","pc":[2212,2213]},{"teal":2523,"source":"contracts/stakingPool.algo.ts:647","pc":[2214,2215]},{"teal":2524,"source":"contracts/stakingPool.algo.ts:647","pc":[2216]},{"teal":2525,"source":"contracts/stakingPool.algo.ts:647","pc":[2217]},{"teal":2526,"source":"contracts/stakingPool.algo.ts:647","pc":[2218,2219]},{"teal":2527,"source":"contracts/stakingPool.algo.ts:647","pc":[2220,2221,2222]},{"teal":2528,"source":"contracts/stakingPool.algo.ts:647","pc":[2223]},{"teal":2529,"source":"contracts/stakingPool.algo.ts:647","pc":[2224]},{"teal":2530,"source":"contracts/stakingPool.algo.ts:647","pc":[2225]},{"teal":2531,"source":"contracts/stakingPool.algo.ts:647","pc":[2226]},{"teal":2532,"source":"contracts/stakingPool.algo.ts:647","pc":[2227]},{"teal":2533,"source":"contracts/stakingPool.algo.ts:647","pc":[2228]},{"teal":2536,"source":"contracts/stakingPool.algo.ts:647","errorMessage":"wideRatio failed","pc":[2229]},{"teal":2537,"source":"contracts/stakingPool.algo.ts:647","pc":[2230,2231]},{"teal":2542,"source":"contracts/stakingPool.algo.ts:649","pc":[2232,2233]},{"teal":2543,"source":"contracts/stakingPool.algo.ts:649","pc":[2234,2235]},{"teal":2544,"source":"contracts/stakingPool.algo.ts:649","pc":[2236,2237]},{"teal":2545,"source":"contracts/stakingPool.algo.ts:649","pc":[2238]},{"teal":2546,"source":"contracts/stakingPool.algo.ts:649","pc":[2239]},{"teal":2547,"source":"contracts/stakingPool.algo.ts:649","pc":[2240,2241,2242]},{"teal":2552,"source":"contracts/stakingPool.algo.ts:650","pc":[2243,2244]},{"teal":2553,"source":"contracts/stakingPool.algo.ts:650","pc":[2245,2246]},{"teal":2554,"source":"contracts/stakingPool.algo.ts:650","pc":[2247]},{"teal":2555,"source":"contracts/stakingPool.algo.ts:650","pc":[2248,2249]},{"teal":2560,"source":"contracts/stakingPool.algo.ts:653","pc":[2250,2251]},{"teal":2561,"source":"contracts/stakingPool.algo.ts:653","pc":[2252,2253]},{"teal":2562,"source":"contracts/stakingPool.algo.ts:653","pc":[2254]},{"teal":2563,"source":"contracts/stakingPool.algo.ts:653","pc":[2255,2256]},{"teal":2571,"source":"contracts/stakingPool.algo.ts:654","pc":[2257]},{"teal":2572,"source":"contracts/stakingPool.algo.ts:654","pc":[2258]},{"teal":2573,"source":"contracts/stakingPool.algo.ts:654","pc":[2259,2260]},{"teal":2577,"source":"contracts/stakingPool.algo.ts:655","pc":[2261,2262]},{"teal":2578,"source":"contracts/stakingPool.algo.ts:655","pc":[2263,2264]},{"teal":2582,"source":"contracts/stakingPool.algo.ts:656","pc":[2265,2266]},{"teal":2583,"source":"contracts/stakingPool.algo.ts:656","pc":[2267]},{"teal":2584,"source":"contracts/stakingPool.algo.ts:656","pc":[2268]},{"teal":2585,"source":"contracts/stakingPool.algo.ts:656","pc":[2269,2270]},{"teal":2586,"source":"contracts/stakingPool.algo.ts:656","pc":[2271,2272]},{"teal":2590,"source":"contracts/stakingPool.algo.ts:657","pc":[2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308]},{"teal":2591,"source":"contracts/stakingPool.algo.ts:657","pc":[2309,2310]},{"teal":2594,"source":"contracts/stakingPool.algo.ts:654","pc":[2311]},{"teal":2595,"source":"contracts/stakingPool.algo.ts:654","pc":[2312,2313]},{"teal":2598,"source":"contracts/stakingPool.algo.ts:654","pc":[2314]},{"teal":2602,"source":"contracts/stakingPool.algo.ts:660","pc":[2315,2316]},{"teal":2603,"source":"contracts/stakingPool.algo.ts:660","pc":[2317,2318]},{"teal":2604,"source":"contracts/stakingPool.algo.ts:636","pc":[2319,2320,2321]},{"teal":2609,"source":"contracts/stakingPool.algo.ts:661","pc":[2322,2323]},{"teal":2610,"source":"contracts/stakingPool.algo.ts:661","pc":[2324,2325,2326]},{"teal":2611,"source":"contracts/stakingPool.algo.ts:661","pc":[2327]},{"teal":2612,"source":"contracts/stakingPool.algo.ts:661","pc":[2328]},{"teal":2613,"source":"contracts/stakingPool.algo.ts:661","pc":[2329]},{"teal":2614,"source":"contracts/stakingPool.algo.ts:661","pc":[2330,2331,2332]},{"teal":2622,"source":"contracts/stakingPool.algo.ts:665","pc":[2333,2334]},{"teal":2623,"source":"contracts/stakingPool.algo.ts:665","pc":[2335,2336]},{"teal":2624,"source":"contracts/stakingPool.algo.ts:665","pc":[2337,2338,2339]},{"teal":2625,"source":"contracts/stakingPool.algo.ts:665","pc":[2340]},{"teal":2626,"source":"contracts/stakingPool.algo.ts:664","pc":[2341]},{"teal":2627,"source":"contracts/stakingPool.algo.ts:664","pc":[2342]},{"teal":2628,"source":"contracts/stakingPool.algo.ts:666","pc":[2343,2344]},{"teal":2629,"source":"contracts/stakingPool.algo.ts:664","pc":[2345]},{"teal":2630,"source":"contracts/stakingPool.algo.ts:664","pc":[2346]},{"teal":2631,"source":"contracts/stakingPool.algo.ts:664","pc":[2347]},{"teal":2632,"source":"contracts/stakingPool.algo.ts:664","pc":[2348]},{"teal":2633,"source":"contracts/stakingPool.algo.ts:664","pc":[2349]},{"teal":2636,"source":"contracts/stakingPool.algo.ts:664","errorMessage":"wideRatio failed","pc":[2350]},{"teal":2637,"source":"contracts/stakingPool.algo.ts:664","pc":[2351,2352]},{"teal":2641,"source":"contracts/stakingPool.algo.ts:670","pc":[2353,2354]},{"teal":2642,"source":"contracts/stakingPool.algo.ts:670","pc":[2355,2356]},{"teal":2643,"source":"contracts/stakingPool.algo.ts:670","pc":[2357]},{"teal":2644,"source":"contracts/stakingPool.algo.ts:670","pc":[2358,2359]},{"teal":2649,"source":"contracts/stakingPool.algo.ts:677","pc":[2360,2361]},{"teal":2650,"source":"contracts/stakingPool.algo.ts:677","pc":[2362]},{"teal":2651,"source":"contracts/stakingPool.algo.ts:677","pc":[2363]},{"teal":2652,"source":"contracts/stakingPool.algo.ts:677","pc":[2364,2365,2366]},{"teal":2657,"source":"contracts/stakingPool.algo.ts:680","pc":[2367]},{"teal":2658,"source":"contracts/stakingPool.algo.ts:680","pc":[2368,2369]},{"teal":2664,"source":"contracts/stakingPool.algo.ts:682","pc":[2370,2371]},{"teal":2665,"source":"contracts/stakingPool.algo.ts:682","pc":[2372,2373,2374]},{"teal":2666,"source":"contracts/stakingPool.algo.ts:682","pc":[2375,2376]},{"teal":2667,"source":"contracts/stakingPool.algo.ts:682","pc":[2377,2378,2379]},{"teal":2668,"source":"contracts/stakingPool.algo.ts:682","pc":[2380]},{"teal":2669,"source":"contracts/stakingPool.algo.ts:682","pc":[2381]},{"teal":2670,"source":"contracts/stakingPool.algo.ts:682","pc":[2382,2383,2384]},{"teal":2671,"source":"contracts/stakingPool.algo.ts:683","pc":[2385,2386]},{"teal":2672,"source":"contracts/stakingPool.algo.ts:683","pc":[2387,2388,2389]},{"teal":2673,"source":"contracts/stakingPool.algo.ts:683","pc":[2390,2391]},{"teal":2674,"source":"contracts/stakingPool.algo.ts:683","pc":[2392]},{"teal":2675,"source":"contracts/stakingPool.algo.ts:683","pc":[2393,2394]},{"teal":2676,"source":"contracts/stakingPool.algo.ts:683","pc":[2395,2396,2397]},{"teal":2677,"source":"contracts/stakingPool.algo.ts:683","pc":[2398,2399]},{"teal":2678,"source":"contracts/stakingPool.algo.ts:683","pc":[2400]},{"teal":2679,"source":"contracts/stakingPool.algo.ts:683","pc":[2401]},{"teal":2680,"source":"contracts/stakingPool.algo.ts:683","pc":[2402,2403]},{"teal":2681,"source":"contracts/stakingPool.algo.ts:683","pc":[2404]},{"teal":2682,"source":"contracts/stakingPool.algo.ts:682","pc":[2405]},{"teal":2685,"source":"contracts/stakingPool.algo.ts:681","pc":[2406,2407,2408]},{"teal":2690,"source":"contracts/stakingPool.algo.ts:685","pc":[2409,2410]},{"teal":2691,"source":"contracts/stakingPool.algo.ts:685","pc":[2411,2412]},{"teal":2692,"source":"contracts/stakingPool.algo.ts:685","pc":[2413]},{"teal":2693,"source":"contracts/stakingPool.algo.ts:685","pc":[2414,2415,2416]},{"teal":2694,"source":"contracts/stakingPool.algo.ts:685","pc":[2417,2418]},{"teal":2695,"source":"contracts/stakingPool.algo.ts:685","pc":[2419,2420,2421]},{"teal":2698,"source":"contracts/stakingPool.algo.ts:685","pc":[2422,2423]},{"teal":2701,"source":"contracts/stakingPool.algo.ts:685","pc":[2424,2425]},{"teal":2709,"source":"contracts/stakingPool.algo.ts:686","pc":[2426]},{"teal":2710,"source":"contracts/stakingPool.algo.ts:686","pc":[2427]},{"teal":2711,"source":"contracts/stakingPool.algo.ts:686","pc":[2428,2429]},{"teal":2715,"source":"contracts/stakingPool.algo.ts:687","pc":[2430,2431]},{"teal":2716,"source":"contracts/stakingPool.algo.ts:687","pc":[2432,2433]},{"teal":2720,"source":"contracts/stakingPool.algo.ts:688","pc":[2434,2435]},{"teal":2721,"source":"contracts/stakingPool.algo.ts:688","pc":[2436,2437,2438]},{"teal":2722,"source":"contracts/stakingPool.algo.ts:688","pc":[2439,2440]},{"teal":2726,"source":"contracts/stakingPool.algo.ts:689","pc":[2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495]},{"teal":2727,"source":"contracts/stakingPool.algo.ts:689","pc":[2496,2497]},{"teal":2730,"source":"contracts/stakingPool.algo.ts:686","pc":[2498]},{"teal":2731,"source":"contracts/stakingPool.algo.ts:686","pc":[2499,2500]},{"teal":2734,"source":"contracts/stakingPool.algo.ts:686","pc":[2501]},{"teal":2740,"source":"contracts/stakingPool.algo.ts:692","pc":[2502,2503]},{"teal":2741,"source":"contracts/stakingPool.algo.ts:692","pc":[2504,2505]},{"teal":2742,"source":"contracts/stakingPool.algo.ts:692","pc":[2506]},{"teal":2743,"source":"contracts/stakingPool.algo.ts:692","pc":[2507]},{"teal":2744,"source":"contracts/stakingPool.algo.ts:692","pc":[2508]},{"teal":2745,"source":"contracts/stakingPool.algo.ts:692","pc":[2509,2510,2511]},{"teal":2754,"source":"contracts/stakingPool.algo.ts:693","pc":[2512]},{"teal":2755,"source":"contracts/stakingPool.algo.ts:693","pc":[2513]},{"teal":2756,"source":"contracts/stakingPool.algo.ts:693","pc":[2514,2515]},{"teal":2760,"source":"contracts/stakingPool.algo.ts:694","pc":[2516,2517]},{"teal":2761,"source":"contracts/stakingPool.algo.ts:694","pc":[2518,2519]},{"teal":2762,"source":"contracts/stakingPool.algo.ts:694","pc":[2520]},{"teal":2763,"source":"contracts/stakingPool.algo.ts:694","pc":[2521,2522]},{"teal":2767,"source":"contracts/stakingPool.algo.ts:695","pc":[2523,2524]},{"teal":2768,"source":"contracts/stakingPool.algo.ts:695","pc":[2525,2526,2527]},{"teal":2769,"source":"contracts/stakingPool.algo.ts:695","pc":[2528,2529]},{"teal":2773,"source":"contracts/stakingPool.algo.ts:696","pc":[2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547]},{"teal":2774,"source":"contracts/stakingPool.algo.ts:696","pc":[2548,2549]},{"teal":2777,"source":"contracts/stakingPool.algo.ts:693","pc":[2550]},{"teal":2778,"source":"contracts/stakingPool.algo.ts:693","pc":[2551,2552]},{"teal":2781,"source":"contracts/stakingPool.algo.ts:693","pc":[2553]},{"teal":2790,"source":"contracts/stakingPool.algo.ts:708","pc":[2554]},{"teal":2791,"source":"contracts/stakingPool.algo.ts:708","pc":[2555,2556]},{"teal":2796,"source":"contracts/stakingPool.algo.ts:732","pc":[2557,2558]},{"teal":2797,"source":"contracts/stakingPool.algo.ts:732","pc":[2559]},{"teal":2798,"source":"contracts/stakingPool.algo.ts:732","pc":[2560]},{"teal":2799,"source":"contracts/stakingPool.algo.ts:732","pc":[2561]},{"teal":2800,"source":"contracts/stakingPool.algo.ts:732","pc":[2562,2563,2564]},{"teal":2801,"source":"contracts/stakingPool.algo.ts:732","pc":[2565,2566]},{"teal":2802,"source":"contracts/stakingPool.algo.ts:732","pc":[2567]},{"teal":2803,"source":"contracts/stakingPool.algo.ts:732","pc":[2568]},{"teal":2804,"source":"contracts/stakingPool.algo.ts:732","pc":[2569]},{"teal":2807,"source":"contracts/stakingPool.algo.ts:732","pc":[2570,2571,2572]},{"teal":2812,"source":"contracts/stakingPool.algo.ts:733","pc":[2573]},{"teal":2813,"source":"contracts/stakingPool.algo.ts:733","pc":[2574,2575]},{"teal":2817,"source":"contracts/stakingPool.algo.ts:734","pc":[2576,2577]},{"teal":2818,"source":"contracts/stakingPool.algo.ts:734","pc":[2578,2579]},{"teal":2822,"source":"contracts/stakingPool.algo.ts:736","pc":[2580,2581]},{"teal":2823,"source":"contracts/stakingPool.algo.ts:736","pc":[2582,2583]},{"teal":2827,"source":"contracts/stakingPool.algo.ts:737","pc":[2584]},{"teal":2828,"source":"contracts/stakingPool.algo.ts:737","pc":[2585,2586]},{"teal":2833,"source":"contracts/stakingPool.algo.ts:737","pc":[2587,2588]},{"teal":2834,"source":"contracts/stakingPool.algo.ts:737","pc":[2589,2590]},{"teal":2835,"source":"contracts/stakingPool.algo.ts:737","pc":[2591]},{"teal":2836,"source":"contracts/stakingPool.algo.ts:737","pc":[2592,2593,2594]},{"teal":2841,"source":"contracts/stakingPool.algo.ts:738","pc":[2595,2596]},{"teal":2842,"source":"contracts/stakingPool.algo.ts:738","pc":[2597,2598]},{"teal":2843,"source":"contracts/stakingPool.algo.ts:738","pc":[2599]},{"teal":2844,"source":"contracts/stakingPool.algo.ts:738","pc":[2600,2601,2602]},{"teal":2849,"source":"contracts/stakingPool.algo.ts:739","pc":[2603]},{"teal":2850,"source":"contracts/stakingPool.algo.ts:739","pc":[2604]},{"teal":2851,"source":"contracts/stakingPool.algo.ts:739","pc":[2605,2606]},{"teal":2852,"source":"contracts/stakingPool.algo.ts:739","pc":[2607]},{"teal":2853,"source":"contracts/stakingPool.algo.ts:739","pc":[2608,2609]},{"teal":2854,"source":"contracts/stakingPool.algo.ts:739","pc":[2610,2611]},{"teal":2855,"source":"contracts/stakingPool.algo.ts:739","pc":[2612]},{"teal":2856,"source":"contracts/stakingPool.algo.ts:739","pc":[2613,2614]},{"teal":2857,"source":"contracts/stakingPool.algo.ts:739","pc":[2615,2616]},{"teal":2858,"source":"contracts/stakingPool.algo.ts:739","pc":[2617,2618]},{"teal":2859,"source":"contracts/stakingPool.algo.ts:739","pc":[2619,2620]},{"teal":2860,"source":"contracts/stakingPool.algo.ts:739","pc":[2621]},{"teal":2865,"source":"contracts/stakingPool.algo.ts:741","pc":[2622,2623]},{"teal":2866,"source":"contracts/stakingPool.algo.ts:741","pc":[2624]},{"teal":2867,"source":"contracts/stakingPool.algo.ts:741","pc":[2625]},{"teal":2868,"source":"contracts/stakingPool.algo.ts:741","pc":[2626]},{"teal":2869,"source":"contracts/stakingPool.algo.ts:741","pc":[2627]},{"teal":2870,"source":"contracts/stakingPool.algo.ts:741","pc":[2628,2629]},{"teal":2871,"source":"contracts/stakingPool.algo.ts:741","pc":[2630]},{"teal":2872,"source":"contracts/stakingPool.algo.ts:741","pc":[2631,2632]},{"teal":2877,"source":"contracts/stakingPool.algo.ts:742","pc":[2633,2634]},{"teal":2878,"source":"contracts/stakingPool.algo.ts:742","pc":[2635,2636,2637]},{"teal":2879,"source":"contracts/stakingPool.algo.ts:742","pc":[2638,2639]},{"teal":2880,"source":"contracts/stakingPool.algo.ts:742","pc":[2640]},{"teal":2881,"source":"contracts/stakingPool.algo.ts:742","pc":[2641,2642,2643]},{"teal":2887,"source":"contracts/stakingPool.algo.ts:743","pc":[2644,2645]},{"teal":2888,"source":"contracts/stakingPool.algo.ts:743","pc":[2646,2647,2648]},{"teal":2889,"source":"contracts/stakingPool.algo.ts:743","pc":[2649]},{"teal":2890,"source":"contracts/stakingPool.algo.ts:743","pc":[2650,2651]},{"teal":2891,"source":"contracts/stakingPool.algo.ts:743","pc":[2652]},{"teal":2892,"source":"contracts/stakingPool.algo.ts:743","pc":[2653,2654,2655]},{"teal":2897,"source":"contracts/stakingPool.algo.ts:746","pc":[2656,2657]},{"teal":2898,"source":"contracts/stakingPool.algo.ts:746","pc":[2658,2659]},{"teal":2899,"source":"contracts/stakingPool.algo.ts:746","pc":[2660,2661,2662]},{"teal":2900,"source":"contracts/stakingPool.algo.ts:746","pc":[2663]},{"teal":2901,"source":"contracts/stakingPool.algo.ts:746","pc":[2664]},{"teal":2902,"source":"contracts/stakingPool.algo.ts:746","pc":[2665,2666]},{"teal":2903,"source":"contracts/stakingPool.algo.ts:743","pc":[2667,2668,2669]},{"teal":2908,"source":"contracts/stakingPool.algo.ts:750","pc":[2670,2671]},{"teal":2909,"source":"contracts/stakingPool.algo.ts:750","pc":[2672,2673]},{"teal":2910,"source":"contracts/stakingPool.algo.ts:750","pc":[2674,2675,2676]},{"teal":2911,"source":"contracts/stakingPool.algo.ts:750","pc":[2677]},{"teal":2912,"source":"contracts/stakingPool.algo.ts:750","pc":[2678]},{"teal":2913,"source":"contracts/stakingPool.algo.ts:750","pc":[2679,2680]},{"teal":2918,"source":"contracts/stakingPool.algo.ts:754","pc":[2681,2682]},{"teal":2919,"source":"contracts/stakingPool.algo.ts:754","pc":[2683,2684]},{"teal":2920,"source":"contracts/stakingPool.algo.ts:754","pc":[2685]},{"teal":2921,"source":"contracts/stakingPool.algo.ts:754","pc":[2686,2687,2688]},{"teal":2926,"source":"contracts/stakingPool.algo.ts:755","pc":[2689,2690]},{"teal":2927,"source":"contracts/stakingPool.algo.ts:755","pc":[2691,2692]},{"teal":2928,"source":"contracts/stakingPool.algo.ts:755","pc":[2693,2694,2695]},{"teal":2929,"source":"contracts/stakingPool.algo.ts:755","pc":[2696]},{"teal":2930,"source":"contracts/stakingPool.algo.ts:755","pc":[2697]},{"teal":2931,"source":"contracts/stakingPool.algo.ts:755","pc":[2698,2699]},{"teal":2935,"source":"contracts/stakingPool.algo.ts:756","pc":[2700,2701]},{"teal":2936,"source":"contracts/stakingPool.algo.ts:756","pc":[2702,2703]},{"teal":2937,"source":"contracts/stakingPool.algo.ts:756","pc":[2704]},{"teal":2938,"source":"contracts/stakingPool.algo.ts:756","pc":[2705,2706]},{"teal":2939,"source":"contracts/stakingPool.algo.ts:756","pc":[2707]},{"teal":2940,"source":"contracts/stakingPool.algo.ts:756","pc":[2708,2709]},{"teal":2945,"source":"contracts/stakingPool.algo.ts:758","pc":[2710,2711]},{"teal":2946,"source":"contracts/stakingPool.algo.ts:758","pc":[2712]},{"teal":2947,"source":"contracts/stakingPool.algo.ts:758","pc":[2713]},{"teal":2948,"source":"contracts/stakingPool.algo.ts:758","pc":[2714,2715,2716]},{"teal":2956,"source":"contracts/stakingPool.algo.ts:761","pc":[2717,2718]},{"teal":2957,"source":"contracts/stakingPool.algo.ts:761","pc":[2719,2720,2721]},{"teal":2958,"source":"contracts/stakingPool.algo.ts:761","pc":[2722]},{"teal":2959,"source":"contracts/stakingPool.algo.ts:761","pc":[2723,2724]},{"teal":2960,"source":"contracts/stakingPool.algo.ts:760","pc":[2725]},{"teal":2961,"source":"contracts/stakingPool.algo.ts:761","pc":[2726,2727]},{"teal":2962,"source":"contracts/stakingPool.algo.ts:760","pc":[2728,2729]},{"teal":2963,"source":"contracts/stakingPool.algo.ts:760","pc":[2730,2731]},{"teal":2964,"source":"contracts/stakingPool.algo.ts:760","pc":[2732]},{"teal":2965,"source":"contracts/stakingPool.algo.ts:760","pc":[2733,2734]},{"teal":2966,"source":"contracts/stakingPool.algo.ts:760","pc":[2735]},{"teal":2967,"source":"contracts/stakingPool.algo.ts:760","pc":[2736,2737]},{"teal":2968,"source":"contracts/stakingPool.algo.ts:760","pc":[2738]},{"teal":2969,"source":"contracts/stakingPool.algo.ts:760","pc":[2739]},{"teal":2970,"source":"contracts/stakingPool.algo.ts:762","pc":[2740,2741]},{"teal":2971,"source":"contracts/stakingPool.algo.ts:762","pc":[2742]},{"teal":2972,"source":"contracts/stakingPool.algo.ts:762","pc":[2743,2744]},{"teal":2973,"source":"contracts/stakingPool.algo.ts:760","pc":[2745]},{"teal":2974,"source":"contracts/stakingPool.algo.ts:760","pc":[2746]},{"teal":2975,"source":"contracts/stakingPool.algo.ts:760","pc":[2747]},{"teal":2976,"source":"contracts/stakingPool.algo.ts:760","pc":[2748]},{"teal":2977,"source":"contracts/stakingPool.algo.ts:760","pc":[2749]},{"teal":2978,"source":"contracts/stakingPool.algo.ts:760","pc":[2750]},{"teal":2981,"source":"contracts/stakingPool.algo.ts:760","errorMessage":"wideRatio failed","pc":[2751]},{"teal":2982,"source":"contracts/stakingPool.algo.ts:760","pc":[2752,2753]},{"teal":2986,"source":"contracts/stakingPool.algo.ts:767","pc":[2754,2755]},{"teal":2987,"source":"contracts/stakingPool.algo.ts:767","pc":[2756,2757]},{"teal":2988,"source":"contracts/stakingPool.algo.ts:767","pc":[2758]},{"teal":2989,"source":"contracts/stakingPool.algo.ts:767","pc":[2759,2760]},{"teal":2993,"source":"contracts/stakingPool.algo.ts:768","pc":[2761,2762]},{"teal":2994,"source":"contracts/stakingPool.algo.ts:768","pc":[2763,2764]},{"teal":2995,"source":"contracts/stakingPool.algo.ts:768","pc":[2765,2766]},{"teal":2996,"source":"contracts/stakingPool.algo.ts:768","pc":[2767,2768,2769]},{"teal":2997,"source":"contracts/stakingPool.algo.ts:768","pc":[2770]},{"teal":2998,"source":"contracts/stakingPool.algo.ts:768","pc":[2771,2772]},{"teal":2999,"source":"contracts/stakingPool.algo.ts:768","pc":[2773]},{"teal":3000,"source":"contracts/stakingPool.algo.ts:768","pc":[2774]},{"teal":3001,"source":"contracts/stakingPool.algo.ts:768","pc":[2775]},{"teal":3002,"source":"contracts/stakingPool.algo.ts:768","pc":[2776,2777]},{"teal":3006,"source":"contracts/stakingPool.algo.ts:769","pc":[2778,2779]},{"teal":3007,"source":"contracts/stakingPool.algo.ts:769","pc":[2780,2781]},{"teal":3008,"source":"contracts/stakingPool.algo.ts:769","pc":[2782]},{"teal":3009,"source":"contracts/stakingPool.algo.ts:769","pc":[2783,2784]},{"teal":3017,"source":"contracts/stakingPool.algo.ts:773","pc":[2785,2786]},{"teal":3018,"source":"contracts/stakingPool.algo.ts:773","pc":[2787,2788,2789]},{"teal":3019,"source":"contracts/stakingPool.algo.ts:773","pc":[2790]},{"teal":3020,"source":"contracts/stakingPool.algo.ts:773","pc":[2791,2792]},{"teal":3021,"source":"contracts/stakingPool.algo.ts:772","pc":[2793]},{"teal":3022,"source":"contracts/stakingPool.algo.ts:773","pc":[2794,2795]},{"teal":3023,"source":"contracts/stakingPool.algo.ts:772","pc":[2796,2797]},{"teal":3024,"source":"contracts/stakingPool.algo.ts:772","pc":[2798,2799]},{"teal":3025,"source":"contracts/stakingPool.algo.ts:772","pc":[2800]},{"teal":3026,"source":"contracts/stakingPool.algo.ts:772","pc":[2801,2802]},{"teal":3027,"source":"contracts/stakingPool.algo.ts:772","pc":[2803]},{"teal":3028,"source":"contracts/stakingPool.algo.ts:772","pc":[2804,2805]},{"teal":3029,"source":"contracts/stakingPool.algo.ts:772","pc":[2806]},{"teal":3030,"source":"contracts/stakingPool.algo.ts:772","pc":[2807]},{"teal":3031,"source":"contracts/stakingPool.algo.ts:774","pc":[2808,2809]},{"teal":3032,"source":"contracts/stakingPool.algo.ts:774","pc":[2810]},{"teal":3033,"source":"contracts/stakingPool.algo.ts:774","pc":[2811,2812]},{"teal":3034,"source":"contracts/stakingPool.algo.ts:772","pc":[2813]},{"teal":3035,"source":"contracts/stakingPool.algo.ts:772","pc":[2814]},{"teal":3036,"source":"contracts/stakingPool.algo.ts:772","pc":[2815]},{"teal":3037,"source":"contracts/stakingPool.algo.ts:772","pc":[2816]},{"teal":3038,"source":"contracts/stakingPool.algo.ts:772","pc":[2817]},{"teal":3039,"source":"contracts/stakingPool.algo.ts:772","pc":[2818]},{"teal":3042,"source":"contracts/stakingPool.algo.ts:772","errorMessage":"wideRatio failed","pc":[2819]},{"teal":3043,"source":"contracts/stakingPool.algo.ts:772","pc":[2820,2821]},{"teal":3047,"source":"contracts/stakingPool.algo.ts:778","pc":[2822,2823]},{"teal":3048,"source":"contracts/stakingPool.algo.ts:778","pc":[2824,2825]},{"teal":3049,"source":"contracts/stakingPool.algo.ts:778","pc":[2826]},{"teal":3050,"source":"contracts/stakingPool.algo.ts:778","pc":[2827,2828]},{"teal":3054,"source":"contracts/stakingPool.algo.ts:781","pc":[2829,2830]},{"teal":3055,"source":"contracts/stakingPool.algo.ts:781","pc":[2831,2832]},{"teal":3056,"source":"contracts/stakingPool.algo.ts:781","pc":[2833,2834]},{"teal":3057,"source":"contracts/stakingPool.algo.ts:781","pc":[2835,2836,2837]},{"teal":3058,"source":"contracts/stakingPool.algo.ts:781","pc":[2838]},{"teal":3059,"source":"contracts/stakingPool.algo.ts:781","pc":[2839,2840]},{"teal":3060,"source":"contracts/stakingPool.algo.ts:781","pc":[2841]},{"teal":3061,"source":"contracts/stakingPool.algo.ts:781","pc":[2842]},{"teal":3062,"source":"contracts/stakingPool.algo.ts:781","pc":[2843]},{"teal":3063,"source":"contracts/stakingPool.algo.ts:781","pc":[2844,2845]},{"teal":3067,"source":"contracts/stakingPool.algo.ts:782","pc":[2846,2847]},{"teal":3068,"source":"contracts/stakingPool.algo.ts:782","pc":[2848,2849]},{"teal":3069,"source":"contracts/stakingPool.algo.ts:782","pc":[2850,2851]},{"teal":3070,"source":"contracts/stakingPool.algo.ts:782","pc":[2852,2853,2854]},{"teal":3071,"source":"contracts/stakingPool.algo.ts:782","pc":[2855]},{"teal":3072,"source":"contracts/stakingPool.algo.ts:782","pc":[2856,2857]},{"teal":3073,"source":"contracts/stakingPool.algo.ts:782","pc":[2858]},{"teal":3074,"source":"contracts/stakingPool.algo.ts:782","pc":[2859]},{"teal":3075,"source":"contracts/stakingPool.algo.ts:782","pc":[2860]},{"teal":3076,"source":"contracts/stakingPool.algo.ts:782","pc":[2861,2862]},{"teal":3080,"source":"contracts/stakingPool.algo.ts:783","pc":[2863,2864]},{"teal":3081,"source":"contracts/stakingPool.algo.ts:783","pc":[2865,2866]},{"teal":3082,"source":"contracts/stakingPool.algo.ts:783","pc":[2867]},{"teal":3083,"source":"contracts/stakingPool.algo.ts:783","pc":[2868,2869]},{"teal":3087,"source":"contracts/stakingPool.algo.ts:785","pc":[2870,2871]},{"teal":3088,"source":"contracts/stakingPool.algo.ts:785","pc":[2872]},{"teal":3089,"source":"contracts/stakingPool.algo.ts:785","pc":[2873]},{"teal":3090,"source":"contracts/stakingPool.algo.ts:785","pc":[2874,2875]},{"teal":3091,"source":"contracts/stakingPool.algo.ts:785","pc":[2876]},{"teal":3092,"source":"contracts/stakingPool.algo.ts:785","pc":[2877,2878]},{"teal":3093,"source":"contracts/stakingPool.algo.ts:785","pc":[2879]},{"teal":3104,"source":"contracts/stakingPool.algo.ts:737","pc":[2880,2881]},{"teal":3105,"source":"contracts/stakingPool.algo.ts:737","pc":[2882]},{"teal":3106,"source":"contracts/stakingPool.algo.ts:737","pc":[2883]},{"teal":3107,"source":"contracts/stakingPool.algo.ts:737","pc":[2884,2885]},{"teal":3108,"source":"contracts/stakingPool.algo.ts:737","pc":[2886,2887,2888]},{"teal":3113,"source":"contracts/stakingPool.algo.ts:793","pc":[2889,2890]},{"teal":3114,"source":"contracts/stakingPool.algo.ts:793","pc":[2891]},{"teal":3115,"source":"contracts/stakingPool.algo.ts:793","pc":[2892,2893]},{"teal":3116,"source":"contracts/stakingPool.algo.ts:793","pc":[2894]},{"teal":3117,"source":"contracts/stakingPool.algo.ts:793","pc":[2895,2896]},{"teal":3122,"source":"contracts/stakingPool.algo.ts:797","pc":[2897,2898]},{"teal":3123,"source":"contracts/stakingPool.algo.ts:797","pc":[2899]},{"teal":3124,"source":"contracts/stakingPool.algo.ts:797","pc":[2900]},{"teal":3125,"source":"contracts/stakingPool.algo.ts:797","pc":[2901,2902,2903]},{"teal":3130,"source":"contracts/stakingPool.algo.ts:799","pc":[2904]},{"teal":3131,"source":"contracts/stakingPool.algo.ts:799","pc":[2905,2906]},{"teal":3136,"source":"contracts/stakingPool.algo.ts:799","pc":[2907,2908]},{"teal":3137,"source":"contracts/stakingPool.algo.ts:799","pc":[2909,2910]},{"teal":3138,"source":"contracts/stakingPool.algo.ts:799","pc":[2911]},{"teal":3139,"source":"contracts/stakingPool.algo.ts:799","pc":[2912,2913,2914]},{"teal":3144,"source":"contracts/stakingPool.algo.ts:800","pc":[2915,2916]},{"teal":3145,"source":"contracts/stakingPool.algo.ts:800","pc":[2917,2918]},{"teal":3146,"source":"contracts/stakingPool.algo.ts:800","pc":[2919]},{"teal":3147,"source":"contracts/stakingPool.algo.ts:800","pc":[2920,2921,2922]},{"teal":3152,"source":"contracts/stakingPool.algo.ts:801","pc":[2923]},{"teal":3153,"source":"contracts/stakingPool.algo.ts:801","pc":[2924]},{"teal":3154,"source":"contracts/stakingPool.algo.ts:801","pc":[2925,2926]},{"teal":3155,"source":"contracts/stakingPool.algo.ts:801","pc":[2927]},{"teal":3156,"source":"contracts/stakingPool.algo.ts:801","pc":[2928,2929]},{"teal":3157,"source":"contracts/stakingPool.algo.ts:801","pc":[2930,2931]},{"teal":3158,"source":"contracts/stakingPool.algo.ts:801","pc":[2932]},{"teal":3159,"source":"contracts/stakingPool.algo.ts:801","pc":[2933,2934]},{"teal":3160,"source":"contracts/stakingPool.algo.ts:801","pc":[2935,2936]},{"teal":3161,"source":"contracts/stakingPool.algo.ts:801","pc":[2937,2938]},{"teal":3162,"source":"contracts/stakingPool.algo.ts:801","pc":[2939,2940]},{"teal":3163,"source":"contracts/stakingPool.algo.ts:801","pc":[2941]},{"teal":3168,"source":"contracts/stakingPool.algo.ts:803","pc":[2942,2943]},{"teal":3169,"source":"contracts/stakingPool.algo.ts:803","pc":[2944]},{"teal":3170,"source":"contracts/stakingPool.algo.ts:803","pc":[2945]},{"teal":3171,"source":"contracts/stakingPool.algo.ts:803","pc":[2946]},{"teal":3172,"source":"contracts/stakingPool.algo.ts:803","pc":[2947]},{"teal":3173,"source":"contracts/stakingPool.algo.ts:803","pc":[2948,2949]},{"teal":3174,"source":"contracts/stakingPool.algo.ts:803","pc":[2950]},{"teal":3175,"source":"contracts/stakingPool.algo.ts:803","pc":[2951,2952]},{"teal":3180,"source":"contracts/stakingPool.algo.ts:804","pc":[2953,2954]},{"teal":3181,"source":"contracts/stakingPool.algo.ts:804","pc":[2955,2956,2957]},{"teal":3182,"source":"contracts/stakingPool.algo.ts:804","pc":[2958,2959]},{"teal":3183,"source":"contracts/stakingPool.algo.ts:804","pc":[2960]},{"teal":3184,"source":"contracts/stakingPool.algo.ts:804","pc":[2961]},{"teal":3185,"source":"contracts/stakingPool.algo.ts:804","pc":[2962,2963,2964]},{"teal":3186,"source":"contracts/stakingPool.algo.ts:804","pc":[2965,2966]},{"teal":3187,"source":"contracts/stakingPool.algo.ts:804","pc":[2967,2968,2969]},{"teal":3188,"source":"contracts/stakingPool.algo.ts:804","pc":[2970]},{"teal":3189,"source":"contracts/stakingPool.algo.ts:804","pc":[2971,2972]},{"teal":3190,"source":"contracts/stakingPool.algo.ts:804","pc":[2973]},{"teal":3191,"source":"contracts/stakingPool.algo.ts:804","pc":[2974]},{"teal":3194,"source":"contracts/stakingPool.algo.ts:804","pc":[2975,2976,2977]},{"teal":3199,"source":"contracts/stakingPool.algo.ts:805","pc":[2978,2979]},{"teal":3200,"source":"contracts/stakingPool.algo.ts:805","pc":[2980,2981]},{"teal":3201,"source":"contracts/stakingPool.algo.ts:805","pc":[2982,2983,2984]},{"teal":3202,"source":"contracts/stakingPool.algo.ts:805","pc":[2985]},{"teal":3203,"source":"contracts/stakingPool.algo.ts:805","pc":[2986]},{"teal":3204,"source":"contracts/stakingPool.algo.ts:805","pc":[2987,2988]},{"teal":3209,"source":"contracts/stakingPool.algo.ts:807","pc":[2989,2990]},{"teal":3210,"source":"contracts/stakingPool.algo.ts:807","pc":[2991,2992]},{"teal":3211,"source":"contracts/stakingPool.algo.ts:807","pc":[2993]},{"teal":3212,"source":"contracts/stakingPool.algo.ts:807","pc":[2994,2995,2996]},{"teal":3218,"source":"contracts/stakingPool.algo.ts:812","pc":[2997,2998]},{"teal":3219,"source":"contracts/stakingPool.algo.ts:812","pc":[2999]},{"teal":3220,"source":"contracts/stakingPool.algo.ts:812","pc":[3000]},{"teal":3221,"source":"contracts/stakingPool.algo.ts:812","pc":[3001,3002,3003]},{"teal":3229,"source":"contracts/stakingPool.algo.ts:814","pc":[3004,3005]},{"teal":3230,"source":"contracts/stakingPool.algo.ts:814","pc":[3006,3007,3008]},{"teal":3231,"source":"contracts/stakingPool.algo.ts:814","pc":[3009]},{"teal":3232,"source":"contracts/stakingPool.algo.ts:814","pc":[3010,3011]},{"teal":3233,"source":"contracts/stakingPool.algo.ts:813","pc":[3012]},{"teal":3234,"source":"contracts/stakingPool.algo.ts:813","pc":[3013]},{"teal":3235,"source":"contracts/stakingPool.algo.ts:815","pc":[3014,3015]},{"teal":3236,"source":"contracts/stakingPool.algo.ts:813","pc":[3016]},{"teal":3237,"source":"contracts/stakingPool.algo.ts:813","pc":[3017]},{"teal":3238,"source":"contracts/stakingPool.algo.ts:813","pc":[3018]},{"teal":3239,"source":"contracts/stakingPool.algo.ts:813","pc":[3019]},{"teal":3240,"source":"contracts/stakingPool.algo.ts:813","pc":[3020]},{"teal":3243,"source":"contracts/stakingPool.algo.ts:813","errorMessage":"wideRatio failed","pc":[3021]},{"teal":3244,"source":"contracts/stakingPool.algo.ts:813","pc":[3022,3023]},{"teal":3248,"source":"contracts/stakingPool.algo.ts:818","pc":[3024,3025]},{"teal":3249,"source":"contracts/stakingPool.algo.ts:818","pc":[3026,3027]},{"teal":3250,"source":"contracts/stakingPool.algo.ts:818","pc":[3028,3029]},{"teal":3251,"source":"contracts/stakingPool.algo.ts:818","pc":[3030,3031,3032]},{"teal":3252,"source":"contracts/stakingPool.algo.ts:818","pc":[3033]},{"teal":3253,"source":"contracts/stakingPool.algo.ts:818","pc":[3034,3035]},{"teal":3254,"source":"contracts/stakingPool.algo.ts:818","pc":[3036]},{"teal":3255,"source":"contracts/stakingPool.algo.ts:818","pc":[3037]},{"teal":3256,"source":"contracts/stakingPool.algo.ts:818","pc":[3038]},{"teal":3257,"source":"contracts/stakingPool.algo.ts:818","pc":[3039,3040]},{"teal":3261,"source":"contracts/stakingPool.algo.ts:819","pc":[3041,3042]},{"teal":3262,"source":"contracts/stakingPool.algo.ts:819","pc":[3043,3044]},{"teal":3263,"source":"contracts/stakingPool.algo.ts:819","pc":[3045]},{"teal":3264,"source":"contracts/stakingPool.algo.ts:819","pc":[3046,3047]},{"teal":3270,"source":"contracts/stakingPool.algo.ts:821","pc":[3048,3049]},{"teal":3271,"source":"contracts/stakingPool.algo.ts:821","pc":[3050]},{"teal":3272,"source":"contracts/stakingPool.algo.ts:821","pc":[3051]},{"teal":3273,"source":"contracts/stakingPool.algo.ts:821","pc":[3052,3053,3054]},{"teal":3281,"source":"contracts/stakingPool.algo.ts:823","pc":[3055,3056]},{"teal":3282,"source":"contracts/stakingPool.algo.ts:823","pc":[3057,3058,3059]},{"teal":3283,"source":"contracts/stakingPool.algo.ts:823","pc":[3060]},{"teal":3284,"source":"contracts/stakingPool.algo.ts:823","pc":[3061,3062]},{"teal":3285,"source":"contracts/stakingPool.algo.ts:822","pc":[3063]},{"teal":3286,"source":"contracts/stakingPool.algo.ts:822","pc":[3064]},{"teal":3287,"source":"contracts/stakingPool.algo.ts:824","pc":[3065,3066]},{"teal":3288,"source":"contracts/stakingPool.algo.ts:822","pc":[3067]},{"teal":3289,"source":"contracts/stakingPool.algo.ts:822","pc":[3068]},{"teal":3290,"source":"contracts/stakingPool.algo.ts:822","pc":[3069]},{"teal":3291,"source":"contracts/stakingPool.algo.ts:822","pc":[3070]},{"teal":3292,"source":"contracts/stakingPool.algo.ts:822","pc":[3071]},{"teal":3295,"source":"contracts/stakingPool.algo.ts:822","errorMessage":"wideRatio failed","pc":[3072]},{"teal":3296,"source":"contracts/stakingPool.algo.ts:822","pc":[3073,3074]},{"teal":3300,"source":"contracts/stakingPool.algo.ts:828","pc":[3075,3076]},{"teal":3301,"source":"contracts/stakingPool.algo.ts:828","pc":[3077,3078]},{"teal":3302,"source":"contracts/stakingPool.algo.ts:828","pc":[3079,3080]},{"teal":3303,"source":"contracts/stakingPool.algo.ts:828","pc":[3081,3082,3083]},{"teal":3304,"source":"contracts/stakingPool.algo.ts:828","pc":[3084]},{"teal":3305,"source":"contracts/stakingPool.algo.ts:828","pc":[3085,3086]},{"teal":3306,"source":"contracts/stakingPool.algo.ts:828","pc":[3087]},{"teal":3307,"source":"contracts/stakingPool.algo.ts:828","pc":[3088]},{"teal":3308,"source":"contracts/stakingPool.algo.ts:828","pc":[3089]},{"teal":3309,"source":"contracts/stakingPool.algo.ts:828","pc":[3090,3091]},{"teal":3313,"source":"contracts/stakingPool.algo.ts:829","pc":[3092,3093]},{"teal":3314,"source":"contracts/stakingPool.algo.ts:829","pc":[3094,3095]},{"teal":3315,"source":"contracts/stakingPool.algo.ts:829","pc":[3096,3097]},{"teal":3316,"source":"contracts/stakingPool.algo.ts:829","pc":[3098,3099,3100]},{"teal":3317,"source":"contracts/stakingPool.algo.ts:829","pc":[3101]},{"teal":3318,"source":"contracts/stakingPool.algo.ts:829","pc":[3102,3103]},{"teal":3319,"source":"contracts/stakingPool.algo.ts:829","pc":[3104]},{"teal":3320,"source":"contracts/stakingPool.algo.ts:829","pc":[3105]},{"teal":3321,"source":"contracts/stakingPool.algo.ts:829","pc":[3106]},{"teal":3322,"source":"contracts/stakingPool.algo.ts:829","pc":[3107,3108]},{"teal":3326,"source":"contracts/stakingPool.algo.ts:830","pc":[3109,3110]},{"teal":3327,"source":"contracts/stakingPool.algo.ts:830","pc":[3111,3112]},{"teal":3328,"source":"contracts/stakingPool.algo.ts:830","pc":[3113]},{"teal":3329,"source":"contracts/stakingPool.algo.ts:830","pc":[3114,3115]},{"teal":3334,"source":"contracts/stakingPool.algo.ts:834","pc":[3116,3117]},{"teal":3335,"source":"contracts/stakingPool.algo.ts:834","pc":[3118]},{"teal":3336,"source":"contracts/stakingPool.algo.ts:834","pc":[3119]},{"teal":3337,"source":"contracts/stakingPool.algo.ts:834","pc":[3120,3121]},{"teal":3338,"source":"contracts/stakingPool.algo.ts:834","pc":[3122]},{"teal":3339,"source":"contracts/stakingPool.algo.ts:834","pc":[3123,3124]},{"teal":3340,"source":"contracts/stakingPool.algo.ts:834","pc":[3125]},{"teal":3349,"source":"contracts/stakingPool.algo.ts:799","pc":[3126,3127]},{"teal":3350,"source":"contracts/stakingPool.algo.ts:799","pc":[3128]},{"teal":3351,"source":"contracts/stakingPool.algo.ts:799","pc":[3129]},{"teal":3352,"source":"contracts/stakingPool.algo.ts:799","pc":[3130,3131]},{"teal":3353,"source":"contracts/stakingPool.algo.ts:799","pc":[3132,3133,3134]},{"teal":3362,"source":"contracts/stakingPool.algo.ts:844","pc":[3135,3136]},{"teal":3363,"source":"contracts/stakingPool.algo.ts:844","pc":[3137]},{"teal":3364,"source":"contracts/stakingPool.algo.ts:844","pc":[3138,3139]},{"teal":3365,"source":"contracts/stakingPool.algo.ts:844","pc":[3140]},{"teal":3366,"source":"contracts/stakingPool.algo.ts:844","pc":[3141]},{"teal":3367,"source":"contracts/stakingPool.algo.ts:844","pc":[3142,3143]},{"teal":3368,"source":"contracts/stakingPool.algo.ts:844","pc":[3144]},{"teal":3369,"source":"contracts/stakingPool.algo.ts:844","pc":[3145,3146]},{"teal":3373,"source":"contracts/stakingPool.algo.ts:845","pc":[3147,3148]},{"teal":3374,"source":"contracts/stakingPool.algo.ts:845","pc":[3149]},{"teal":3375,"source":"contracts/stakingPool.algo.ts:845","pc":[3150,3151]},{"teal":3376,"source":"contracts/stakingPool.algo.ts:845","pc":[3152]},{"teal":3377,"source":"contracts/stakingPool.algo.ts:845","pc":[3153,3154]},{"teal":3378,"source":"contracts/stakingPool.algo.ts:845","pc":[3155]},{"teal":3379,"source":"contracts/stakingPool.algo.ts:845","pc":[3156]},{"teal":3384,"source":"contracts/stakingPool.algo.ts:846","pc":[3157,3158]},{"teal":3385,"source":"contracts/stakingPool.algo.ts:846","pc":[3159]},{"teal":3386,"source":"contracts/stakingPool.algo.ts:847","pc":[3160]},{"teal":3387,"source":"contracts/stakingPool.algo.ts:847","pc":[3161,3162]},{"teal":3388,"source":"contracts/stakingPool.algo.ts:847","pc":[3163]},{"teal":3389,"source":"contracts/stakingPool.algo.ts:847","pc":[3164,3165]},{"teal":3390,"source":"contracts/stakingPool.algo.ts:847","pc":[3166]},{"teal":3391,"source":"contracts/stakingPool.algo.ts:847","pc":[3167]},{"teal":3392,"source":"contracts/stakingPool.algo.ts:847","pc":[3168]},{"teal":3393,"source":"contracts/stakingPool.algo.ts:847","pc":[3169]},{"teal":3394,"source":"contracts/stakingPool.algo.ts:847","pc":[3170]},{"teal":3395,"source":"contracts/stakingPool.algo.ts:847","pc":[3171,3172]},{"teal":3396,"source":"contracts/stakingPool.algo.ts:847","pc":[3173]},{"teal":3399,"source":"contracts/stakingPool.algo.ts:847","errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3174]},{"teal":3400,"source":"contracts/stakingPool.algo.ts:847","pc":[3175,3176]},{"teal":3401,"source":"contracts/stakingPool.algo.ts:847","pc":[3177]},{"teal":3402,"source":"contracts/stakingPool.algo.ts:847","pc":[3178]},{"teal":3403,"source":"contracts/stakingPool.algo.ts:847","pc":[3179]},{"teal":3404,"source":"contracts/stakingPool.algo.ts:847","pc":[3180]},{"teal":3405,"source":"contracts/stakingPool.algo.ts:847","pc":[3181,3182]},{"teal":3406,"source":"contracts/stakingPool.algo.ts:847","pc":[3183]},{"teal":3407,"source":"contracts/stakingPool.algo.ts:847","pc":[3184]},{"teal":3408,"source":"contracts/stakingPool.algo.ts:847","pc":[3185]},{"teal":3409,"source":"contracts/stakingPool.algo.ts:846","pc":[3186]},{"teal":3413,"source":"contracts/stakingPool.algo.ts:848","pc":[3187,3188]},{"teal":3414,"source":"contracts/stakingPool.algo.ts:848","pc":[3189]},{"teal":3415,"source":"contracts/stakingPool.algo.ts:848","pc":[3190]},{"teal":3416,"source":"contracts/stakingPool.algo.ts:848","pc":[3191,3192]},{"teal":3417,"source":"contracts/stakingPool.algo.ts:848","pc":[3193]},{"teal":3418,"source":"contracts/stakingPool.algo.ts:848","pc":[3194]},{"teal":3431,"source":"contracts/stakingPool.algo.ts:854","pc":[3195]},{"teal":3432,"source":"contracts/stakingPool.algo.ts:854","pc":[3196]},{"teal":3433,"source":"contracts/stakingPool.algo.ts:854","pc":[3197,3198]},{"teal":3434,"source":"contracts/stakingPool.algo.ts:854","pc":[3199,3200,3201,3202,3203,3204]},{"teal":3435,"source":"contracts/stakingPool.algo.ts:854","pc":[3205,3206]},{"teal":3439,"source":"contracts/stakingPool.algo.ts:855","pc":[3207]},{"teal":3440,"source":"contracts/stakingPool.algo.ts:855","pc":[3208]},{"teal":3441,"source":"contracts/stakingPool.algo.ts:855","pc":[3209,3210]},{"teal":3451,"source":"contracts/stakingPool.algo.ts:857","pc":[3211]},{"teal":3452,"source":"contracts/stakingPool.algo.ts:857","pc":[3212]},{"teal":3453,"source":"contracts/stakingPool.algo.ts:857","pc":[3213]},{"teal":3454,"source":"contracts/stakingPool.algo.ts:857","pc":[3214,3215]},{"teal":3455,"source":"contracts/stakingPool.algo.ts:857","pc":[3216]},{"teal":3456,"source":"contracts/stakingPool.algo.ts:857","pc":[3217]},{"teal":3457,"source":"contracts/stakingPool.algo.ts:857","pc":[3218]},{"teal":3458,"source":"contracts/stakingPool.algo.ts:857","pc":[3219,3220,3221]},{"teal":3459,"source":"contracts/stakingPool.algo.ts:857","pc":[3222]},{"teal":3460,"source":"contracts/stakingPool.algo.ts:857","pc":[3223]},{"teal":3461,"source":"contracts/stakingPool.algo.ts:857","pc":[3224,3225]},{"teal":3462,"source":"contracts/stakingPool.algo.ts:858","pc":[3226,3227]},{"teal":3463,"source":"contracts/stakingPool.algo.ts:858","pc":[3228]},{"teal":3464,"source":"contracts/stakingPool.algo.ts:858","pc":[3229,3230]},{"teal":3465,"source":"contracts/stakingPool.algo.ts:859","pc":[3231,3232]},{"teal":3466,"source":"contracts/stakingPool.algo.ts:859","pc":[3233]},{"teal":3467,"source":"contracts/stakingPool.algo.ts:859","pc":[3234,3235]},{"teal":3468,"source":"contracts/stakingPool.algo.ts:860","pc":[3236,3237]},{"teal":3469,"source":"contracts/stakingPool.algo.ts:860","pc":[3238]},{"teal":3470,"source":"contracts/stakingPool.algo.ts:860","pc":[3239,3240]},{"teal":3471,"source":"contracts/stakingPool.algo.ts:861","pc":[3241,3242]},{"teal":3472,"source":"contracts/stakingPool.algo.ts:861","pc":[3243]},{"teal":3473,"source":"contracts/stakingPool.algo.ts:861","pc":[3244,3245]},{"teal":3476,"source":"contracts/stakingPool.algo.ts:854","pc":[3246]},{"teal":3477,"source":"contracts/stakingPool.algo.ts:854","pc":[3247,3248]},{"teal":3480,"source":"contracts/stakingPool.algo.ts:854","pc":[3249]},{"teal":3481,"source":"contracts/stakingPool.algo.ts:512","pc":[3250]},{"teal":3486,"source":"contracts/stakingPool.algo.ts:886","pc":[3251,3252,3253]},{"teal":3487,"source":"contracts/stakingPool.algo.ts:886","pc":[3254]},{"teal":3490,"source":"contracts/stakingPool.algo.ts:885","pc":[3255,3256,3257]},{"teal":3491,"source":"contracts/stakingPool.algo.ts:885","pc":[3258]},{"teal":3494,"source":"contracts/stakingPool.algo.ts:884","pc":[3259,3260,3261]},{"teal":3495,"source":"contracts/stakingPool.algo.ts:884","pc":[3262]},{"teal":3498,"source":"contracts/stakingPool.algo.ts:883","pc":[3263,3264,3265]},{"teal":3499,"source":"contracts/stakingPool.algo.ts:883","pc":[3266,3267,3268]},{"teal":3502,"source":"contracts/stakingPool.algo.ts:882","pc":[3269,3270,3271]},{"teal":3503,"source":"contracts/stakingPool.algo.ts:882","pc":[3272,3273,3274]},{"teal":3506,"source":"contracts/stakingPool.algo.ts:881","pc":[3275,3276,3277]},{"teal":3507,"source":"contracts/stakingPool.algo.ts:881","pc":[3278,3279,3280]},{"teal":3510,"source":"contracts/stakingPool.algo.ts:880","pc":[3281,3282]},{"teal":3511,"source":"contracts/stakingPool.algo.ts:880","pc":[3283]},{"teal":3512,"source":"contracts/stakingPool.algo.ts:880","pc":[3284]},{"teal":3513,"source":"contracts/stakingPool.algo.ts:880","pc":[3285]},{"teal":3514,"source":"contracts/stakingPool.algo.ts:880","pc":[3286,3287]},{"teal":3515,"source":"contracts/stakingPool.algo.ts:880","pc":[3288]},{"teal":3516,"source":"contracts/stakingPool.algo.ts:880","pc":[3289]},{"teal":3519,"source":"contracts/stakingPool.algo.ts:880","errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3290]},{"teal":3522,"source":"contracts/stakingPool.algo.ts:879","pc":[3291,3292,3293]},{"teal":3523,"source":"contracts/stakingPool.algo.ts:879","pc":[3294]},{"teal":3524,"source":"contracts/stakingPool.algo.ts:879","pc":[3295]},{"teal":3540,"source":"contracts/stakingPool.algo.ts:879","pc":[3296,3297,3298]},{"teal":3543,"source":"contracts/stakingPool.algo.ts:879","pc":[3299]},{"teal":3547,"source":"contracts/stakingPool.algo.ts:888","pc":[3300,3301,3302]},{"teal":3550,"source":"contracts/stakingPool.algo.ts:888","errorMessage":"can only be called by owner or manager of validator","pc":[3303]},{"teal":3554,"source":"contracts/stakingPool.algo.ts:889","pc":[3304,3305,3306]},{"teal":3555,"source":"contracts/stakingPool.algo.ts:889","pc":[3307,3308]},{"teal":3560,"source":"contracts/stakingPool.algo.ts:890","pc":[3309,3310]},{"teal":3561,"source":"contracts/stakingPool.algo.ts:890","pc":[3311,3312]},{"teal":3562,"source":"contracts/stakingPool.algo.ts:890","pc":[3313,3314]},{"teal":3563,"source":"contracts/stakingPool.algo.ts:890","pc":[3315]},{"teal":3566,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3316]},{"teal":3569,"source":"contracts/stakingPool.algo.ts:890","pc":[3317,3318]},{"teal":3570,"source":"contracts/stakingPool.algo.ts:890","pc":[3319,3320]},{"teal":3571,"source":"contracts/stakingPool.algo.ts:890","pc":[3321,3322]},{"teal":3572,"source":"contracts/stakingPool.algo.ts:890","pc":[3323]},{"teal":3575,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3324]},{"teal":3587,"source":"contracts/stakingPool.algo.ts:891","pc":[3325]},{"teal":3588,"source":"contracts/stakingPool.algo.ts:891","pc":[3326,3327]},{"teal":3589,"source":"contracts/stakingPool.algo.ts:891","pc":[3328,3329]},{"teal":3593,"source":"contracts/stakingPool.algo.ts:892","pc":[3330,3331]},{"teal":3594,"source":"contracts/stakingPool.algo.ts:892","pc":[3332,3333]},{"teal":3598,"source":"contracts/stakingPool.algo.ts:893","pc":[3334,3335]},{"teal":3599,"source":"contracts/stakingPool.algo.ts:893","pc":[3336,3337]},{"teal":3603,"source":"contracts/stakingPool.algo.ts:894","pc":[3338,3339]},{"teal":3604,"source":"contracts/stakingPool.algo.ts:894","pc":[3340,3341]},{"teal":3608,"source":"contracts/stakingPool.algo.ts:895","pc":[3342,3343]},{"teal":3609,"source":"contracts/stakingPool.algo.ts:895","pc":[3344,3345]},{"teal":3613,"source":"contracts/stakingPool.algo.ts:896","pc":[3346,3347]},{"teal":3614,"source":"contracts/stakingPool.algo.ts:896","pc":[3348,3349]},{"teal":3618,"source":"contracts/stakingPool.algo.ts:897","pc":[3350,3351]},{"teal":3619,"source":"contracts/stakingPool.algo.ts:897","pc":[3352,3353]},{"teal":3623,"source":"contracts/stakingPool.algo.ts:898","pc":[3354,3355]},{"teal":3624,"source":"contracts/stakingPool.algo.ts:898","pc":[3356,3357]},{"teal":3627,"source":"contracts/stakingPool.algo.ts:891","pc":[3358]},{"teal":3628,"source":"contracts/stakingPool.algo.ts:879","pc":[3359]},{"teal":3633,"source":"contracts/stakingPool.algo.ts:907","pc":[3360,3361,3362]},{"teal":3634,"source":"contracts/stakingPool.algo.ts:907","pc":[3363]},{"teal":3635,"source":"contracts/stakingPool.algo.ts:907","pc":[3364]},{"teal":3642,"source":"contracts/stakingPool.algo.ts:907","pc":[3365,3366,3367]},{"teal":3647,"source":"contracts/stakingPool.algo.ts:910","pc":[3368,3369]},{"teal":3648,"source":"contracts/stakingPool.algo.ts:910","pc":[3370]},{"teal":3649,"source":"contracts/stakingPool.algo.ts:910","pc":[3371]},{"teal":3650,"source":"contracts/stakingPool.algo.ts:910","pc":[3372,3373]},{"teal":3651,"source":"contracts/stakingPool.algo.ts:910","pc":[3374]},{"teal":3652,"source":"contracts/stakingPool.algo.ts:910","pc":[3375]},{"teal":3653,"source":"contracts/stakingPool.algo.ts:910","pc":[3376,3377,3378]},{"teal":3658,"source":"contracts/stakingPool.algo.ts:911","pc":[3379,3380,3381]},{"teal":3661,"source":"contracts/stakingPool.algo.ts:911","errorMessage":"can only be called by owner or manager of validator","pc":[3382]},{"teal":3666,"source":"contracts/stakingPool.algo.ts:914","pc":[3383]},{"teal":3667,"source":"contracts/stakingPool.algo.ts:914","pc":[3384,3385]},{"teal":3668,"source":"contracts/stakingPool.algo.ts:914","pc":[3386,3387]},{"teal":3671,"source":"contracts/stakingPool.algo.ts:914","pc":[3388]},{"teal":3672,"source":"contracts/stakingPool.algo.ts:914","pc":[3389,3390]},{"teal":3675,"source":"contracts/stakingPool.algo.ts:914","pc":[3391]},{"teal":3676,"source":"contracts/stakingPool.algo.ts:907","pc":[3392]},{"teal":3681,"source":"contracts/stakingPool.algo.ts:920","pc":[3393,3394,3395]},{"teal":3682,"source":"contracts/stakingPool.algo.ts:920","pc":[3396,3397,3398]},{"teal":3685,"source":"contracts/stakingPool.algo.ts:920","pc":[3399,3400,3401]},{"teal":3686,"source":"contracts/stakingPool.algo.ts:920","pc":[3402]},{"teal":3689,"source":"contracts/stakingPool.algo.ts:920","pc":[3403,3404,3405]},{"teal":3690,"source":"contracts/stakingPool.algo.ts:920","pc":[3406]},{"teal":3691,"source":"contracts/stakingPool.algo.ts:920","pc":[3407]},{"teal":3695,"source":"contracts/stakingPool.algo.ts:920","pc":[3408,3409,3410]},{"teal":3699,"source":"contracts/stakingPool.algo.ts:921","pc":[3411,3412,3413]},{"teal":3702,"source":"contracts/stakingPool.algo.ts:921","errorMessage":"can only be called by owner or manager of validator","pc":[3414]},{"teal":3710,"source":"contracts/stakingPool.algo.ts:923","pc":[3415]},{"teal":3711,"source":"contracts/stakingPool.algo.ts:923","pc":[3416]},{"teal":3712,"source":"contracts/stakingPool.algo.ts:923","pc":[3417,3418]},{"teal":3716,"source":"contracts/stakingPool.algo.ts:924","pc":[3419,3420]},{"teal":3717,"source":"contracts/stakingPool.algo.ts:924","pc":[3421,3422]},{"teal":3721,"source":"contracts/stakingPool.algo.ts:925","pc":[3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439]},{"teal":3722,"source":"contracts/stakingPool.algo.ts:925","pc":[3440,3441]},{"teal":3723,"source":"contracts/stakingPool.algo.ts:925","pc":[3442,3443]},{"teal":3724,"source":"contracts/stakingPool.algo.ts:925","pc":[3444,3445]},{"teal":3725,"source":"contracts/stakingPool.algo.ts:925","pc":[3446,3447]},{"teal":3726,"source":"contracts/stakingPool.algo.ts:925","pc":[3448]},{"teal":3727,"source":"contracts/stakingPool.algo.ts:925","pc":[3449,3450]},{"teal":3728,"source":"contracts/stakingPool.algo.ts:925","pc":[3451,3452]},{"teal":3729,"source":"contracts/stakingPool.algo.ts:925","pc":[3453,3454]},{"teal":3733,"source":"contracts/stakingPool.algo.ts:926","pc":[3455,3456]},{"teal":3734,"source":"contracts/stakingPool.algo.ts:926","pc":[3457,3458]},{"teal":3737,"source":"contracts/stakingPool.algo.ts:923","pc":[3459]},{"teal":3738,"source":"contracts/stakingPool.algo.ts:923","pc":[3460,3461]},{"teal":3741,"source":"contracts/stakingPool.algo.ts:923","pc":[3462]},{"teal":3742,"source":"contracts/stakingPool.algo.ts:920","pc":[3463]},{"teal":3747,"source":"contracts/stakingPool.algo.ts:936","pc":[3464,3465]},{"teal":3750,"source":"contracts/stakingPool.algo.ts:936","pc":[3466,3467,3468]},{"teal":3751,"source":"contracts/stakingPool.algo.ts:936","pc":[3469]},{"teal":3752,"source":"contracts/stakingPool.algo.ts:936","pc":[3470]},{"teal":3753,"source":"contracts/stakingPool.algo.ts:936","pc":[3471,3472]},{"teal":3754,"source":"contracts/stakingPool.algo.ts:936","pc":[3473]},{"teal":3757,"source":"contracts/stakingPool.algo.ts:936","errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3474]},{"teal":3760,"source":"contracts/stakingPool.algo.ts:936","pc":[3475,3476,3477]},{"teal":3761,"source":"contracts/stakingPool.algo.ts:936","pc":[3478]},{"teal":3762,"source":"contracts/stakingPool.algo.ts:936","pc":[3479]},{"teal":3763,"source":"contracts/stakingPool.algo.ts:936","pc":[3480]},{"teal":3764,"source":"contracts/stakingPool.algo.ts:936","pc":[3481]},{"teal":3773,"source":"contracts/stakingPool.algo.ts:936","pc":[3482,3483,3484]},{"teal":3776,"source":"contracts/stakingPool.algo.ts:936","pc":[3485]},{"teal":3780,"source":"contracts/stakingPool.algo.ts:937","pc":[3486]},{"teal":3781,"source":"contracts/stakingPool.algo.ts:937","pc":[3487]},{"teal":3782,"source":"contracts/stakingPool.algo.ts:937","pc":[3488,3489]},{"teal":3783,"source":"contracts/stakingPool.algo.ts:937","pc":[3490,3491,3492]},{"teal":3784,"source":"contracts/stakingPool.algo.ts:937","pc":[3493]},{"teal":3785,"source":"contracts/stakingPool.algo.ts:937","pc":[3494]},{"teal":3788,"source":"contracts/stakingPool.algo.ts:937","errorMessage":"caller must be part of same validator set!","pc":[3495]},{"teal":3792,"source":"contracts/stakingPool.algo.ts:938","pc":[3496,3497]},{"teal":3793,"source":"contracts/stakingPool.algo.ts:938","pc":[3498]},{"teal":3794,"source":"contracts/stakingPool.algo.ts:938","pc":[3499]},{"teal":3795,"source":"contracts/stakingPool.algo.ts:938","pc":[3500]},{"teal":3798,"source":"contracts/stakingPool.algo.ts:938","errorMessage":"callee must be pool 1","pc":[3501]},{"teal":3802,"source":"contracts/stakingPool.algo.ts:939","pc":[3502,3503]},{"teal":3803,"source":"contracts/stakingPool.algo.ts:939","pc":[3504,3505,3506]},{"teal":3804,"source":"contracts/stakingPool.algo.ts:939","pc":[3507]},{"teal":3805,"source":"contracts/stakingPool.algo.ts:939","pc":[3508]},{"teal":3806,"source":"contracts/stakingPool.algo.ts:939","pc":[3509]},{"teal":3809,"source":"contracts/stakingPool.algo.ts:939","errorMessage":"caller must NOT be pool 1","pc":[3510]},{"teal":3816,"source":"contracts/stakingPool.algo.ts:941","pc":[3511]},{"teal":3817,"source":"contracts/stakingPool.algo.ts:941","pc":[3512]},{"teal":3818,"source":"contracts/stakingPool.algo.ts:941","pc":[3513,3514]},{"teal":3819,"source":"contracts/stakingPool.algo.ts:941","pc":[3515,3516]},{"teal":3820,"source":"contracts/stakingPool.algo.ts:941","pc":[3517,3518]},{"teal":3824,"source":"contracts/stakingPool.algo.ts:942","pc":[3519]},{"teal":3825,"source":"contracts/stakingPool.algo.ts:942","pc":[3520]},{"teal":3826,"source":"contracts/stakingPool.algo.ts:942","pc":[3521,3522]},{"teal":3830,"source":"contracts/stakingPool.algo.ts:943","pc":[3523,3524]},{"teal":3831,"source":"contracts/stakingPool.algo.ts:943","pc":[3525,3526,3527]},{"teal":3832,"source":"contracts/stakingPool.algo.ts:943","pc":[3528]},{"teal":3833,"source":"contracts/stakingPool.algo.ts:943","pc":[3529]},{"teal":3834,"source":"contracts/stakingPool.algo.ts:943","pc":[3530,3531]},{"teal":3835,"source":"contracts/stakingPool.algo.ts:943","pc":[3532,3533]},{"teal":3836,"source":"contracts/stakingPool.algo.ts:943","pc":[3534,3535,3536]},{"teal":3837,"source":"contracts/stakingPool.algo.ts:943","pc":[3537]},{"teal":3838,"source":"contracts/stakingPool.algo.ts:943","pc":[3538]},{"teal":3839,"source":"contracts/stakingPool.algo.ts:943","pc":[3539,3540]},{"teal":3842,"source":"contracts/stakingPool.algo.ts:941","pc":[3541]},{"teal":3843,"source":"contracts/stakingPool.algo.ts:941","pc":[3542,3543]},{"teal":3846,"source":"contracts/stakingPool.algo.ts:941","pc":[3544]},{"teal":3847,"source":"contracts/stakingPool.algo.ts:941","pc":[3545,3546]},{"teal":3848,"source":"contracts/stakingPool.algo.ts:941","pc":[3547]},{"teal":3849,"source":"contracts/stakingPool.algo.ts:941","pc":[3548]},{"teal":3850,"source":"contracts/stakingPool.algo.ts:941","pc":[3549,3550]},{"teal":3851,"source":"contracts/stakingPool.algo.ts:941","pc":[3551,3552,3553]},{"teal":3852,"source":"contracts/stakingPool.algo.ts:941","pc":[3554]},{"teal":3853,"source":"contracts/stakingPool.algo.ts:941","pc":[3555,3556]},{"teal":3857,"source":"contracts/stakingPool.algo.ts:945","pc":[3557,3558]},{"teal":3858,"source":"contracts/stakingPool.algo.ts:945","pc":[3559,3560]},{"teal":3859,"source":"contracts/stakingPool.algo.ts:945","pc":[3561,3562,3563]},{"teal":3860,"source":"contracts/stakingPool.algo.ts:945","pc":[3564]},{"teal":3861,"source":"contracts/stakingPool.algo.ts:945","pc":[3565]},{"teal":3862,"source":"contracts/stakingPool.algo.ts:945","pc":[3566]},{"teal":3866,"source":"contracts/stakingPool.algo.ts:946","pc":[3567,3568]},{"teal":3867,"source":"contracts/stakingPool.algo.ts:946","pc":[3569,3570]},{"teal":3868,"source":"contracts/stakingPool.algo.ts:946","pc":[3571,3572,3573]},{"teal":3869,"source":"contracts/stakingPool.algo.ts:946","pc":[3574]},{"teal":3870,"source":"contracts/stakingPool.algo.ts:946","pc":[3575,3576]},{"teal":3871,"source":"contracts/stakingPool.algo.ts:946","pc":[3577]},{"teal":3872,"source":"contracts/stakingPool.algo.ts:946","pc":[3578]},{"teal":3873,"source":"contracts/stakingPool.algo.ts:946","pc":[3579]},{"teal":3880,"source":"contracts/stakingPool.algo.ts:948","pc":[3580]},{"teal":3881,"source":"contracts/stakingPool.algo.ts:948","pc":[3581]},{"teal":3882,"source":"contracts/stakingPool.algo.ts:948","pc":[3582,3583]},{"teal":3883,"source":"contracts/stakingPool.algo.ts:948","pc":[3584,3585]},{"teal":3884,"source":"contracts/stakingPool.algo.ts:948","pc":[3586,3587]},{"teal":3888,"source":"contracts/stakingPool.algo.ts:949","pc":[3588]},{"teal":3889,"source":"contracts/stakingPool.algo.ts:949","pc":[3589]},{"teal":3890,"source":"contracts/stakingPool.algo.ts:949","pc":[3590,3591]},{"teal":3894,"source":"contracts/stakingPool.algo.ts:950","pc":[3592]},{"teal":3895,"source":"contracts/stakingPool.algo.ts:950","pc":[3593]},{"teal":3896,"source":"contracts/stakingPool.algo.ts:950","pc":[3594]},{"teal":3897,"source":"contracts/stakingPool.algo.ts:950","pc":[3595,3596]},{"teal":3900,"source":"contracts/stakingPool.algo.ts:948","pc":[3597]},{"teal":3901,"source":"contracts/stakingPool.algo.ts:948","pc":[3598,3599]},{"teal":3904,"source":"contracts/stakingPool.algo.ts:948","pc":[3600]},{"teal":3905,"source":"contracts/stakingPool.algo.ts:948","pc":[3601,3602]},{"teal":3906,"source":"contracts/stakingPool.algo.ts:948","pc":[3603]},{"teal":3907,"source":"contracts/stakingPool.algo.ts:948","pc":[3604]},{"teal":3908,"source":"contracts/stakingPool.algo.ts:948","pc":[3605,3606]},{"teal":3909,"source":"contracts/stakingPool.algo.ts:948","pc":[3607,3608,3609]},{"teal":3912,"source":"contracts/stakingPool.algo.ts:936","pc":[3610,3611]},{"teal":3913,"source":"contracts/stakingPool.algo.ts:936","pc":[3612]},{"teal":3917,"source":"contracts/stakingPool.algo.ts:954","pc":[3613,3614,3615]},{"teal":3920,"source":"contracts/stakingPool.algo.ts:954","pc":[3616]},{"teal":3927,"source":"contracts/stakingPool.algo.ts:955","pc":[3617]},{"teal":3928,"source":"contracts/stakingPool.algo.ts:955","pc":[3618]},{"teal":3929,"source":"contracts/stakingPool.algo.ts:955","pc":[3619,3620]},{"teal":3930,"source":"contracts/stakingPool.algo.ts:955","pc":[3621,3622,3623,3624,3625,3626]},{"teal":3931,"source":"contracts/stakingPool.algo.ts:955","pc":[3627,3628]},{"teal":3935,"source":"contracts/stakingPool.algo.ts:956","pc":[3629]},{"teal":3936,"source":"contracts/stakingPool.algo.ts:956","pc":[3630]},{"teal":3937,"source":"contracts/stakingPool.algo.ts:956","pc":[3631,3632]},{"teal":3941,"source":"contracts/stakingPool.algo.ts:957","pc":[3633]},{"teal":3942,"source":"contracts/stakingPool.algo.ts:957","pc":[3634]},{"teal":3943,"source":"contracts/stakingPool.algo.ts:957","pc":[3635]},{"teal":3944,"source":"contracts/stakingPool.algo.ts:957","pc":[3636,3637]},{"teal":3947,"source":"contracts/stakingPool.algo.ts:955","pc":[3638]},{"teal":3948,"source":"contracts/stakingPool.algo.ts:955","pc":[3639,3640]},{"teal":3951,"source":"contracts/stakingPool.algo.ts:955","pc":[3641]},{"teal":3952,"source":"contracts/stakingPool.algo.ts:955","pc":[3642,3643]},{"teal":3953,"source":"contracts/stakingPool.algo.ts:955","pc":[3644]},{"teal":3954,"source":"contracts/stakingPool.algo.ts:955","pc":[3645]},{"teal":3955,"source":"contracts/stakingPool.algo.ts:955","pc":[3646,3647]},{"teal":3956,"source":"contracts/stakingPool.algo.ts:955","pc":[3648,3649,3650]},{"teal":3957,"source":"contracts/stakingPool.algo.ts:955","pc":[3651,3652]},{"teal":3961,"source":"contracts/stakingPool.algo.ts:959","pc":[3653,3654]},{"teal":3962,"source":"contracts/stakingPool.algo.ts:959","pc":[3655,3656]},{"teal":3963,"source":"contracts/stakingPool.algo.ts:959","pc":[3657,3658,3659]},{"teal":3964,"source":"contracts/stakingPool.algo.ts:959","pc":[3660]},{"teal":3965,"source":"contracts/stakingPool.algo.ts:959","pc":[3661]},{"teal":3966,"source":"contracts/stakingPool.algo.ts:959","pc":[3662,3663,3664]},{"teal":3967,"source":"contracts/stakingPool.algo.ts:959","pc":[3665,3666]},{"teal":3968,"source":"contracts/stakingPool.algo.ts:959","pc":[3667,3668]},{"teal":3969,"source":"contracts/stakingPool.algo.ts:959","pc":[3669,3670,3671]},{"teal":3970,"source":"contracts/stakingPool.algo.ts:959","pc":[3672]},{"teal":3971,"source":"contracts/stakingPool.algo.ts:959","pc":[3673]},{"teal":3975,"source":"contracts/stakingPool.algo.ts:954","pc":[3674,3675]},{"teal":3976,"source":"contracts/stakingPool.algo.ts:954","pc":[3676]},{"teal":3983,"source":"contracts/stakingPool.algo.ts:966","pc":[3677,3678,3679]},{"teal":3986,"source":"contracts/stakingPool.algo.ts:966","pc":[3680]},{"teal":3990,"source":"contracts/stakingPool.algo.ts:967","pc":[3681,3682,3683]},{"teal":3991,"source":"contracts/stakingPool.algo.ts:967","pc":[3684,3685]},{"teal":3995,"source":"contracts/stakingPool.algo.ts:969","pc":[3686,3687]},{"teal":3996,"source":"contracts/stakingPool.algo.ts:969","pc":[3688,3689]},{"teal":3997,"source":"contracts/stakingPool.algo.ts:969","pc":[3690]},{"teal":3998,"source":"contracts/stakingPool.algo.ts:969","pc":[3691]},{"teal":3999,"source":"contracts/stakingPool.algo.ts:969","pc":[3692,3693]},{"teal":4000,"source":"contracts/stakingPool.algo.ts:969","pc":[3694]},{"teal":4001,"source":"contracts/stakingPool.algo.ts:969","pc":[3695]},{"teal":4002,"source":"contracts/stakingPool.algo.ts:969","pc":[3696]},{"teal":4003,"source":"contracts/stakingPool.algo.ts:969","pc":[3697]},{"teal":4004,"source":"contracts/stakingPool.algo.ts:969","pc":[3698]},{"teal":4007,"source":"contracts/stakingPool.algo.ts:969","errorMessage":"wideRatio failed","pc":[3699]},{"teal":4010,"source":"contracts/stakingPool.algo.ts:966","pc":[3700,3701]},{"teal":4011,"source":"contracts/stakingPool.algo.ts:966","pc":[3702]},{"teal":4015,"source":"contracts/stakingPool.algo.ts:972","pc":[3703,3704,3705]},{"teal":4020,"source":"contracts/stakingPool.algo.ts:974","pc":[3706,3707]},{"teal":4021,"source":"contracts/stakingPool.algo.ts:974","pc":[3708,3709]},{"teal":4022,"source":"contracts/stakingPool.algo.ts:974","pc":[3710]},{"teal":4023,"source":"contracts/stakingPool.algo.ts:974","pc":[3711]},{"teal":4024,"source":"contracts/stakingPool.algo.ts:974","pc":[3712,3713,3714]},{"teal":4029,"source":"contracts/stakingPool.algo.ts:975","pc":[3715,3716]},{"teal":4030,"source":"contracts/stakingPool.algo.ts:975","pc":[3717]},{"teal":4035,"source":"contracts/stakingPool.algo.ts:977","pc":[3718]},{"teal":4036,"source":"contracts/stakingPool.algo.ts:972","pc":[3719]},{"teal":4040,"source":"contracts/stakingPool.algo.ts:980","pc":[3720,3721,3722]},{"teal":4044,"source":"contracts/stakingPool.algo.ts:981","pc":[3723]},{"teal":4045,"source":"contracts/stakingPool.algo.ts:980","pc":[3724]},{"teal":4051,"source":"contracts/stakingPool.algo.ts:987","pc":[3725,3726,3727]},{"teal":4054,"source":"contracts/stakingPool.algo.ts:987","pc":[3728]},{"teal":4055,"source":"contracts/stakingPool.algo.ts:987","pc":[3729,3730]},{"teal":4059,"source":"contracts/stakingPool.algo.ts:988","pc":[3731,3732]},{"teal":4060,"source":"contracts/stakingPool.algo.ts:988","pc":[3733]},{"teal":4061,"source":"contracts/stakingPool.algo.ts:988","pc":[3734]},{"teal":4062,"source":"contracts/stakingPool.algo.ts:988","pc":[3735,3736]},{"teal":4067,"source":"contracts/stakingPool.algo.ts:989","pc":[3737,3738]},{"teal":4068,"source":"contracts/stakingPool.algo.ts:989","pc":[3739,3740]},{"teal":4069,"source":"contracts/stakingPool.algo.ts:989","pc":[3741]},{"teal":4070,"source":"contracts/stakingPool.algo.ts:989","pc":[3742,3743]},{"teal":4071,"source":"contracts/stakingPool.algo.ts:989","pc":[3744]},{"teal":4072,"source":"contracts/stakingPool.algo.ts:989","pc":[3745]},{"teal":4073,"source":"contracts/stakingPool.algo.ts:989","pc":[3746]},{"teal":4074,"source":"contracts/stakingPool.algo.ts:989","pc":[3747]},{"teal":4077,"source":"contracts/stakingPool.algo.ts:989","errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[3748]},{"teal":4078,"source":"contracts/stakingPool.algo.ts:989","pc":[3749,3750,3751,3752,3753,3754,3755,3756,3757,3758]},{"teal":4079,"source":"contracts/stakingPool.algo.ts:989","pc":[3759]},{"teal":4080,"source":"contracts/stakingPool.algo.ts:989","pc":[3760]},{"teal":4081,"source":"contracts/stakingPool.algo.ts:989","pc":[3761]},{"teal":4082,"source":"contracts/stakingPool.algo.ts:989","pc":[3762]},{"teal":4083,"source":"contracts/stakingPool.algo.ts:989","pc":[3763,3764]},{"teal":4084,"source":"contracts/stakingPool.algo.ts:989","pc":[3765]},{"teal":4085,"source":"contracts/stakingPool.algo.ts:989","pc":[3766]},{"teal":4086,"source":"contracts/stakingPool.algo.ts:989","pc":[3767]},{"teal":4087,"source":"contracts/stakingPool.algo.ts:989","pc":[3768]},{"teal":4088,"source":"contracts/stakingPool.algo.ts:989","pc":[3769]},{"teal":4089,"source":"contracts/stakingPool.algo.ts:989","pc":[3770]},{"teal":4090,"source":"contracts/stakingPool.algo.ts:989","pc":[3771,3772,3773]},{"teal":4096,"source":"contracts/stakingPool.algo.ts:990","pc":[3774,3775]},{"teal":4097,"source":"contracts/stakingPool.algo.ts:990","pc":[3776,3777]},{"teal":4098,"source":"contracts/stakingPool.algo.ts:990","pc":[3778]},{"teal":4099,"source":"contracts/stakingPool.algo.ts:990","pc":[3779,3780,3781]},{"teal":4104,"source":"contracts/stakingPool.algo.ts:991","pc":[3782]},{"teal":4105,"source":"contracts/stakingPool.algo.ts:991","pc":[3783]},{"teal":4106,"source":"contracts/stakingPool.algo.ts:991","pc":[3784,3785]},{"teal":4107,"source":"contracts/stakingPool.algo.ts:991","pc":[3786]},{"teal":4108,"source":"contracts/stakingPool.algo.ts:991","pc":[3787,3788]},{"teal":4109,"source":"contracts/stakingPool.algo.ts:991","pc":[3789,3790]},{"teal":4110,"source":"contracts/stakingPool.algo.ts:991","pc":[3791]},{"teal":4111,"source":"contracts/stakingPool.algo.ts:991","pc":[3792,3793]},{"teal":4112,"source":"contracts/stakingPool.algo.ts:991","pc":[3794,3795]},{"teal":4113,"source":"contracts/stakingPool.algo.ts:991","pc":[3796,3797]},{"teal":4114,"source":"contracts/stakingPool.algo.ts:991","pc":[3798,3799]},{"teal":4115,"source":"contracts/stakingPool.algo.ts:991","pc":[3800]},{"teal":4120,"source":"contracts/stakingPool.algo.ts:993","pc":[3801,3802]},{"teal":4121,"source":"contracts/stakingPool.algo.ts:993","pc":[3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820]},{"teal":4122,"source":"contracts/stakingPool.algo.ts:993","pc":[3821]},{"teal":4123,"source":"contracts/stakingPool.algo.ts:993","pc":[3822]},{"teal":4124,"source":"contracts/stakingPool.algo.ts:993","pc":[3823]},{"teal":4125,"source":"contracts/stakingPool.algo.ts:993","pc":[3824,3825]},{"teal":4126,"source":"contracts/stakingPool.algo.ts:993","pc":[3826]},{"teal":4129,"source":"contracts/stakingPool.algo.ts:993","errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[3827]},{"teal":4130,"source":"contracts/stakingPool.algo.ts:993","pc":[3828,3829]},{"teal":4131,"source":"contracts/stakingPool.algo.ts:993","pc":[3830]},{"teal":4132,"source":"contracts/stakingPool.algo.ts:993","pc":[3831]},{"teal":4133,"source":"contracts/stakingPool.algo.ts:993","pc":[3832]},{"teal":4134,"source":"contracts/stakingPool.algo.ts:993","pc":[3833]},{"teal":4135,"source":"contracts/stakingPool.algo.ts:993","pc":[3834,3835]},{"teal":4136,"source":"contracts/stakingPool.algo.ts:993","pc":[3836]},{"teal":4137,"source":"contracts/stakingPool.algo.ts:993","pc":[3837]},{"teal":4138,"source":"contracts/stakingPool.algo.ts:993","pc":[3838]},{"teal":4139,"source":"contracts/stakingPool.algo.ts:993","pc":[3839,3840]},{"teal":4143,"source":"contracts/stakingPool.algo.ts:994","pc":[3841,3842]},{"teal":4144,"source":"contracts/stakingPool.algo.ts:994","pc":[3843]},{"teal":4145,"source":"contracts/stakingPool.algo.ts:994","pc":[3844,3845]},{"teal":4146,"source":"contracts/stakingPool.algo.ts:994","pc":[3846]},{"teal":4147,"source":"contracts/stakingPool.algo.ts:994","pc":[3847]},{"teal":4148,"source":"contracts/stakingPool.algo.ts:994","pc":[3848]},{"teal":4149,"source":"contracts/stakingPool.algo.ts:994","pc":[3849,3850]},{"teal":4150,"source":"contracts/stakingPool.algo.ts:994","pc":[3851]},{"teal":4153,"source":"contracts/stakingPool.algo.ts:994","errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[3852]},{"teal":4154,"source":"contracts/stakingPool.algo.ts:994","pc":[3853,3854]},{"teal":4155,"source":"contracts/stakingPool.algo.ts:994","pc":[3855]},{"teal":4156,"source":"contracts/stakingPool.algo.ts:994","pc":[3856]},{"teal":4157,"source":"contracts/stakingPool.algo.ts:994","pc":[3857]},{"teal":4158,"source":"contracts/stakingPool.algo.ts:994","pc":[3858]},{"teal":4159,"source":"contracts/stakingPool.algo.ts:994","pc":[3859,3860]},{"teal":4160,"source":"contracts/stakingPool.algo.ts:994","pc":[3861]},{"teal":4161,"source":"contracts/stakingPool.algo.ts:994","pc":[3862]},{"teal":4162,"source":"contracts/stakingPool.algo.ts:994","pc":[3863]},{"teal":4163,"source":"contracts/stakingPool.algo.ts:994","pc":[3864,3865]},{"teal":4168,"source":"contracts/stakingPool.algo.ts:995","pc":[3866,3867]},{"teal":4169,"source":"contracts/stakingPool.algo.ts:995","pc":[3868,3869]},{"teal":4170,"source":"contracts/stakingPool.algo.ts:995","pc":[3870]},{"teal":4171,"source":"contracts/stakingPool.algo.ts:995","pc":[3871,3872,3873]},{"teal":4178,"source":"contracts/stakingPool.algo.ts:1000","pc":[3874,3875]},{"teal":4179,"source":"contracts/stakingPool.algo.ts:1000","pc":[3876]},{"teal":4180,"source":"contracts/stakingPool.algo.ts:1000","pc":[3877]},{"teal":4181,"source":"contracts/stakingPool.algo.ts:1000","pc":[3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895]},{"teal":4182,"source":"contracts/stakingPool.algo.ts:1000","pc":[3896]},{"teal":4183,"source":"contracts/stakingPool.algo.ts:1000","pc":[3897,3898]},{"teal":4184,"source":"contracts/stakingPool.algo.ts:1000","pc":[3899]},{"teal":4185,"source":"contracts/stakingPool.algo.ts:1001","pc":[3900,3901]},{"teal":4186,"source":"contracts/stakingPool.algo.ts:1001","pc":[3902,3903]},{"teal":4187,"source":"contracts/stakingPool.algo.ts:1001","pc":[3904]},{"teal":4188,"source":"contracts/stakingPool.algo.ts:1000","pc":[3905]},{"teal":4189,"source":"contracts/stakingPool.algo.ts:1000","pc":[3906]},{"teal":4190,"source":"contracts/stakingPool.algo.ts:1000","pc":[3907]},{"teal":4191,"source":"contracts/stakingPool.algo.ts:1000","pc":[3908,3909]},{"teal":4192,"source":"contracts/stakingPool.algo.ts:1000","pc":[3910]},{"teal":4195,"source":"contracts/stakingPool.algo.ts:1000","errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[3911]},{"teal":4196,"source":"contracts/stakingPool.algo.ts:1000","pc":[3912,3913]},{"teal":4197,"source":"contracts/stakingPool.algo.ts:1000","pc":[3914]},{"teal":4198,"source":"contracts/stakingPool.algo.ts:1000","pc":[3915]},{"teal":4199,"source":"contracts/stakingPool.algo.ts:1000","pc":[3916]},{"teal":4200,"source":"contracts/stakingPool.algo.ts:1000","pc":[3917]},{"teal":4201,"source":"contracts/stakingPool.algo.ts:1000","pc":[3918,3919]},{"teal":4202,"source":"contracts/stakingPool.algo.ts:1000","pc":[3920]},{"teal":4203,"source":"contracts/stakingPool.algo.ts:1000","pc":[3921]},{"teal":4204,"source":"contracts/stakingPool.algo.ts:1000","pc":[3922]},{"teal":4205,"source":"contracts/stakingPool.algo.ts:999","pc":[3923,3924]},{"teal":4209,"source":"contracts/stakingPool.algo.ts:1003","pc":[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942]},{"teal":4210,"source":"contracts/stakingPool.algo.ts:1003","pc":[3943,3944]},{"teal":4215,"source":"contracts/stakingPool.algo.ts:1005","pc":[3945,3946]},{"teal":4216,"source":"contracts/stakingPool.algo.ts:1005","pc":[3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964]},{"teal":4217,"source":"contracts/stakingPool.algo.ts:1005","pc":[3965]},{"teal":4218,"source":"contracts/stakingPool.algo.ts:1005","pc":[3966,3967,3968]},{"teal":4223,"source":"contracts/stakingPool.algo.ts:1006","pc":[3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986]},{"teal":4224,"source":"contracts/stakingPool.algo.ts:1006","pc":[3987,3988]},{"teal":4231,"source":"contracts/stakingPool.algo.ts:1008","pc":[3989,3990]},{"teal":4232,"source":"contracts/stakingPool.algo.ts:1008","pc":[3991]},{"teal":4233,"source":"contracts/stakingPool.algo.ts:1009","pc":[3992]},{"teal":4234,"source":"contracts/stakingPool.algo.ts:1009","pc":[3993,3994]},{"teal":4235,"source":"contracts/stakingPool.algo.ts:1009","pc":[3995,3996]},{"teal":4236,"source":"contracts/stakingPool.algo.ts:1009","pc":[3997]},{"teal":4237,"source":"contracts/stakingPool.algo.ts:1009","pc":[3998]},{"teal":4238,"source":"contracts/stakingPool.algo.ts:1009","pc":[3999,4000]},{"teal":4239,"source":"contracts/stakingPool.algo.ts:1009","pc":[4001]},{"teal":4240,"source":"contracts/stakingPool.algo.ts:1010","pc":[4002,4003]},{"teal":4241,"source":"contracts/stakingPool.algo.ts:1010","pc":[4004,4005]},{"teal":4242,"source":"contracts/stakingPool.algo.ts:1010","pc":[4006]},{"teal":4243,"source":"contracts/stakingPool.algo.ts:1010","pc":[4007,4008]},{"teal":4244,"source":"contracts/stakingPool.algo.ts:1010","pc":[4009]},{"teal":4245,"source":"contracts/stakingPool.algo.ts:1009","pc":[4010]},{"teal":4246,"source":"contracts/stakingPool.algo.ts:1009","pc":[4011]},{"teal":4247,"source":"contracts/stakingPool.algo.ts:1009","pc":[4012]},{"teal":4248,"source":"contracts/stakingPool.algo.ts:1009","pc":[4013,4014]},{"teal":4249,"source":"contracts/stakingPool.algo.ts:1009","pc":[4015]},{"teal":4252,"source":"contracts/stakingPool.algo.ts:1009","errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4016]},{"teal":4253,"source":"contracts/stakingPool.algo.ts:1009","pc":[4017,4018]},{"teal":4254,"source":"contracts/stakingPool.algo.ts:1009","pc":[4019]},{"teal":4255,"source":"contracts/stakingPool.algo.ts:1009","pc":[4020]},{"teal":4256,"source":"contracts/stakingPool.algo.ts:1009","pc":[4021]},{"teal":4257,"source":"contracts/stakingPool.algo.ts:1009","pc":[4022]},{"teal":4258,"source":"contracts/stakingPool.algo.ts:1009","pc":[4023,4024]},{"teal":4259,"source":"contracts/stakingPool.algo.ts:1009","pc":[4025]},{"teal":4260,"source":"contracts/stakingPool.algo.ts:1009","pc":[4026]},{"teal":4261,"source":"contracts/stakingPool.algo.ts:1009","pc":[4027]},{"teal":4262,"source":"contracts/stakingPool.algo.ts:1008","pc":[4028]},{"teal":4267,"source":"contracts/stakingPool.algo.ts:1014","pc":[4029,4030,4031]},{"teal":4271,"source":"contracts/stakingPool.algo.ts:1015","pc":[4032,4033]},{"teal":4272,"source":"contracts/stakingPool.algo.ts:1015","pc":[4034,4035]},{"teal":4273,"source":"contracts/stakingPool.algo.ts:1015","pc":[4036]},{"teal":4274,"source":"contracts/stakingPool.algo.ts:1015","pc":[4037]},{"teal":4275,"source":"contracts/stakingPool.algo.ts:1015","pc":[4038,4039]},{"teal":4276,"source":"contracts/stakingPool.algo.ts:1015","pc":[4040]},{"teal":4277,"source":"contracts/stakingPool.algo.ts:1015","pc":[4041]},{"teal":4278,"source":"contracts/stakingPool.algo.ts:1015","pc":[4042]},{"teal":4279,"source":"contracts/stakingPool.algo.ts:1015","pc":[4043]},{"teal":4280,"source":"contracts/stakingPool.algo.ts:1015","pc":[4044]},{"teal":4281,"source":"contracts/stakingPool.algo.ts:1015","pc":[4045,4046]},{"teal":4282,"source":"contracts/stakingPool.algo.ts:1015","pc":[4047]},{"teal":4285,"source":"contracts/stakingPool.algo.ts:1015","errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4048]},{"teal":4286,"source":"contracts/stakingPool.algo.ts:1015","pc":[4049,4050]},{"teal":4287,"source":"contracts/stakingPool.algo.ts:1015","pc":[4051]},{"teal":4288,"source":"contracts/stakingPool.algo.ts:1015","pc":[4052]},{"teal":4289,"source":"contracts/stakingPool.algo.ts:1015","pc":[4053]},{"teal":4290,"source":"contracts/stakingPool.algo.ts:1015","pc":[4054]},{"teal":4291,"source":"contracts/stakingPool.algo.ts:1015","pc":[4055,4056]},{"teal":4292,"source":"contracts/stakingPool.algo.ts:1015","pc":[4057]},{"teal":4293,"source":"contracts/stakingPool.algo.ts:1015","pc":[4058]},{"teal":4294,"source":"contracts/stakingPool.algo.ts:1015","pc":[4059]},{"teal":4295,"source":"contracts/stakingPool.algo.ts:1015","pc":[4060]},{"teal":4299,"source":"contracts/stakingPool.algo.ts:1016","pc":[4061,4062]},{"teal":4300,"source":"contracts/stakingPool.algo.ts:1016","pc":[4063]},{"teal":4301,"source":"contracts/stakingPool.algo.ts:1016","pc":[4064]},{"teal":4305,"source":"contracts/stakingPool.algo.ts:1017","pc":[4065,4066]},{"teal":4306,"source":"contracts/stakingPool.algo.ts:1017","pc":[4067,4068]},{"teal":4307,"source":"contracts/stakingPool.algo.ts:1017","pc":[4069,4070]},{"teal":4308,"source":"contracts/stakingPool.algo.ts:1017","pc":[4071,4072]},{"teal":4309,"source":"contracts/stakingPool.algo.ts:1017","pc":[4073]},{"teal":4310,"source":"contracts/stakingPool.algo.ts:1017","pc":[4074]},{"teal":4311,"source":"contracts/stakingPool.algo.ts:1017","pc":[4075]},{"teal":4312,"source":"contracts/stakingPool.algo.ts:1017","pc":[4076]},{"teal":4315,"source":"contracts/stakingPool.algo.ts:987","pc":[4077]},{"teal":4319,"source":"contracts/stakingPool.algo.ts:1021","pc":[4078,4079,4080]},{"teal":4322,"source":"contracts/stakingPool.algo.ts:1021","pc":[4081]},{"teal":4327,"source":"contracts/stakingPool.algo.ts:1026","pc":[4082,4083]},{"teal":4328,"source":"contracts/stakingPool.algo.ts:1026","pc":[4084,4085]},{"teal":4329,"source":"contracts/stakingPool.algo.ts:1026","pc":[4086]},{"teal":4330,"source":"contracts/stakingPool.algo.ts:1026","pc":[4087,4088,4089]},{"teal":4335,"source":"contracts/stakingPool.algo.ts:1028","pc":[4090,4091]},{"teal":4336,"source":"contracts/stakingPool.algo.ts:1028","pc":[4092,4093]},{"teal":4337,"source":"contracts/stakingPool.algo.ts:1028","pc":[4094]},{"teal":4341,"source":"contracts/stakingPool.algo.ts:1029","pc":[4095]},{"teal":4347,"source":"contracts/stakingPool.algo.ts:1033","pc":[4096,4097]},{"teal":4348,"source":"contracts/stakingPool.algo.ts:1033","pc":[4098]},{"teal":4349,"source":"contracts/stakingPool.algo.ts:1033","pc":[4099]},{"teal":4350,"source":"contracts/stakingPool.algo.ts:1033","pc":[4100,4101]},{"teal":4351,"source":"contracts/stakingPool.algo.ts:1033","pc":[4102,4103]},{"teal":4352,"source":"contracts/stakingPool.algo.ts:1033","pc":[4104,4105]},{"teal":4353,"source":"contracts/stakingPool.algo.ts:1033","pc":[4106]},{"teal":4354,"source":"contracts/stakingPool.algo.ts:1033","pc":[4107,4108]},{"teal":4355,"source":"contracts/stakingPool.algo.ts:1033","pc":[4109]},{"teal":4356,"source":"contracts/stakingPool.algo.ts:1032","pc":[4110,4111]},{"teal":4361,"source":"contracts/stakingPool.algo.ts:1034","pc":[4112,4113]},{"teal":4362,"source":"contracts/stakingPool.algo.ts:1034","pc":[4114]},{"teal":4363,"source":"contracts/stakingPool.algo.ts:1034","pc":[4115]},{"teal":4364,"source":"contracts/stakingPool.algo.ts:1034","pc":[4116,4117,4118]},{"teal":4369,"source":"contracts/stakingPool.algo.ts:1036","pc":[4119,4120]},{"teal":4370,"source":"contracts/stakingPool.algo.ts:1036","pc":[4121,4122]},{"teal":4371,"source":"contracts/stakingPool.algo.ts:1036","pc":[4123]},{"teal":4375,"source":"contracts/stakingPool.algo.ts:1037","pc":[4124]},{"teal":4380,"source":"contracts/stakingPool.algo.ts:1042","pc":[4125,4126]},{"teal":4381,"source":"contracts/stakingPool.algo.ts:1042","pc":[4127,4128,4129,4130]},{"teal":4382,"source":"contracts/stakingPool.algo.ts:1042","pc":[4131,4132]},{"teal":4383,"source":"contracts/stakingPool.algo.ts:1042","pc":[4133]},{"teal":4384,"source":"contracts/stakingPool.algo.ts:1042","pc":[4134]},{"teal":4385,"source":"contracts/stakingPool.algo.ts:1021","pc":[4135]},{"teal":4388,"source":"contracts/stakingPool.algo.ts:37","pc":[4136,4137,4138,4139,4140,4141]},{"teal":4389,"source":"contracts/stakingPool.algo.ts:37","pc":[4142,4143,4144]},{"teal":4390,"source":"contracts/stakingPool.algo.ts:37","pc":[4145,4146,4147,4148]},{"teal":4393,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4149]},{"teal":4396,"source":"contracts/stakingPool.algo.ts:37","pc":[4150,4151,4152,4153,4154,4155]},{"teal":4397,"source":"contracts/stakingPool.algo.ts:37","pc":[4156,4157,4158,4159,4160,4161]},{"teal":4398,"source":"contracts/stakingPool.algo.ts:37","pc":[4162,4163,4164,4165,4166,4167]},{"teal":4399,"source":"contracts/stakingPool.algo.ts:37","pc":[4168,4169,4170,4171,4172,4173]},{"teal":4400,"source":"contracts/stakingPool.algo.ts:37","pc":[4174,4175,4176,4177,4178,4179]},{"teal":4401,"source":"contracts/stakingPool.algo.ts:37","pc":[4180,4181,4182,4183,4184,4185]},{"teal":4402,"source":"contracts/stakingPool.algo.ts:37","pc":[4186,4187,4188,4189,4190,4191]},{"teal":4403,"source":"contracts/stakingPool.algo.ts:37","pc":[4192,4193,4194,4195,4196,4197]},{"teal":4404,"source":"contracts/stakingPool.algo.ts:37","pc":[4198,4199,4200,4201,4202,4203]},{"teal":4405,"source":"contracts/stakingPool.algo.ts:37","pc":[4204,4205,4206,4207,4208,4209]},{"teal":4406,"source":"contracts/stakingPool.algo.ts:37","pc":[4210,4211,4212,4213,4214,4215]},{"teal":4407,"source":"contracts/stakingPool.algo.ts:37","pc":[4216,4217,4218,4219,4220,4221]},{"teal":4408,"source":"contracts/stakingPool.algo.ts:37","pc":[4222,4223]},{"teal":4409,"source":"contracts/stakingPool.algo.ts:37","pc":[4224,4225,4226]},{"teal":4410,"source":"contracts/stakingPool.algo.ts:37","pc":[4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254]},{"teal":4413,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4255]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract /** * A state record containing binary data @@ -62,23 +63,14 @@ export type Expand = T extends (...args: infer A) => infer R : never -// Aliases for non-encoded ABI values - -type uint64 = bigint; -type pay = AppMethodCallTransactionArgument; -type address = string; -type byte = number; -type AVMBytes = Uint8Array; -type uint128 = bigint; - // Type definitions for ARC-56 structs export type StakedInfo = { - account: address, - balance: uint64, - totalRewarded: uint64, - rewardTokenBalance: uint64, - entryRound: uint64 + account: string, + balance: bigint, + totalRewarded: bigint, + rewardTokenBalance: bigint, + entryRound: bigint } @@ -90,8 +82,8 @@ export function StakedInfoFromTuple(abiTuple: [string, bigint, bigint, bigint, b } export type PoolTokenPayoutRatio = { - poolPctOfWhole: uint64[], - updatedForPayout: uint64 + poolPctOfWhole: [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint], + updatedForPayout: bigint } @@ -103,9 +95,9 @@ export function PoolTokenPayoutRatioFromTuple(abiTuple: [[bigint, bigint, bigint } export type ValidatorPoolKey = { - id: uint64, - poolId: uint64, - poolAppId: uint64 + id: bigint, + poolId: bigint, + poolAppId: bigint } @@ -120,7 +112,7 @@ export function ValidatorPoolKeyFromTuple(abiTuple: [bigint, bigint, bigint]) { * Deploy-time template variables */ export type TemplateVariables = { - nfdRegistryAppId: uint64, + nfdRegistryAppId: bigint, } /** @@ -1597,6 +1589,16 @@ export class StakingPoolClient { } + /** + * Clone this app client with different params + * + * @param params The params to use for the the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value. + * @returns A new app client with the altered params + */ + public clone(params: CloneAppClientParams) { + return new StakingPoolClient(this.appClient.clone(params)) + } + /** * Makes a readonly (simulated) call to the StakingPool smart contract using the `getStakerInfo(address)(address,uint64,uint64,uint64,uint64)` ABI method. * diff --git a/ui/src/contracts/ValidatorRegistryClient.ts b/ui/src/contracts/ValidatorRegistryClient.ts index 33d11768..823fe406 100644 --- a/ui/src/contracts/ValidatorRegistryClient.ts +++ b/ui/src/contracts/ValidatorRegistryClient.ts @@ -16,6 +16,7 @@ import { AppClientCompilationParams, ResolveAppClientByCreatorAndName, ResolveAppClientByNetwork, + CloneAppClientParams, } from '@algorandfoundation/algokit-utils/types/app-client' import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory' import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer' @@ -23,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":[{"teal":1,"source":50,"pc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170]},{"teal":9,"source":50,"pc":[171,172]},{"teal":10,"source":50,"pc":[173]},{"teal":11,"source":50,"pc":[174,175]},{"teal":18,"source":50,"pc":[176,177]},{"teal":19,"source":50,"pc":[178]},{"teal":20,"source":50,"pc":[179,180]},{"teal":21,"source":50,"pc":[181]},{"teal":22,"source":50,"pc":[182,183]},{"teal":23,"source":50,"pc":[184]},{"teal":24,"source":50,"pc":[185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210]},{"teal":28,"source":50,"errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[211]},{"teal":33,"source":81,"pc":[212,213,214]},{"teal":34,"source":81,"pc":[215]},{"teal":35,"source":81,"pc":[216]},{"teal":39,"source":81,"pc":[217,218,219]},{"teal":43,"source":82,"pc":[220,221]},{"teal":44,"source":82,"pc":[222]},{"teal":45,"source":82,"pc":[223,224]},{"teal":46,"source":82,"pc":[225]},{"teal":47,"source":82,"pc":[226,227]},{"teal":48,"source":82,"pc":[228]},{"teal":49,"source":82,"pc":[229]},{"teal":53,"source":83,"pc":[230,231]},{"teal":54,"source":83,"pc":[232]},{"teal":55,"source":83,"pc":[233]},{"teal":59,"source":84,"pc":[234,235]},{"teal":60,"source":84,"pc":[236]},{"teal":61,"source":84,"pc":[237]},{"teal":65,"source":85,"pc":[238,239]},{"teal":66,"source":85,"pc":[240]},{"teal":67,"source":85,"pc":[241]},{"teal":68,"source":81,"pc":[242]},{"teal":73,"source":88,"pc":[243,244,245]},{"teal":74,"source":88,"pc":[246]},{"teal":77,"source":88,"pc":[247,248,249]},{"teal":78,"source":88,"pc":[250]},{"teal":79,"source":88,"pc":[251]},{"teal":83,"source":88,"pc":[252,253,254]},{"teal":87,"source":90,"pc":[255,256]},{"teal":88,"source":90,"pc":[257,258]},{"teal":89,"source":90,"pc":[259]},{"teal":90,"source":90,"pc":[260]},{"teal":91,"source":88,"pc":[261]},{"teal":96,"source":93,"pc":[262,263,264]},{"teal":97,"source":93,"pc":[265,266,267]},{"teal":100,"source":93,"pc":[268,269,270]},{"teal":101,"source":93,"pc":[271]},{"teal":104,"source":93,"pc":[272,273,274]},{"teal":105,"source":93,"pc":[275]},{"teal":106,"source":93,"pc":[276]},{"teal":110,"source":93,"pc":[277,278,279]},{"teal":114,"source":94,"pc":[280,281]},{"teal":115,"source":94,"pc":[282]},{"teal":116,"source":94,"pc":[283]},{"teal":117,"source":94,"pc":[284]},{"teal":118,"source":94,"pc":[285]},{"teal":119,"source":94,"pc":[286]},{"teal":123,"source":95,"pc":[287,288]},{"teal":124,"source":95,"pc":[289,290]},{"teal":125,"source":95,"pc":[291,292]},{"teal":126,"source":95,"pc":[293]},{"teal":127,"source":93,"pc":[294]},{"teal":132,"source":98,"pc":[295,296,297]},{"teal":133,"source":98,"pc":[298]},{"teal":134,"source":98,"pc":[299]},{"teal":138,"source":98,"pc":[300,301,302]},{"teal":142,"source":99,"pc":[303,304]},{"teal":143,"source":99,"pc":[305]},{"teal":144,"source":99,"pc":[306,307]},{"teal":145,"source":99,"pc":[308]},{"teal":146,"source":99,"pc":[309,310]},{"teal":147,"source":99,"pc":[311]},{"teal":148,"source":99,"pc":[312]},{"teal":149,"source":98,"pc":[313]},{"teal":154,"source":105,"pc":[314,315,316]},{"teal":155,"source":105,"pc":[317]},{"teal":156,"source":105,"pc":[318]},{"teal":162,"source":105,"pc":[319,320,321]},{"teal":163,"source":105,"pc":[322]},{"teal":168,"source":116,"pc":[323]},{"teal":171,"source":116,"pc":[324,325,326]},{"teal":172,"source":116,"pc":[327]},{"teal":173,"source":116,"pc":[328]},{"teal":174,"source":116,"pc":[329]},{"teal":175,"source":116,"pc":[330]},{"teal":187,"source":116,"pc":[331,332,333]},{"teal":212,"source":121,"pc":[334,335,336]},{"teal":213,"source":121,"pc":[337,338,339]},{"teal":214,"source":121,"pc":[340]},{"teal":215,"source":131,"pc":[341,342]},{"teal":216,"source":130,"pc":[343,344]},{"teal":217,"source":129,"pc":[345]},{"teal":218,"source":129,"pc":[346,347]},{"teal":219,"source":126,"pc":[348,349]},{"teal":220,"source":123,"pc":[350]},{"teal":221,"source":122,"pc":[351,352,353]},{"teal":222,"source":122,"pc":[354]},{"teal":223,"source":122,"pc":[355]},{"teal":224,"source":134,"pc":[356,357]},{"teal":225,"source":135,"pc":[358,359,360]},{"teal":226,"source":135,"pc":[361,362,363]},{"teal":227,"source":134,"pc":[364]},{"teal":228,"source":134,"pc":[365]},{"teal":229,"source":134,"pc":[366]},{"teal":230,"source":139,"pc":[367,368,369]},{"teal":231,"source":138,"pc":[370,371,372]},{"teal":232,"source":138,"pc":[373]},{"teal":233,"source":138,"pc":[374]},{"teal":234,"source":116,"pc":[375]},{"teal":239,"source":147,"pc":[376]},{"teal":242,"source":147,"pc":[377,378,379]},{"teal":243,"source":147,"pc":[380]},{"teal":244,"source":147,"pc":[381]},{"teal":245,"source":147,"pc":[382]},{"teal":246,"source":147,"pc":[383]},{"teal":252,"source":147,"pc":[384,385,386]},{"teal":268,"source":154,"pc":[387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428]},{"teal":269,"source":155,"pc":[429,430,431]},{"teal":270,"source":155,"pc":[432]},{"teal":271,"source":155,"pc":[433]},{"teal":272,"source":156,"pc":[434,435,436]},{"teal":273,"source":156,"pc":[437]},{"teal":274,"source":156,"pc":[438]},{"teal":275,"source":157,"pc":[439,440,441]},{"teal":276,"source":157,"pc":[442]},{"teal":277,"source":157,"pc":[443]},{"teal":278,"source":158,"pc":[444,445,446,447,448,449,450,451,452,453]},{"teal":279,"source":158,"pc":[454]},{"teal":280,"source":159,"pc":[455,456,457,458,459,460,461,462,463,464]},{"teal":281,"source":159,"pc":[465]},{"teal":282,"source":160,"pc":[466,467,468,469,470,471,472,473,474,475]},{"teal":283,"source":160,"pc":[476]},{"teal":284,"source":147,"pc":[477]},{"teal":289,"source":167,"pc":[478]},{"teal":292,"source":167,"pc":[479,480,481]},{"teal":293,"source":167,"pc":[482]},{"teal":294,"source":167,"pc":[483]},{"teal":295,"source":167,"pc":[484]},{"teal":296,"source":167,"pc":[485]},{"teal":297,"source":167,"pc":[486]},{"teal":303,"source":167,"pc":[487,488,489]},{"teal":307,"source":169,"pc":[490,491]},{"teal":308,"source":169,"pc":[492]},{"teal":309,"source":167,"pc":[493]},{"teal":314,"source":172,"pc":[494]},{"teal":317,"source":173,"pc":[495,496,497]},{"teal":318,"source":173,"pc":[498]},{"teal":321,"source":172,"pc":[499,500,501]},{"teal":322,"source":172,"pc":[502]},{"teal":323,"source":172,"pc":[503]},{"teal":324,"source":172,"pc":[504]},{"teal":325,"source":172,"pc":[505]},{"teal":329,"source":172,"pc":[506,507,508]},{"teal":333,"source":174,"pc":[509]},{"teal":334,"source":174,"pc":[510,511]},{"teal":335,"source":174,"pc":[512]},{"teal":336,"source":174,"pc":[513,514]},{"teal":337,"source":174,"pc":[515]},{"teal":338,"source":174,"pc":[516]},{"teal":339,"source":174,"pc":[517,518]},{"teal":340,"source":174,"pc":[519]},{"teal":341,"source":172,"pc":[520]},{"teal":346,"source":177,"pc":[521]},{"teal":349,"source":178,"pc":[522,523,524]},{"teal":350,"source":178,"pc":[525]},{"teal":353,"source":177,"pc":[526,527,528]},{"teal":354,"source":177,"pc":[529]},{"teal":355,"source":177,"pc":[530]},{"teal":356,"source":177,"pc":[531]},{"teal":357,"source":177,"pc":[532]},{"teal":361,"source":177,"pc":[533,534,535]},{"teal":365,"source":179,"pc":[536,537]},{"teal":366,"source":179,"pc":[538,539]},{"teal":367,"source":179,"pc":[540]},{"teal":368,"source":179,"pc":[541,542]},{"teal":369,"source":179,"pc":[543]},{"teal":370,"source":179,"pc":[544]},{"teal":371,"source":179,"pc":[545,546]},{"teal":372,"source":179,"pc":[547]},{"teal":373,"source":177,"pc":[548]},{"teal":378,"source":182,"pc":[549]},{"teal":381,"source":183,"pc":[550,551,552]},{"teal":382,"source":183,"pc":[553]},{"teal":385,"source":182,"pc":[554,555,556]},{"teal":386,"source":182,"pc":[557]},{"teal":387,"source":182,"pc":[558]},{"teal":388,"source":182,"pc":[559]},{"teal":389,"source":182,"pc":[560]},{"teal":393,"source":182,"pc":[561,562,563]},{"teal":400,"source":185,"pc":[564]},{"teal":401,"source":185,"pc":[565,566]},{"teal":402,"source":185,"pc":[567]},{"teal":403,"source":185,"pc":[568,569]},{"teal":404,"source":185,"pc":[570]},{"teal":405,"source":185,"pc":[571]},{"teal":406,"source":185,"pc":[572,573]},{"teal":407,"source":185,"pc":[574]},{"teal":408,"source":186,"pc":[575,576]},{"teal":409,"source":186,"pc":[577,578]},{"teal":410,"source":186,"pc":[579]},{"teal":411,"source":186,"pc":[580,581]},{"teal":412,"source":186,"pc":[582]},{"teal":413,"source":186,"pc":[583]},{"teal":414,"source":186,"pc":[584,585]},{"teal":415,"source":186,"pc":[586]},{"teal":416,"source":186,"pc":[587]},{"teal":417,"source":182,"pc":[588]},{"teal":422,"source":196,"pc":[589]},{"teal":425,"source":197,"pc":[590,591,592]},{"teal":426,"source":197,"pc":[593]},{"teal":429,"source":196,"pc":[594,595,596]},{"teal":430,"source":196,"pc":[597]},{"teal":431,"source":196,"pc":[598]},{"teal":432,"source":196,"pc":[599,600]},{"teal":433,"source":196,"pc":[601]},{"teal":434,"source":196,"pc":[602]},{"teal":435,"source":196,"pc":[603,604,605]},{"teal":436,"source":196,"pc":[606]},{"teal":437,"source":196,"pc":[607]},{"teal":438,"source":196,"pc":[608]},{"teal":439,"source":196,"pc":[609]},{"teal":440,"source":196,"pc":[610]},{"teal":441,"source":196,"pc":[611]},{"teal":450,"source":196,"pc":[612,613,614]},{"teal":453,"source":196,"pc":[615]},{"teal":454,"source":196,"pc":[616,617]},{"teal":458,"source":198,"pc":[618]},{"teal":459,"source":198,"pc":[619,620]},{"teal":463,"source":199,"pc":[621,622]},{"teal":464,"source":199,"pc":[623,624]},{"teal":465,"source":199,"pc":[625]},{"teal":466,"source":199,"pc":[626,627]},{"teal":467,"source":199,"pc":[628]},{"teal":468,"source":199,"pc":[629]},{"teal":469,"source":199,"pc":[630,631]},{"teal":470,"source":199,"pc":[632]},{"teal":471,"source":199,"pc":[633,634]},{"teal":475,"source":200,"pc":[635]},{"teal":476,"source":200,"pc":[636,637]},{"teal":481,"source":200,"pc":[638,639]},{"teal":482,"source":200,"pc":[640]},{"teal":483,"source":200,"pc":[641]},{"teal":484,"source":200,"pc":[642,643,644]},{"teal":489,"source":201,"pc":[645,646]},{"teal":490,"source":201,"pc":[647,648]},{"teal":491,"source":201,"pc":[649,650]},{"teal":492,"source":201,"pc":[651]},{"teal":493,"source":201,"pc":[652]},{"teal":494,"source":201,"pc":[653]},{"teal":495,"source":201,"pc":[654]},{"teal":496,"source":201,"pc":[655]},{"teal":497,"source":201,"pc":[656]},{"teal":498,"source":201,"pc":[657]},{"teal":499,"source":201,"pc":[658]},{"teal":500,"source":201,"pc":[659,660,661]},{"teal":503,"source":203,"pc":[662,663,664]},{"teal":508,"source":205,"pc":[665,666]},{"teal":509,"source":205,"pc":[667,668]},{"teal":510,"source":205,"pc":[669,670]},{"teal":511,"source":205,"pc":[671,672]},{"teal":512,"source":205,"pc":[673]},{"teal":513,"source":205,"pc":[674,675]},{"teal":514,"source":205,"pc":[676]},{"teal":515,"source":205,"pc":[677]},{"teal":516,"source":205,"pc":[678,679]},{"teal":521,"source":200,"pc":[680,681]},{"teal":522,"source":200,"pc":[682]},{"teal":523,"source":200,"pc":[683]},{"teal":524,"source":200,"pc":[684,685]},{"teal":525,"source":200,"pc":[686,687,688]},{"teal":530,"source":207,"pc":[689,690]},{"teal":533,"source":196,"pc":[691,692]},{"teal":536,"source":196,"pc":[693,694]},{"teal":537,"source":196,"pc":[695]},{"teal":542,"source":215,"pc":[696]},{"teal":545,"source":216,"pc":[697,698,699]},{"teal":546,"source":216,"pc":[700]},{"teal":549,"source":216,"pc":[701,702,703]},{"teal":550,"source":216,"pc":[704]},{"teal":553,"source":215,"pc":[705,706,707]},{"teal":554,"source":215,"pc":[708]},{"teal":555,"source":215,"pc":[709]},{"teal":556,"source":215,"pc":[710]},{"teal":557,"source":215,"pc":[711]},{"teal":558,"source":215,"pc":[712]},{"teal":566,"source":215,"pc":[713,714,715]},{"teal":573,"source":218,"pc":[716,717]},{"teal":574,"source":218,"pc":[718]},{"teal":575,"source":218,"pc":[719]},{"teal":576,"source":218,"pc":[720]},{"teal":577,"source":218,"pc":[721,722,723]},{"teal":578,"source":218,"pc":[724,725]},{"teal":579,"source":218,"pc":[726]},{"teal":580,"source":218,"pc":[727]},{"teal":581,"source":218,"pc":[728]},{"teal":585,"source":217,"errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[729]},{"teal":589,"source":221,"pc":[730,731]},{"teal":590,"source":221,"pc":[732,733]},{"teal":591,"source":221,"pc":[734]},{"teal":592,"source":221,"pc":[735]},{"teal":593,"source":221,"pc":[736,737]},{"teal":594,"source":221,"pc":[738]},{"teal":595,"source":221,"pc":[739]},{"teal":596,"source":221,"pc":[740]},{"teal":597,"source":221,"pc":[741]},{"teal":598,"source":221,"pc":[742]},{"teal":599,"source":221,"pc":[743]},{"teal":600,"source":221,"pc":[744,745]},{"teal":601,"source":221,"pc":[746]},{"teal":602,"source":221,"pc":[747]},{"teal":603,"source":221,"pc":[748,749]},{"teal":604,"source":221,"pc":[750]},{"teal":605,"source":221,"pc":[751]},{"teal":606,"source":215,"pc":[752]},{"teal":611,"source":224,"pc":[753]},{"teal":614,"source":225,"pc":[754,755,756]},{"teal":615,"source":225,"pc":[757]},{"teal":616,"source":225,"pc":[758]},{"teal":617,"source":225,"pc":[759]},{"teal":618,"source":225,"pc":[760]},{"teal":621,"source":225,"errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[761]},{"teal":624,"source":224,"pc":[762,763,764]},{"teal":625,"source":224,"pc":[765]},{"teal":626,"source":224,"pc":[766]},{"teal":627,"source":224,"pc":[767]},{"teal":628,"source":224,"pc":[768]},{"teal":632,"source":224,"pc":[769,770,771]},{"teal":636,"source":226,"pc":[772,773]},{"teal":637,"source":226,"pc":[774,775]},{"teal":638,"source":226,"pc":[776,777,778]},{"teal":639,"source":226,"pc":[779]},{"teal":640,"source":226,"pc":[780]},{"teal":641,"source":226,"pc":[781]},{"teal":642,"source":226,"pc":[782,783]},{"teal":643,"source":226,"pc":[784]},{"teal":644,"source":226,"pc":[785]},{"teal":645,"source":226,"pc":[786,787]},{"teal":646,"source":226,"pc":[788]},{"teal":647,"source":226,"pc":[789,790]},{"teal":648,"source":226,"pc":[791,792,793]},{"teal":649,"source":226,"pc":[794]},{"teal":650,"source":226,"pc":[795]},{"teal":651,"source":226,"pc":[796]},{"teal":652,"source":226,"pc":[797,798]},{"teal":653,"source":226,"pc":[799]},{"teal":654,"source":224,"pc":[800]},{"teal":659,"source":236,"pc":[801]},{"teal":662,"source":237,"pc":[802,803,804]},{"teal":663,"source":237,"pc":[805]},{"teal":666,"source":236,"pc":[806,807,808]},{"teal":667,"source":236,"pc":[809]},{"teal":668,"source":236,"pc":[810]},{"teal":669,"source":236,"pc":[811]},{"teal":670,"source":236,"pc":[812]},{"teal":671,"source":236,"pc":[813]},{"teal":681,"source":236,"pc":[814,815,816]},{"teal":684,"source":236,"pc":[817]},{"teal":685,"source":236,"pc":[818,819]},{"teal":689,"source":238,"pc":[820,821]},{"teal":690,"source":238,"pc":[822,823]},{"teal":691,"source":238,"pc":[824]},{"teal":692,"source":238,"pc":[825,826]},{"teal":693,"source":238,"pc":[827]},{"teal":694,"source":238,"pc":[828]},{"teal":695,"source":238,"pc":[829,830]},{"teal":696,"source":238,"pc":[831]},{"teal":697,"source":238,"pc":[832]},{"teal":698,"source":238,"pc":[833,834]},{"teal":702,"source":239,"pc":[835,836,837]},{"teal":703,"source":239,"pc":[838,839]},{"teal":704,"source":239,"pc":[840]},{"teal":705,"source":239,"pc":[841,842]},{"teal":709,"source":240,"pc":[843,844,845]},{"teal":710,"source":240,"pc":[846]},{"teal":711,"source":240,"pc":[847]},{"teal":712,"source":240,"pc":[848,849]},{"teal":713,"source":240,"pc":[850]},{"teal":714,"source":240,"pc":[851]},{"teal":715,"source":240,"pc":[852,853]},{"teal":716,"source":240,"pc":[854]},{"teal":717,"source":240,"pc":[855]},{"teal":718,"source":240,"pc":[856,857]},{"teal":723,"source":241,"pc":[858,859]},{"teal":724,"source":241,"pc":[860]},{"teal":725,"source":241,"pc":[861]},{"teal":726,"source":241,"pc":[862,863,864]},{"teal":731,"source":242,"pc":[865,866,867]},{"teal":732,"source":242,"pc":[868,869]},{"teal":738,"source":244,"pc":[870,871]},{"teal":739,"source":244,"pc":[872,873]},{"teal":740,"source":244,"pc":[874]},{"teal":741,"source":244,"pc":[875,876,877]},{"teal":746,"source":245,"pc":[878,879]},{"teal":747,"source":245,"pc":[880,881]},{"teal":752,"source":247,"pc":[882,883]},{"teal":755,"source":236,"pc":[884,885]},{"teal":758,"source":236,"pc":[886,887]},{"teal":759,"source":236,"pc":[888]},{"teal":764,"source":254,"pc":[889]},{"teal":767,"source":255,"pc":[890,891,892]},{"teal":768,"source":255,"pc":[893]},{"teal":769,"source":255,"pc":[894]},{"teal":770,"source":255,"pc":[895,896]},{"teal":771,"source":255,"pc":[897]},{"teal":774,"source":255,"errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[898]},{"teal":777,"source":254,"pc":[899,900,901]},{"teal":778,"source":254,"pc":[902,903]},{"teal":779,"source":254,"pc":[904]},{"teal":780,"source":254,"pc":[905,906]},{"teal":781,"source":254,"pc":[907]},{"teal":782,"source":254,"pc":[908]},{"teal":783,"source":254,"pc":[909]},{"teal":784,"source":254,"pc":[910]},{"teal":785,"source":254,"pc":[911]},{"teal":792,"source":254,"pc":[912,913,914]},{"teal":796,"source":256,"pc":[915]},{"teal":797,"source":256,"pc":[916,917]},{"teal":798,"source":256,"pc":[918]},{"teal":799,"source":256,"pc":[919]},{"teal":800,"source":256,"pc":[920]},{"teal":801,"source":256,"pc":[921]},{"teal":802,"source":256,"pc":[922]},{"teal":803,"source":254,"pc":[923]},{"teal":808,"source":265,"pc":[924]},{"teal":811,"source":266,"pc":[925,926,927]},{"teal":812,"source":266,"pc":[928]},{"teal":813,"source":266,"pc":[929]},{"teal":814,"source":266,"pc":[930,931]},{"teal":815,"source":266,"pc":[932]},{"teal":818,"source":266,"errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[933]},{"teal":821,"source":265,"pc":[934,935,936]},{"teal":822,"source":265,"pc":[937]},{"teal":823,"source":265,"pc":[938]},{"teal":824,"source":265,"pc":[939]},{"teal":825,"source":265,"pc":[940]},{"teal":826,"source":265,"pc":[941]},{"teal":827,"source":265,"pc":[942,943,944]},{"teal":828,"source":265,"pc":[945]},{"teal":829,"source":265,"pc":[946]},{"teal":830,"source":265,"pc":[947]},{"teal":831,"source":265,"pc":[948]},{"teal":832,"source":265,"pc":[949]},{"teal":833,"source":265,"pc":[950]},{"teal":842,"source":265,"pc":[951,952,953]},{"teal":845,"source":265,"pc":[954]},{"teal":846,"source":265,"pc":[955,956]},{"teal":851,"source":267,"pc":[957]},{"teal":852,"source":267,"pc":[958,959]},{"teal":853,"source":267,"pc":[960]},{"teal":854,"source":267,"pc":[961]},{"teal":855,"source":267,"pc":[962]},{"teal":856,"source":267,"pc":[963]},{"teal":857,"source":267,"pc":[964]},{"teal":858,"source":267,"pc":[965,966,967]},{"teal":863,"source":268,"pc":[968]},{"teal":864,"source":268,"pc":[969,970,971]},{"teal":869,"source":270,"pc":[972]},{"teal":870,"source":270,"pc":[973,974]},{"teal":874,"source":271,"pc":[975]},{"teal":875,"source":271,"pc":[976,977]},{"teal":876,"source":271,"pc":[978]},{"teal":877,"source":271,"pc":[979]},{"teal":880,"source":271,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[980]},{"teal":881,"source":271,"pc":[981,982]},{"teal":885,"source":272,"pc":[983]},{"teal":886,"source":272,"pc":[984,985]},{"teal":891,"source":272,"pc":[986,987]},{"teal":892,"source":272,"pc":[988,989]},{"teal":893,"source":272,"pc":[990]},{"teal":894,"source":272,"pc":[991,992,993]},{"teal":899,"source":273,"pc":[994,995]},{"teal":900,"source":273,"pc":[996,997]},{"teal":901,"source":273,"pc":[998]},{"teal":902,"source":273,"pc":[999]},{"teal":903,"source":273,"pc":[1000]},{"teal":904,"source":273,"pc":[1001]},{"teal":905,"source":273,"pc":[1002]},{"teal":906,"source":273,"pc":[1003]},{"teal":907,"source":273,"pc":[1004]},{"teal":908,"source":273,"pc":[1005]},{"teal":909,"source":273,"pc":[1006]},{"teal":910,"source":273,"pc":[1007,1008,1009]},{"teal":915,"source":274,"pc":[1010,1011]},{"teal":916,"source":274,"pc":[1012,1013]},{"teal":917,"source":274,"pc":[1014,1015]},{"teal":918,"source":274,"pc":[1016]},{"teal":919,"source":274,"pc":[1017]},{"teal":920,"source":274,"pc":[1018]},{"teal":921,"source":274,"pc":[1019]},{"teal":922,"source":274,"pc":[1020]},{"teal":923,"source":274,"pc":[1021,1022]},{"teal":930,"source":272,"pc":[1023,1024]},{"teal":931,"source":272,"pc":[1025]},{"teal":932,"source":272,"pc":[1026]},{"teal":933,"source":272,"pc":[1027,1028]},{"teal":934,"source":272,"pc":[1029,1030,1031]},{"teal":939,"source":277,"pc":[1032,1033]},{"teal":943,"source":265,"pc":[1034,1035]},{"teal":946,"source":265,"pc":[1036,1037]},{"teal":947,"source":265,"pc":[1038]},{"teal":952,"source":287,"pc":[1039]},{"teal":955,"source":288,"pc":[1040,1041,1042]},{"teal":956,"source":288,"pc":[1043]},{"teal":959,"source":287,"pc":[1044,1045,1046]},{"teal":960,"source":287,"pc":[1047]},{"teal":961,"source":287,"pc":[1048]},{"teal":962,"source":287,"pc":[1049]},{"teal":963,"source":287,"pc":[1050]},{"teal":973,"source":287,"pc":[1051,1052,1053]},{"teal":977,"source":289,"pc":[1054,1055]},{"teal":978,"source":289,"pc":[1056,1057]},{"teal":979,"source":289,"pc":[1058]},{"teal":980,"source":289,"pc":[1059,1060]},{"teal":981,"source":289,"pc":[1061]},{"teal":982,"source":289,"pc":[1062]},{"teal":983,"source":289,"pc":[1063,1064]},{"teal":984,"source":289,"pc":[1065]},{"teal":985,"source":287,"pc":[1066]},{"teal":990,"source":292,"pc":[1067]},{"teal":993,"source":293,"pc":[1068,1069,1070]},{"teal":994,"source":293,"pc":[1071]},{"teal":997,"source":292,"pc":[1072,1073,1074]},{"teal":998,"source":292,"pc":[1075]},{"teal":999,"source":292,"pc":[1076]},{"teal":1000,"source":292,"pc":[1077]},{"teal":1001,"source":292,"pc":[1078]},{"teal":1005,"source":292,"pc":[1079,1080,1081]},{"teal":1009,"source":294,"pc":[1082]},{"teal":1010,"source":294,"pc":[1083,1084]},{"teal":1011,"source":294,"pc":[1085]},{"teal":1012,"source":294,"pc":[1086]},{"teal":1013,"source":294,"pc":[1087]},{"teal":1014,"source":294,"pc":[1088]},{"teal":1015,"source":294,"pc":[1089]},{"teal":1018,"source":294,"errorMessage":"the specified validator id doesn't exist","pc":[1090]},{"teal":1022,"source":296,"pc":[1091,1092]},{"teal":1023,"source":296,"pc":[1093,1094]},{"teal":1024,"source":296,"pc":[1095]},{"teal":1025,"source":296,"pc":[1096,1097]},{"teal":1026,"source":296,"pc":[1098]},{"teal":1027,"source":296,"pc":[1099]},{"teal":1028,"source":296,"pc":[1100,1101]},{"teal":1029,"source":296,"pc":[1102]},{"teal":1030,"source":292,"pc":[1103]},{"teal":1035,"source":299,"pc":[1104]},{"teal":1038,"source":299,"pc":[1105,1106,1107]},{"teal":1039,"source":299,"pc":[1108]},{"teal":1040,"source":299,"pc":[1109]},{"teal":1041,"source":299,"pc":[1110]},{"teal":1042,"source":299,"pc":[1111]},{"teal":1043,"source":299,"pc":[1112]},{"teal":1047,"source":299,"pc":[1113,1114,1115]},{"teal":1051,"source":301,"pc":[1116,1117]},{"teal":1052,"source":299,"pc":[1118]},{"teal":1057,"source":312,"pc":[1119]},{"teal":1060,"source":312,"pc":[1120,1121,1122]},{"teal":1061,"source":312,"pc":[1123]},{"teal":1062,"source":312,"pc":[1124]},{"teal":1063,"source":312,"pc":[1125,1126]},{"teal":1064,"source":312,"pc":[1127]},{"teal":1067,"source":312,"errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[1128]},{"teal":1070,"source":312,"pc":[1129,1130,1131]},{"teal":1071,"source":312,"pc":[1132,1133,1134]},{"teal":1074,"source":312,"pc":[1135,1136]},{"teal":1075,"source":312,"pc":[1137]},{"teal":1076,"source":312,"pc":[1138]},{"teal":1077,"source":312,"pc":[1139]},{"teal":1078,"source":312,"pc":[1140,1141]},{"teal":1079,"source":312,"pc":[1142]},{"teal":1080,"source":312,"pc":[1143]},{"teal":1083,"source":312,"errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[1144]},{"teal":1086,"source":312,"pc":[1145,1146,1147]},{"teal":1087,"source":312,"pc":[1148]},{"teal":1088,"source":312,"pc":[1149]},{"teal":1089,"source":312,"pc":[1150]},{"teal":1090,"source":312,"pc":[1151]},{"teal":1091,"source":312,"pc":[1152]},{"teal":1103,"source":312,"pc":[1153,1154,1155]},{"teal":1106,"source":312,"pc":[1156]},{"teal":1110,"source":313,"pc":[1157,1158]},{"teal":1111,"source":313,"pc":[1159,1160,1161]},{"teal":1116,"source":315,"pc":[1162,1163]},{"teal":1117,"source":315,"pc":[1164,1165]},{"teal":1118,"source":315,"pc":[1166,1167]},{"teal":1119,"source":315,"pc":[1168]},{"teal":1122,"source":315,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1169]},{"teal":1125,"source":315,"pc":[1170,1171]},{"teal":1126,"source":315,"pc":[1172,1173]},{"teal":1127,"source":315,"pc":[1174,1175,1176]},{"teal":1128,"source":315,"pc":[1177,1178,1179]},{"teal":1129,"source":315,"pc":[1180]},{"teal":1130,"source":315,"pc":[1181]},{"teal":1133,"source":315,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1182]},{"teal":1137,"source":317,"pc":[1183,1184]},{"teal":1138,"source":317,"pc":[1185,1186]},{"teal":1139,"source":317,"pc":[1187,1188,1189,1190,1191]},{"teal":1140,"source":317,"pc":[1192]},{"teal":1143,"source":317,"errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1193]},{"teal":1147,"source":320,"pc":[1194,1195]},{"teal":1148,"source":320,"pc":[1196]},{"teal":1149,"source":320,"pc":[1197]},{"teal":1150,"source":320,"pc":[1198]},{"teal":1151,"source":320,"pc":[1199,1200]},{"teal":1155,"source":321,"pc":[1201,1202]},{"teal":1156,"source":321,"pc":[1203,1204]},{"teal":1157,"source":321,"pc":[1205]},{"teal":1161,"source":323,"pc":[1206]},{"teal":1162,"source":323,"pc":[1207,1208]},{"teal":1163,"source":323,"pc":[1209]},{"teal":1164,"source":323,"pc":[1210]},{"teal":1165,"source":323,"pc":[1211,1212,1213]},{"teal":1166,"source":323,"pc":[1214]},{"teal":1167,"source":323,"pc":[1215]},{"teal":1171,"source":324,"pc":[1216]},{"teal":1172,"source":324,"pc":[1217,1218]},{"teal":1173,"source":324,"pc":[1219]},{"teal":1174,"source":324,"pc":[1220,1221]},{"teal":1175,"source":324,"pc":[1222]},{"teal":1176,"source":324,"pc":[1223]},{"teal":1177,"source":324,"pc":[1224,1225]},{"teal":1178,"source":324,"pc":[1226]},{"teal":1182,"source":325,"pc":[1227]},{"teal":1183,"source":325,"pc":[1228,1229]},{"teal":1184,"source":325,"pc":[1230]},{"teal":1185,"source":325,"pc":[1231]},{"teal":1186,"source":325,"pc":[1232,1233]},{"teal":1187,"source":325,"pc":[1234]},{"teal":1188,"source":325,"pc":[1235]},{"teal":1189,"source":325,"pc":[1236,1237]},{"teal":1190,"source":325,"pc":[1238]},{"teal":1195,"source":328,"pc":[1239,1240]},{"teal":1196,"source":328,"pc":[1241,1242,1243]},{"teal":1197,"source":328,"pc":[1244]},{"teal":1198,"source":328,"pc":[1245]},{"teal":1199,"source":328,"pc":[1246]},{"teal":1200,"source":328,"pc":[1247,1248,1249]},{"teal":1205,"source":330,"pc":[1250,1251]},{"teal":1206,"source":330,"pc":[1252,1253,1254]},{"teal":1207,"source":330,"pc":[1255]},{"teal":1208,"source":330,"pc":[1256,1257,1258]},{"teal":1211,"source":330,"errorMessage":"provided NFD must be valid","pc":[1259]},{"teal":1218,"source":333,"pc":[1260,1261]},{"teal":1219,"source":333,"pc":[1262,1263]},{"teal":1220,"source":333,"pc":[1264,1265,1266]},{"teal":1221,"source":333,"pc":[1267]},{"teal":1222,"source":333,"pc":[1268,1269]},{"teal":1223,"source":333,"pc":[1270]},{"teal":1226,"source":333,"errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1271]},{"teal":1227,"source":333,"pc":[1272]},{"teal":1230,"source":332,"errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1273]},{"teal":1237,"source":338,"pc":[1274,1275]},{"teal":1238,"source":338,"pc":[1276,1277,1278]},{"teal":1239,"source":338,"pc":[1279]},{"teal":1240,"source":338,"pc":[1280,1281]},{"teal":1241,"source":338,"pc":[1282]},{"teal":1242,"source":338,"pc":[1283]},{"teal":1243,"source":338,"pc":[1284,1285,1286]},{"teal":1244,"source":339,"pc":[1287,1288]},{"teal":1245,"source":339,"pc":[1289,1290,1291]},{"teal":1246,"source":339,"pc":[1292]},{"teal":1247,"source":339,"pc":[1293,1294]},{"teal":1248,"source":339,"pc":[1295]},{"teal":1249,"source":338,"pc":[1296]},{"teal":1252,"source":337,"pc":[1297,1298,1299]},{"teal":1260,"source":343,"pc":[1300,1301]},{"teal":1261,"source":343,"pc":[1302,1303,1304]},{"teal":1262,"source":343,"pc":[1305]},{"teal":1263,"source":343,"pc":[1306,1307,1308]},{"teal":1266,"source":342,"errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1309]},{"teal":1271,"source":347,"pc":[1310,1311,1312,1313,1314,1315]},{"teal":1272,"source":347,"pc":[1316,1317]},{"teal":1273,"source":347,"pc":[1318]},{"teal":1274,"source":347,"pc":[1319,1320]},{"teal":1275,"source":347,"pc":[1321,1322,1323]},{"teal":1276,"source":347,"pc":[1324]},{"teal":1277,"source":347,"pc":[1325,1326]},{"teal":1278,"source":347,"pc":[1327,1328,1329]},{"teal":1279,"source":347,"pc":[1330]},{"teal":1280,"source":347,"pc":[1331]},{"teal":1281,"source":347,"pc":[1332]},{"teal":1285,"source":348,"pc":[1333,1334]},{"teal":1288,"source":312,"pc":[1335,1336]},{"teal":1289,"source":312,"pc":[1337]},{"teal":1294,"source":358,"pc":[1338,1339,1340]},{"teal":1295,"source":358,"pc":[1341]},{"teal":1296,"source":358,"pc":[1342]},{"teal":1297,"source":358,"pc":[1343,1344]},{"teal":1298,"source":358,"pc":[1345]},{"teal":1301,"source":358,"errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1346]},{"teal":1304,"source":358,"pc":[1347,1348,1349]},{"teal":1305,"source":358,"pc":[1350]},{"teal":1308,"source":358,"pc":[1351,1352,1353]},{"teal":1309,"source":358,"pc":[1354]},{"teal":1310,"source":358,"pc":[1355]},{"teal":1320,"source":358,"pc":[1356,1357,1358]},{"teal":1324,"source":359,"pc":[1359,1360]},{"teal":1325,"source":359,"pc":[1361,1362,1363]},{"teal":1329,"source":360,"pc":[1364,1365]},{"teal":1330,"source":360,"pc":[1366,1367]},{"teal":1331,"source":360,"pc":[1368]},{"teal":1334,"source":360,"errorMessage":"needs to at least be valid address","pc":[1369]},{"teal":1338,"source":361,"pc":[1370,1371]},{"teal":1339,"source":361,"pc":[1372,1373]},{"teal":1340,"source":361,"pc":[1374]},{"teal":1341,"source":361,"pc":[1375,1376]},{"teal":1342,"source":361,"pc":[1377]},{"teal":1343,"source":361,"pc":[1378]},{"teal":1344,"source":361,"pc":[1379,1380]},{"teal":1345,"source":361,"pc":[1381]},{"teal":1346,"source":358,"pc":[1382]},{"teal":1351,"source":372,"pc":[1383,1384,1385]},{"teal":1352,"source":372,"pc":[1386]},{"teal":1355,"source":372,"pc":[1387,1388,1389]},{"teal":1356,"source":372,"pc":[1390]},{"teal":1359,"source":372,"pc":[1391,1392,1393]},{"teal":1360,"source":372,"pc":[1394]},{"teal":1363,"source":372,"pc":[1395,1396,1397]},{"teal":1364,"source":372,"pc":[1398]},{"teal":1365,"source":372,"pc":[1399]},{"teal":1376,"source":372,"pc":[1400,1401,1402]},{"teal":1380,"source":373,"pc":[1403,1404]},{"teal":1381,"source":373,"pc":[1405,1406,1407]},{"teal":1385,"source":374,"pc":[1408,1409]},{"teal":1386,"source":374,"pc":[1410,1411]},{"teal":1387,"source":374,"pc":[1412]},{"teal":1388,"source":374,"pc":[1413]},{"teal":1389,"source":374,"pc":[1414,1415]},{"teal":1390,"source":374,"pc":[1416]},{"teal":1391,"source":374,"pc":[1417]},{"teal":1392,"source":374,"pc":[1418,1419]},{"teal":1393,"source":374,"pc":[1420]},{"teal":1397,"source":375,"pc":[1421,1422,1423]},{"teal":1398,"source":375,"pc":[1424,1425]},{"teal":1399,"source":375,"pc":[1426]},{"teal":1400,"source":375,"pc":[1427]},{"teal":1401,"source":375,"pc":[1428,1429]},{"teal":1402,"source":375,"pc":[1430]},{"teal":1403,"source":375,"pc":[1431]},{"teal":1404,"source":375,"pc":[1432,1433]},{"teal":1405,"source":375,"pc":[1434]},{"teal":1406,"source":372,"pc":[1435]},{"teal":1411,"source":386,"pc":[1436,1437,1438]},{"teal":1412,"source":386,"pc":[1439,1440,1441]},{"teal":1415,"source":386,"pc":[1442,1443,1444]},{"teal":1416,"source":386,"pc":[1445]},{"teal":1419,"source":386,"pc":[1446,1447,1448]},{"teal":1420,"source":386,"pc":[1449]},{"teal":1423,"source":386,"pc":[1450,1451,1452]},{"teal":1424,"source":386,"pc":[1453]},{"teal":1425,"source":386,"pc":[1454]},{"teal":1436,"source":386,"pc":[1455,1456,1457]},{"teal":1440,"source":387,"pc":[1458,1459]},{"teal":1441,"source":387,"pc":[1460,1461,1462]},{"teal":1445,"source":389,"pc":[1463,1464]},{"teal":1446,"source":389,"pc":[1465,1466,1467]},{"teal":1449,"source":389,"errorMessage":"provided NFD must be valid","pc":[1468]},{"teal":1456,"source":392,"pc":[1469,1470]},{"teal":1457,"source":392,"pc":[1471,1472]},{"teal":1458,"source":392,"pc":[1473,1474]},{"teal":1459,"source":392,"pc":[1475]},{"teal":1462,"source":392,"errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1476]},{"teal":1463,"source":392,"pc":[1477]},{"teal":1466,"source":391,"errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1478]},{"teal":1470,"source":395,"pc":[1479,1480]},{"teal":1471,"source":395,"pc":[1481,1482]},{"teal":1472,"source":395,"pc":[1483]},{"teal":1473,"source":395,"pc":[1484]},{"teal":1474,"source":395,"pc":[1485,1486]},{"teal":1475,"source":395,"pc":[1487]},{"teal":1476,"source":395,"pc":[1488]},{"teal":1477,"source":395,"pc":[1489,1490]},{"teal":1478,"source":395,"pc":[1491]},{"teal":1479,"source":386,"pc":[1492]},{"teal":1484,"source":402,"pc":[1493,1494,1495]},{"teal":1485,"source":402,"pc":[1496]},{"teal":1486,"source":402,"pc":[1497]},{"teal":1487,"source":402,"pc":[1498,1499]},{"teal":1488,"source":402,"pc":[1500]},{"teal":1491,"source":402,"errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1501]},{"teal":1494,"source":402,"pc":[1502,1503,1504]},{"teal":1495,"source":402,"pc":[1505]},{"teal":1498,"source":402,"pc":[1506,1507,1508]},{"teal":1499,"source":402,"pc":[1509]},{"teal":1500,"source":402,"pc":[1510]},{"teal":1507,"source":402,"pc":[1511,1512,1513]},{"teal":1511,"source":403,"pc":[1514,1515]},{"teal":1512,"source":403,"pc":[1516,1517,1518]},{"teal":1516,"source":404,"pc":[1519,1520]},{"teal":1517,"source":404,"pc":[1521,1522]},{"teal":1518,"source":404,"pc":[1523]},{"teal":1519,"source":404,"pc":[1524]},{"teal":1523,"source":405,"pc":[1525,1526,1527]},{"teal":1524,"source":405,"pc":[1528,1529]},{"teal":1525,"source":405,"pc":[1530]},{"teal":1526,"source":405,"pc":[1531,1532]},{"teal":1527,"source":405,"pc":[1533]},{"teal":1528,"source":405,"pc":[1534]},{"teal":1529,"source":405,"pc":[1535,1536]},{"teal":1530,"source":405,"pc":[1537]},{"teal":1531,"source":402,"pc":[1538]},{"teal":1536,"source":418,"pc":[1539,1540,1541]},{"teal":1537,"source":418,"pc":[1542]},{"teal":1540,"source":417,"pc":[1543,1544,1545]},{"teal":1541,"source":417,"pc":[1546]},{"teal":1544,"source":416,"pc":[1547,1548,1549]},{"teal":1545,"source":416,"pc":[1550]},{"teal":1546,"source":416,"pc":[1551]},{"teal":1547,"source":416,"pc":[1552,1553]},{"teal":1548,"source":416,"pc":[1554]},{"teal":1551,"source":416,"errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1555]},{"teal":1554,"source":415,"pc":[1556,1557,1558]},{"teal":1555,"source":415,"pc":[1559]},{"teal":1556,"source":415,"pc":[1560]},{"teal":1557,"source":415,"pc":[1561,1562]},{"teal":1558,"source":415,"pc":[1563]},{"teal":1561,"source":415,"errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1564]},{"teal":1564,"source":414,"pc":[1565,1566,1567]},{"teal":1565,"source":414,"pc":[1568]},{"teal":1566,"source":414,"pc":[1569]},{"teal":1567,"source":414,"pc":[1570]},{"teal":1568,"source":414,"pc":[1571]},{"teal":1571,"source":414,"errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1572]},{"teal":1572,"source":414,"pc":[1573]},{"teal":1575,"source":413,"pc":[1574,1575,1576]},{"teal":1576,"source":413,"pc":[1577]},{"teal":1579,"source":412,"pc":[1578,1579,1580]},{"teal":1580,"source":412,"pc":[1581]},{"teal":1581,"source":412,"pc":[1582]},{"teal":1588,"source":412,"pc":[1583,1584,1585]},{"teal":1592,"source":420,"pc":[1586,1587]},{"teal":1593,"source":420,"pc":[1588,1589,1590]},{"teal":1600,"source":423,"pc":[1591,1592]},{"teal":1601,"source":423,"pc":[1593]},{"teal":1602,"source":423,"pc":[1594]},{"teal":1603,"source":423,"pc":[1595]},{"teal":1604,"source":423,"pc":[1596,1597,1598]},{"teal":1605,"source":423,"pc":[1599,1600]},{"teal":1606,"source":423,"pc":[1601,1602]},{"teal":1607,"source":423,"pc":[1603]},{"teal":1608,"source":423,"pc":[1604]},{"teal":1612,"source":422,"errorMessage":"invalid Entry gating type","pc":[1605]},{"teal":1617,"source":426,"pc":[1606,1607]},{"teal":1618,"source":426,"pc":[1608]},{"teal":1619,"source":426,"pc":[1609]},{"teal":1620,"source":426,"pc":[1610,1611,1612]},{"teal":1625,"source":427,"pc":[1613,1614]},{"teal":1626,"source":427,"pc":[1615,1616]},{"teal":1627,"source":427,"pc":[1617]},{"teal":1628,"source":427,"pc":[1618]},{"teal":1635,"source":430,"pc":[1619,1620]},{"teal":1636,"source":430,"pc":[1621,1622]},{"teal":1637,"source":430,"pc":[1623]},{"teal":1638,"source":430,"pc":[1624]},{"teal":1639,"source":430,"pc":[1625,1626,1627]},{"teal":1640,"source":431,"pc":[1628,1629]},{"teal":1641,"source":431,"pc":[1630,1631]},{"teal":1642,"source":431,"pc":[1632]},{"teal":1643,"source":430,"pc":[1633]},{"teal":1646,"source":429,"pc":[1634,1635,1636]},{"teal":1651,"source":433,"pc":[1637,1638]},{"teal":1652,"source":433,"pc":[1639,1640,1641]},{"teal":1653,"source":433,"pc":[1642]},{"teal":1654,"source":433,"pc":[1643,1644,1645]},{"teal":1657,"source":433,"errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1646]},{"teal":1662,"source":435,"pc":[1647,1648]},{"teal":1663,"source":435,"pc":[1649,1650]},{"teal":1664,"source":435,"pc":[1651]},{"teal":1665,"source":435,"pc":[1652,1653,1654]},{"teal":1666,"source":435,"pc":[1655]},{"teal":1667,"source":435,"pc":[1656,1657]},{"teal":1668,"source":435,"pc":[1658]},{"teal":1669,"source":435,"pc":[1659]},{"teal":1670,"source":435,"pc":[1660,1661]},{"teal":1671,"source":435,"pc":[1662]},{"teal":1675,"source":436,"pc":[1663,1664]},{"teal":1676,"source":436,"pc":[1665,1666]},{"teal":1677,"source":436,"pc":[1667]},{"teal":1678,"source":436,"pc":[1668,1669]},{"teal":1679,"source":436,"pc":[1670]},{"teal":1680,"source":436,"pc":[1671]},{"teal":1681,"source":436,"pc":[1672,1673]},{"teal":1682,"source":436,"pc":[1674]},{"teal":1686,"source":437,"pc":[1675,1676]},{"teal":1687,"source":437,"pc":[1677,1678]},{"teal":1688,"source":437,"pc":[1679]},{"teal":1689,"source":437,"pc":[1680,1681]},{"teal":1690,"source":437,"pc":[1682]},{"teal":1691,"source":437,"pc":[1683]},{"teal":1692,"source":437,"pc":[1684,1685]},{"teal":1693,"source":437,"pc":[1686]},{"teal":1697,"source":438,"pc":[1687,1688]},{"teal":1698,"source":438,"pc":[1689,1690]},{"teal":1699,"source":438,"pc":[1691]},{"teal":1700,"source":438,"pc":[1692]},{"teal":1701,"source":438,"pc":[1693,1694]},{"teal":1702,"source":438,"pc":[1695]},{"teal":1703,"source":438,"pc":[1696]},{"teal":1704,"source":438,"pc":[1697,1698]},{"teal":1705,"source":438,"pc":[1699]},{"teal":1709,"source":439,"pc":[1700,1701,1702]},{"teal":1710,"source":439,"pc":[1703,1704]},{"teal":1711,"source":439,"pc":[1705]},{"teal":1712,"source":439,"pc":[1706]},{"teal":1713,"source":439,"pc":[1707,1708]},{"teal":1714,"source":439,"pc":[1709]},{"teal":1715,"source":439,"pc":[1710]},{"teal":1716,"source":439,"pc":[1711,1712]},{"teal":1717,"source":439,"pc":[1713]},{"teal":1718,"source":412,"pc":[1714]},{"teal":1723,"source":453,"pc":[1715]},{"teal":1726,"source":453,"pc":[1716,1717,1718]},{"teal":1727,"source":453,"pc":[1719]},{"teal":1730,"source":453,"pc":[1720,1721,1722]},{"teal":1731,"source":453,"pc":[1723]},{"teal":1734,"source":453,"pc":[1724,1725]},{"teal":1735,"source":453,"pc":[1726]},{"teal":1736,"source":453,"pc":[1727]},{"teal":1737,"source":453,"pc":[1728]},{"teal":1738,"source":453,"pc":[1729,1730]},{"teal":1739,"source":453,"pc":[1731]},{"teal":1740,"source":453,"pc":[1732]},{"teal":1743,"source":453,"errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1733]},{"teal":1746,"source":453,"pc":[1734,1735,1736]},{"teal":1747,"source":453,"pc":[1737]},{"teal":1748,"source":453,"pc":[1738]},{"teal":1749,"source":453,"pc":[1739]},{"teal":1750,"source":453,"pc":[1740]},{"teal":1763,"source":453,"pc":[1741,1742,1743]},{"teal":1766,"source":453,"pc":[1744]},{"teal":1767,"source":453,"pc":[1745]},{"teal":1771,"source":454,"pc":[1746,1747]},{"teal":1772,"source":454,"pc":[1748,1749,1750]},{"teal":1777,"source":457,"pc":[1751,1752]},{"teal":1778,"source":457,"pc":[1753,1754]},{"teal":1779,"source":457,"pc":[1755,1756]},{"teal":1780,"source":457,"pc":[1757]},{"teal":1783,"source":457,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1758]},{"teal":1786,"source":457,"pc":[1759,1760]},{"teal":1787,"source":457,"pc":[1761,1762]},{"teal":1788,"source":457,"pc":[1763,1764,1765]},{"teal":1789,"source":457,"pc":[1766,1767,1768]},{"teal":1790,"source":457,"pc":[1769]},{"teal":1791,"source":457,"pc":[1770]},{"teal":1794,"source":457,"errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1771]},{"teal":1798,"source":459,"pc":[1772]},{"teal":1799,"source":459,"pc":[1773,1774]},{"teal":1800,"source":459,"pc":[1775]},{"teal":1801,"source":459,"pc":[1776]},{"teal":1802,"source":459,"pc":[1777]},{"teal":1803,"source":459,"pc":[1778]},{"teal":1804,"source":459,"pc":[1779]},{"teal":1807,"source":459,"errorMessage":"specified validator id isn't valid","pc":[1780]},{"teal":1811,"source":461,"pc":[1781,1782]},{"teal":1812,"source":461,"pc":[1783,1784]},{"teal":1813,"source":461,"pc":[1785]},{"teal":1814,"source":461,"pc":[1786,1787]},{"teal":1815,"source":461,"pc":[1788]},{"teal":1816,"source":461,"pc":[1789]},{"teal":1817,"source":461,"pc":[1790,1791]},{"teal":1818,"source":461,"pc":[1792]},{"teal":1819,"source":461,"pc":[1793]},{"teal":1820,"source":461,"pc":[1794,1795]},{"teal":1825,"source":462,"pc":[1796,1797]},{"teal":1826,"source":58,"pc":[1798]},{"teal":1827,"source":462,"pc":[1799]},{"teal":1828,"source":462,"pc":[1800,1801,1802]},{"teal":1832,"source":463,"errorMessage":"already at max pool size","pc":[1803]},{"teal":1837,"source":465,"pc":[1804,1805]},{"teal":1838,"source":465,"pc":[1806]},{"teal":1839,"source":465,"pc":[1807]},{"teal":1840,"source":465,"pc":[1808,1809]},{"teal":1862,"source":468,"pc":[1810]},{"teal":1863,"source":468,"pc":[1811,1812]},{"teal":1864,"source":468,"pc":[1813,1814]},{"teal":1868,"source":469,"pc":[1815]},{"teal":1869,"source":469,"pc":[1816,1817]},{"teal":1876,"source":471,"pc":[1818,1819]},{"teal":1877,"source":471,"pc":[1820]},{"teal":1878,"source":471,"pc":[1821,1822]},{"teal":1879,"source":471,"pc":[1823]},{"teal":1880,"source":471,"pc":[1824,1825]},{"teal":1881,"source":472,"pc":[1826,1827]},{"teal":1882,"source":472,"pc":[1828,1829]},{"teal":1883,"source":472,"pc":[1830,1831]},{"teal":1884,"source":472,"pc":[1832]},{"teal":1887,"source":472,"errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1833]},{"teal":1888,"source":472,"pc":[1834,1835]},{"teal":1889,"source":472,"pc":[1836]},{"teal":1890,"source":472,"pc":[1837]},{"teal":1891,"source":472,"pc":[1838,1839]},{"teal":1895,"source":474,"pc":[1840,1841,1842]},{"teal":1896,"source":474,"pc":[1843,1844]},{"teal":1900,"source":475,"pc":[1845,1846]},{"teal":1901,"source":475,"pc":[1847,1848]},{"teal":1905,"source":476,"pc":[1849,1850]},{"teal":1906,"source":476,"pc":[1851,1852]},{"teal":1910,"source":477,"pc":[1853,1854]},{"teal":1911,"source":477,"pc":[1855,1856]},{"teal":1922,"source":480,"pc":[1857,1858,1859,1860,1861,1862]},{"teal":1923,"source":480,"pc":[1863,1864]},{"teal":1924,"source":481,"pc":[1865,1866,1867]},{"teal":1925,"source":481,"pc":[1868]},{"teal":1926,"source":481,"pc":[1869,1870]},{"teal":1927,"source":482,"pc":[1871,1872]},{"teal":1928,"source":482,"pc":[1873]},{"teal":1929,"source":482,"pc":[1874,1875]},{"teal":1930,"source":483,"pc":[1876,1877]},{"teal":1931,"source":483,"pc":[1878]},{"teal":1932,"source":483,"pc":[1879,1880]},{"teal":1933,"source":484,"pc":[1881,1882]},{"teal":1934,"source":484,"pc":[1883]},{"teal":1935,"source":484,"pc":[1884]},{"teal":1936,"source":484,"pc":[1885,1886]},{"teal":1937,"source":484,"pc":[1887]},{"teal":1938,"source":484,"pc":[1888]},{"teal":1939,"source":484,"pc":[1889,1890]},{"teal":1940,"source":484,"pc":[1891]},{"teal":1941,"source":484,"pc":[1892]},{"teal":1942,"source":484,"pc":[1893]},{"teal":1943,"source":484,"pc":[1894,1895]},{"teal":1946,"source":468,"pc":[1896]},{"teal":1947,"source":468,"pc":[1897,1898]},{"teal":1950,"source":468,"pc":[1899]},{"teal":1954,"source":488,"pc":[1900,1901]},{"teal":1955,"source":488,"pc":[1902,1903]},{"teal":1956,"source":488,"pc":[1904]},{"teal":1957,"source":488,"pc":[1905,1906,1907]},{"teal":1958,"source":488,"pc":[1908]},{"teal":1959,"source":488,"pc":[1909,1910]},{"teal":1960,"source":488,"pc":[1911]},{"teal":1961,"source":488,"pc":[1912]},{"teal":1962,"source":488,"pc":[1913,1914]},{"teal":1963,"source":488,"pc":[1915]},{"teal":1967,"source":491,"pc":[1916,1917]},{"teal":1968,"source":491,"pc":[1918,1919]},{"teal":1972,"source":492,"pc":[1920,1921]},{"teal":1973,"source":492,"pc":[1922,1923]},{"teal":1974,"source":492,"pc":[1924]},{"teal":1975,"source":492,"pc":[1925]},{"teal":1976,"source":492,"pc":[1926,1927]},{"teal":1977,"source":492,"pc":[1928]},{"teal":1978,"source":492,"pc":[1929]},{"teal":1979,"source":492,"pc":[1930]},{"teal":1980,"source":492,"pc":[1931]},{"teal":1981,"source":492,"pc":[1932,1933]},{"teal":1982,"source":492,"pc":[1934]},{"teal":1983,"source":492,"pc":[1935]},{"teal":1984,"source":492,"pc":[1936,1937]},{"teal":1985,"source":492,"pc":[1938]},{"teal":1986,"source":492,"pc":[1939]},{"teal":1987,"source":492,"pc":[1940,1941]},{"teal":1988,"source":492,"pc":[1942]},{"teal":1992,"source":493,"pc":[1943,1944]},{"teal":1993,"source":493,"pc":[1945,1946]},{"teal":1994,"source":493,"pc":[1947,1948]},{"teal":1995,"source":493,"pc":[1949,1950,1951]},{"teal":2003,"source":495,"pc":[1952,1953,1954,1955,1956,1957]},{"teal":2004,"source":496,"pc":[1958,1959]},{"teal":2005,"source":496,"pc":[1960]},{"teal":2006,"source":497,"pc":[1961,1962]},{"teal":2007,"source":497,"pc":[1963]},{"teal":2008,"source":497,"pc":[1964]},{"teal":2009,"source":497,"pc":[1965]},{"teal":2010,"source":497,"pc":[1966,1967]},{"teal":2011,"source":497,"pc":[1968]},{"teal":2014,"source":497,"errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1969]},{"teal":2015,"source":497,"pc":[1970,1971,1972]},{"teal":2016,"source":497,"pc":[1973]},{"teal":2017,"source":498,"pc":[1974,1975]},{"teal":2018,"source":498,"pc":[1976]},{"teal":2019,"source":498,"pc":[1977]},{"teal":2020,"source":495,"pc":[1978]},{"teal":2021,"source":495,"pc":[1979]},{"teal":2025,"source":501,"pc":[1980,1981]},{"teal":2026,"source":501,"pc":[1982]},{"teal":2027,"source":501,"pc":[1983,1984]},{"teal":2028,"source":501,"pc":[1985]},{"teal":2029,"source":501,"pc":[1986]},{"teal":2030,"source":501,"pc":[1987,1988]},{"teal":2031,"source":501,"pc":[1989]},{"teal":2032,"source":501,"pc":[1990]},{"teal":2035,"source":453,"pc":[1991,1992]},{"teal":2038,"source":453,"pc":[1993,1994]},{"teal":2039,"source":453,"pc":[1995]},{"teal":2044,"source":513,"pc":[1996]},{"teal":2047,"source":513,"pc":[1997,1998,1999]},{"teal":2048,"source":513,"pc":[2000]},{"teal":2051,"source":513,"pc":[2001,2002,2003]},{"teal":2052,"source":513,"pc":[2004]},{"teal":2055,"source":513,"pc":[2005,2006]},{"teal":2056,"source":513,"pc":[2007]},{"teal":2057,"source":513,"pc":[2008]},{"teal":2058,"source":513,"pc":[2009]},{"teal":2059,"source":513,"pc":[2010,2011]},{"teal":2060,"source":513,"pc":[2012]},{"teal":2061,"source":513,"pc":[2013]},{"teal":2064,"source":513,"errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[2014]},{"teal":2067,"source":513,"pc":[2015,2016,2017]},{"teal":2068,"source":513,"pc":[2018]},{"teal":2069,"source":513,"pc":[2019]},{"teal":2070,"source":513,"pc":[2020]},{"teal":2071,"source":513,"pc":[2021]},{"teal":2083,"source":513,"pc":[2022,2023,2024]},{"teal":2086,"source":513,"pc":[2025]},{"teal":2087,"source":513,"pc":[2026,2027]},{"teal":2091,"source":514,"pc":[2028]},{"teal":2092,"source":514,"pc":[2029,2030]},{"teal":2093,"source":514,"pc":[2031]},{"teal":2094,"source":514,"pc":[2032]},{"teal":2095,"source":514,"pc":[2033]},{"teal":2096,"source":514,"pc":[2034]},{"teal":2097,"source":514,"pc":[2035]},{"teal":2100,"source":514,"errorMessage":"specified validator id isn't valid","pc":[2036]},{"teal":2105,"source":517,"pc":[2037,2038]},{"teal":2106,"source":517,"pc":[2039]},{"teal":2107,"source":517,"pc":[2040]},{"teal":2108,"source":517,"pc":[2041,2042]},{"teal":2109,"source":517,"pc":[2043]},{"teal":2110,"source":517,"pc":[2044]},{"teal":2111,"source":517,"pc":[2045,2046]},{"teal":2112,"source":517,"pc":[2047]},{"teal":2113,"source":517,"pc":[2048]},{"teal":2114,"source":517,"pc":[2049]},{"teal":2115,"source":517,"pc":[2050]},{"teal":2116,"source":517,"pc":[2051,2052,2053]},{"teal":2124,"source":520,"pc":[2054,2055]},{"teal":2125,"source":520,"pc":[2056]},{"teal":2126,"source":520,"pc":[2057]},{"teal":2127,"source":520,"pc":[2058,2059]},{"teal":2128,"source":520,"pc":[2060]},{"teal":2129,"source":520,"pc":[2061]},{"teal":2130,"source":520,"pc":[2062,2063]},{"teal":2131,"source":520,"pc":[2064]},{"teal":2132,"source":520,"pc":[2065]},{"teal":2133,"source":520,"pc":[2066,2067]},{"teal":2134,"source":520,"pc":[2068]},{"teal":2137,"source":519,"errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[2069]},{"teal":2142,"source":525,"pc":[2070,2071]},{"teal":2143,"source":525,"pc":[2072,2073]},{"teal":2151,"source":529,"pc":[2074,2075]},{"teal":2152,"source":530,"pc":[2076,2077]},{"teal":2153,"source":530,"pc":[2078,2079]},{"teal":2154,"source":530,"pc":[2080]},{"teal":2157,"source":530,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[2081]},{"teal":2160,"source":529,"pc":[2082,2083]},{"teal":2161,"source":531,"pc":[2084,2085]},{"teal":2162,"source":531,"pc":[2086,2087]},{"teal":2163,"source":531,"pc":[2088]},{"teal":2166,"source":531,"errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[2089]},{"teal":2170,"source":537,"pc":[2090,2091]},{"teal":2171,"source":537,"pc":[2092,2093]},{"teal":2172,"source":537,"pc":[2094,2095,2096]},{"teal":2176,"source":539,"pc":[2097,2098]},{"teal":2177,"source":539,"pc":[2099,2100]},{"teal":2178,"source":539,"pc":[2101,2102]},{"teal":2182,"source":540,"pc":[2103]},{"teal":2183,"source":540,"pc":[2104,2105]},{"teal":2188,"source":542,"pc":[2106,2107]},{"teal":2189,"source":542,"pc":[2108,2109,2110]},{"teal":2190,"source":542,"pc":[2111,2112,2113]},{"teal":2195,"source":545,"pc":[2114,2115,2116]},{"teal":2196,"source":545,"pc":[2117,2118,2119]},{"teal":2197,"source":545,"pc":[2120]},{"teal":2198,"source":545,"pc":[2121,2122]},{"teal":2202,"source":546,"pc":[2123,2124]},{"teal":2203,"source":546,"pc":[2125,2126]},{"teal":2204,"source":546,"pc":[2127]},{"teal":2205,"source":546,"pc":[2128,2129]},{"teal":2209,"source":547,"pc":[2130]},{"teal":2210,"source":547,"pc":[2131,2132]},{"teal":2211,"source":547,"pc":[2133]},{"teal":2212,"source":547,"pc":[2134,2135,2136]},{"teal":2213,"source":547,"pc":[2137]},{"teal":2214,"source":547,"pc":[2138]},{"teal":2222,"source":552,"pc":[2139,2140]},{"teal":2223,"source":552,"pc":[2141]},{"teal":2224,"source":552,"pc":[2142]},{"teal":2225,"source":552,"pc":[2143,2144]},{"teal":2226,"source":552,"pc":[2145]},{"teal":2227,"source":552,"pc":[2146]},{"teal":2228,"source":552,"pc":[2147,2148]},{"teal":2229,"source":552,"pc":[2149]},{"teal":2230,"source":552,"pc":[2150]},{"teal":2231,"source":552,"pc":[2151,2152]},{"teal":2232,"source":552,"pc":[2153]},{"teal":2233,"source":552,"pc":[2154,2155,2156]},{"teal":2234,"source":552,"pc":[2157]},{"teal":2237,"source":551,"errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[2158]},{"teal":2241,"source":558,"pc":[2159,2160]},{"teal":2242,"source":558,"pc":[2161,2162]},{"teal":2243,"source":558,"pc":[2163,2164]},{"teal":2244,"source":558,"pc":[2165,2166,2167]},{"teal":2245,"source":558,"pc":[2168,2169]},{"teal":2251,"source":560,"pc":[2170,2171]},{"teal":2252,"source":560,"pc":[2172,2173]},{"teal":2253,"source":560,"pc":[2174,2175]},{"teal":2254,"source":560,"pc":[2176,2177]},{"teal":2255,"source":560,"pc":[2178]},{"teal":2256,"source":560,"pc":[2179,2180]},{"teal":2260,"source":561,"pc":[2181,2182]},{"teal":2261,"source":561,"pc":[2183,2184]},{"teal":2262,"source":561,"pc":[2185,2186]},{"teal":2263,"source":561,"pc":[2187,2188,2189]},{"teal":2264,"source":561,"pc":[2190]},{"teal":2265,"source":561,"pc":[2191,2192]},{"teal":2270,"source":562,"pc":[2193,2194]},{"teal":2271,"source":562,"pc":[2195,2196]},{"teal":2272,"source":562,"pc":[2197,2198]},{"teal":2273,"source":562,"pc":[2199,2200,2201]},{"teal":2274,"source":562,"pc":[2202]},{"teal":2275,"source":562,"pc":[2203]},{"teal":2276,"source":562,"pc":[2204]},{"teal":2277,"source":562,"pc":[2205,2206,2207]},{"teal":2281,"source":563,"errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2208]},{"teal":2286,"source":567,"pc":[2209,2210]},{"teal":2287,"source":567,"pc":[2211,2212]},{"teal":2288,"source":567,"pc":[2213,2214]},{"teal":2289,"source":567,"pc":[2215,2216,2217]},{"teal":2290,"source":567,"pc":[2218,2219]},{"teal":2291,"source":567,"pc":[2220,2221,2222]},{"teal":2301,"source":575,"pc":[2223,2224]},{"teal":2302,"source":574,"pc":[2225,2226]},{"teal":2303,"source":573,"pc":[2227,2228]},{"teal":2304,"source":572,"pc":[2229,2230]},{"teal":2305,"source":572,"pc":[2231,2232]},{"teal":2306,"source":572,"pc":[2233,2234]},{"teal":2307,"source":572,"pc":[2235,2236,2237]},{"teal":2308,"source":571,"pc":[2238,2239]},{"teal":2309,"source":570,"pc":[2240,2241,2242]},{"teal":2319,"source":577,"pc":[2243,2244,2245,2246,2247,2248]},{"teal":2320,"source":578,"pc":[2249,2250]},{"teal":2321,"source":578,"pc":[2251]},{"teal":2322,"source":579,"pc":[2252,2253]},{"teal":2323,"source":579,"pc":[2254,2255]},{"teal":2324,"source":579,"pc":[2256,2257]},{"teal":2325,"source":579,"pc":[2258,2259,2260]},{"teal":2326,"source":579,"pc":[2261]},{"teal":2327,"source":579,"pc":[2262]},{"teal":2328,"source":579,"pc":[2263]},{"teal":2329,"source":579,"pc":[2264]},{"teal":2330,"source":579,"pc":[2265,2266]},{"teal":2331,"source":579,"pc":[2267]},{"teal":2334,"source":579,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2268]},{"teal":2335,"source":579,"pc":[2269,2270,2271]},{"teal":2336,"source":579,"pc":[2272]},{"teal":2337,"source":580,"pc":[2273,2274]},{"teal":2338,"source":580,"pc":[2275,2276]},{"teal":2339,"source":580,"pc":[2277,2278]},{"teal":2340,"source":580,"pc":[2279,2280,2281]},{"teal":2341,"source":580,"pc":[2282]},{"teal":2342,"source":580,"pc":[2283]},{"teal":2343,"source":580,"pc":[2284]},{"teal":2344,"source":582,"pc":[2285,2286]},{"teal":2345,"source":582,"pc":[2287]},{"teal":2346,"source":581,"pc":[2288,2289]},{"teal":2347,"source":581,"pc":[2290]},{"teal":2348,"source":581,"pc":[2291]},{"teal":2349,"source":577,"pc":[2292]},{"teal":2350,"source":577,"pc":[2293]},{"teal":2354,"source":585,"pc":[2294,2295]},{"teal":2355,"source":585,"pc":[2296,2297]},{"teal":2356,"source":585,"pc":[2298,2299]},{"teal":2357,"source":585,"pc":[2300,2301,2302]},{"teal":2360,"source":513,"pc":[2303,2304]},{"teal":2363,"source":513,"pc":[2305,2306]},{"teal":2364,"source":513,"pc":[2307]},{"teal":2369,"source":603,"pc":[2308]},{"teal":2372,"source":603,"pc":[2309,2310,2311]},{"teal":2373,"source":603,"pc":[2312]},{"teal":2376,"source":603,"pc":[2313,2314,2315]},{"teal":2377,"source":603,"pc":[2316]},{"teal":2378,"source":603,"pc":[2317]},{"teal":2379,"source":603,"pc":[2318]},{"teal":2380,"source":603,"pc":[2319]},{"teal":2398,"source":603,"pc":[2320,2321,2322]},{"teal":2401,"source":603,"pc":[2323]},{"teal":2402,"source":603,"pc":[2324,2325]},{"teal":2406,"source":605,"pc":[2326,2327]},{"teal":2407,"source":605,"pc":[2328]},{"teal":2408,"source":605,"pc":[2329]},{"teal":2409,"source":605,"pc":[2330,2331]},{"teal":2410,"source":605,"pc":[2332]},{"teal":2411,"source":605,"pc":[2333]},{"teal":2412,"source":605,"pc":[2334,2335]},{"teal":2413,"source":605,"pc":[2336]},{"teal":2414,"source":605,"pc":[2337]},{"teal":2415,"source":605,"pc":[2338,2339]},{"teal":2419,"source":606,"pc":[2340,2341]},{"teal":2420,"source":606,"pc":[2342]},{"teal":2421,"source":606,"pc":[2343]},{"teal":2422,"source":606,"pc":[2344]},{"teal":2427,"source":608,"pc":[2345,2346]},{"teal":2428,"source":608,"pc":[2347,2348]},{"teal":2429,"source":608,"pc":[2349,2350]},{"teal":2430,"source":608,"pc":[2351]},{"teal":2431,"source":608,"pc":[2352]},{"teal":2432,"source":608,"pc":[2353,2354,2355]},{"teal":2437,"source":609,"pc":[2356,2357]},{"teal":2438,"source":609,"pc":[2358,2359]},{"teal":2439,"source":609,"pc":[2360]},{"teal":2440,"source":609,"pc":[2361,2362]},{"teal":2441,"source":609,"pc":[2363]},{"teal":2442,"source":609,"pc":[2364]},{"teal":2443,"source":609,"pc":[2365,2366]},{"teal":2444,"source":609,"pc":[2367]},{"teal":2445,"source":609,"pc":[2368,2369,2370]},{"teal":2450,"source":615,"pc":[2371,2372]},{"teal":2451,"source":615,"pc":[2373,2374]},{"teal":2455,"source":616,"pc":[2375,2376]},{"teal":2456,"source":616,"pc":[2377]},{"teal":2457,"source":616,"pc":[2378]},{"teal":2458,"source":616,"pc":[2379,2380]},{"teal":2459,"source":616,"pc":[2381]},{"teal":2460,"source":616,"pc":[2382]},{"teal":2461,"source":616,"pc":[2383,2384]},{"teal":2462,"source":616,"pc":[2385]},{"teal":2463,"source":616,"pc":[2386]},{"teal":2464,"source":616,"pc":[2387,2388]},{"teal":2469,"source":617,"pc":[2389,2390]},{"teal":2470,"source":617,"pc":[2391]},{"teal":2471,"source":617,"pc":[2392]},{"teal":2472,"source":617,"pc":[2393,2394,2395]},{"teal":2478,"source":619,"pc":[2396,2397]},{"teal":2479,"source":619,"pc":[2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409]},{"teal":2480,"source":619,"pc":[2410]},{"teal":2483,"source":619,"errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2411]},{"teal":2484,"source":619,"pc":[2412,2413]},{"teal":2485,"source":619,"pc":[2414]},{"teal":2486,"source":619,"pc":[2415,2416,2417]},{"teal":2491,"source":620,"pc":[2418,2419]},{"teal":2492,"source":620,"pc":[2420,2421]},{"teal":2493,"source":620,"pc":[2422]},{"teal":2494,"source":620,"pc":[2423,2424]},{"teal":2495,"source":620,"pc":[2425]},{"teal":2496,"source":620,"pc":[2426]},{"teal":2497,"source":620,"pc":[2427,2428]},{"teal":2498,"source":620,"pc":[2429]},{"teal":2499,"source":620,"pc":[2430,2431,2432]},{"teal":2504,"source":622,"pc":[2433,2434,2435]},{"teal":2505,"source":622,"pc":[2436,2437]},{"teal":2506,"source":622,"pc":[2438]},{"teal":2507,"source":622,"pc":[2439,2440]},{"teal":2508,"source":622,"pc":[2441]},{"teal":2509,"source":622,"pc":[2442]},{"teal":2510,"source":622,"pc":[2443,2444]},{"teal":2511,"source":622,"pc":[2445]},{"teal":2512,"source":622,"pc":[2446]},{"teal":2513,"source":622,"pc":[2447,2448]},{"teal":2517,"source":623,"pc":[2449,2450]},{"teal":2518,"source":623,"pc":[2451,2452]},{"teal":2519,"source":623,"pc":[2453,2454]},{"teal":2520,"source":623,"pc":[2455]},{"teal":2521,"source":623,"pc":[2456]},{"teal":2522,"source":623,"pc":[2457,2458]},{"teal":2527,"source":625,"pc":[2459,2460]},{"teal":2528,"source":625,"pc":[2461,2462]},{"teal":2529,"source":625,"pc":[2463,2464]},{"teal":2530,"source":625,"pc":[2465]},{"teal":2531,"source":625,"pc":[2466]},{"teal":2532,"source":625,"pc":[2467,2468]},{"teal":2533,"source":625,"pc":[2469]},{"teal":2534,"source":625,"pc":[2470,2471,2472]},{"teal":2539,"source":626,"pc":[2473,2474]},{"teal":2540,"source":626,"pc":[2475,2476]},{"teal":2541,"source":626,"pc":[2477]},{"teal":2542,"source":626,"pc":[2478,2479]},{"teal":2543,"source":626,"pc":[2480]},{"teal":2544,"source":626,"pc":[2481]},{"teal":2545,"source":626,"pc":[2482,2483]},{"teal":2546,"source":626,"pc":[2484]},{"teal":2547,"source":626,"pc":[2485,2486,2487]},{"teal":2554,"source":629,"pc":[2488,2489]},{"teal":2555,"source":629,"pc":[2490,2491]},{"teal":2556,"source":629,"pc":[2492]},{"teal":2557,"source":629,"pc":[2493]},{"teal":2558,"source":629,"pc":[2494,2495]},{"teal":2559,"source":629,"pc":[2496]},{"teal":2560,"source":629,"pc":[2497]},{"teal":2561,"source":629,"pc":[2498,2499]},{"teal":2562,"source":629,"pc":[2500]},{"teal":2566,"source":631,"pc":[2501,2502]},{"teal":2567,"source":631,"pc":[2503,2504]},{"teal":2568,"source":631,"pc":[2505]},{"teal":2569,"source":631,"pc":[2506,2507]},{"teal":2570,"source":631,"pc":[2508]},{"teal":2571,"source":631,"pc":[2509]},{"teal":2572,"source":631,"pc":[2510,2511]},{"teal":2573,"source":631,"pc":[2512]},{"teal":2574,"source":631,"pc":[2513]},{"teal":2575,"source":631,"pc":[2514,2515]},{"teal":2579,"source":632,"pc":[2516,2517]},{"teal":2580,"source":632,"pc":[2518]},{"teal":2581,"source":632,"pc":[2519]},{"teal":2582,"source":632,"pc":[2520,2521]},{"teal":2583,"source":632,"pc":[2522]},{"teal":2584,"source":632,"pc":[2523]},{"teal":2585,"source":632,"pc":[2524,2525]},{"teal":2586,"source":632,"pc":[2526]},{"teal":2587,"source":632,"pc":[2527]},{"teal":2588,"source":632,"pc":[2528,2529]},{"teal":2592,"source":633,"pc":[2530]},{"teal":2593,"source":633,"pc":[2531,2532]},{"teal":2598,"source":633,"pc":[2533,2534]},{"teal":2599,"source":633,"pc":[2535,2536]},{"teal":2600,"source":633,"pc":[2537]},{"teal":2601,"source":633,"pc":[2538,2539,2540]},{"teal":2608,"source":639,"pc":[2541,2542]},{"teal":2609,"source":639,"pc":[2543,2544]},{"teal":2610,"source":639,"pc":[2545,2546]},{"teal":2611,"source":639,"pc":[2547]},{"teal":2612,"source":639,"pc":[2548]},{"teal":2613,"source":639,"pc":[2549,2550]},{"teal":2614,"source":639,"pc":[2551]},{"teal":2615,"source":639,"pc":[2552]},{"teal":2616,"source":639,"pc":[2553]},{"teal":2617,"source":639,"pc":[2554,2555]},{"teal":2618,"source":639,"pc":[2556]},{"teal":2619,"source":639,"pc":[2557]},{"teal":2620,"source":639,"pc":[2558,2559]},{"teal":2621,"source":639,"pc":[2560]},{"teal":2622,"source":639,"pc":[2561]},{"teal":2623,"source":639,"pc":[2562,2563]},{"teal":2624,"source":638,"pc":[2564]},{"teal":2625,"source":638,"pc":[2565]},{"teal":2626,"source":640,"pc":[2566,2567]},{"teal":2627,"source":638,"pc":[2568]},{"teal":2628,"source":638,"pc":[2569]},{"teal":2629,"source":638,"pc":[2570]},{"teal":2630,"source":638,"pc":[2571]},{"teal":2631,"source":638,"pc":[2572]},{"teal":2634,"source":638,"errorMessage":"wideRatio failed","pc":[2573]},{"teal":2635,"source":638,"pc":[2574,2575]},{"teal":2639,"source":642,"pc":[2576,2577]},{"teal":2640,"source":642,"pc":[2578,2579]},{"teal":2641,"source":642,"pc":[2580]},{"teal":2642,"source":642,"pc":[2581]},{"teal":2643,"source":642,"pc":[2582]},{"teal":2644,"source":642,"pc":[2583,2584]},{"teal":2645,"source":642,"pc":[2585]},{"teal":2646,"source":642,"pc":[2586]},{"teal":2647,"source":642,"pc":[2587,2588]},{"teal":2648,"source":642,"pc":[2589]},{"teal":2649,"source":642,"pc":[2590]},{"teal":2650,"source":642,"pc":[2591,2592]},{"teal":2651,"source":642,"pc":[2593]},{"teal":2656,"source":633,"pc":[2594,2595]},{"teal":2657,"source":633,"pc":[2596]},{"teal":2658,"source":633,"pc":[2597]},{"teal":2659,"source":633,"pc":[2598,2599]},{"teal":2660,"source":633,"pc":[2600,2601,2602]},{"teal":2665,"source":644,"pc":[2603,2604]},{"teal":2666,"source":644,"pc":[2605,2606]},{"teal":2667,"source":644,"pc":[2607]},{"teal":2668,"source":644,"pc":[2608,2609]},{"teal":2669,"source":644,"pc":[2610]},{"teal":2670,"source":644,"pc":[2611]},{"teal":2671,"source":644,"pc":[2612,2613]},{"teal":2672,"source":644,"pc":[2614]},{"teal":2676,"source":603,"pc":[2615,2616]},{"teal":2679,"source":603,"pc":[2617,2618]},{"teal":2680,"source":603,"pc":[2619]},{"teal":2685,"source":663,"pc":[2620,2621,2622]},{"teal":2686,"source":663,"pc":[2623]},{"teal":2689,"source":662,"pc":[2624,2625,2626]},{"teal":2690,"source":662,"pc":[2627]},{"teal":2693,"source":661,"pc":[2628,2629,2630]},{"teal":2694,"source":661,"pc":[2631]},{"teal":2697,"source":660,"pc":[2632,2633,2634]},{"teal":2698,"source":660,"pc":[2635]},{"teal":2701,"source":659,"pc":[2636,2637,2638]},{"teal":2702,"source":659,"pc":[2639]},{"teal":2703,"source":659,"pc":[2640]},{"teal":2704,"source":659,"pc":[2641]},{"teal":2705,"source":659,"pc":[2642]},{"teal":2708,"source":659,"errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2643]},{"teal":2711,"source":658,"pc":[2644,2645,2646]},{"teal":2712,"source":658,"pc":[2647]},{"teal":2713,"source":658,"pc":[2648]},{"teal":2727,"source":658,"pc":[2649,2650,2651]},{"teal":2731,"source":665,"pc":[2652,2653]},{"teal":2732,"source":665,"pc":[2654,2655,2656]},{"teal":2736,"source":668,"pc":[2657,2658]},{"teal":2737,"source":668,"pc":[2659,2660]},{"teal":2738,"source":668,"pc":[2661,2662,2663]},{"teal":2739,"source":668,"pc":[2664]},{"teal":2740,"source":668,"pc":[2665]},{"teal":2741,"source":668,"pc":[2666]},{"teal":2742,"source":668,"pc":[2667,2668]},{"teal":2743,"source":668,"pc":[2669]},{"teal":2744,"source":668,"pc":[2670]},{"teal":2745,"source":668,"pc":[2671,2672]},{"teal":2746,"source":668,"pc":[2673]},{"teal":2747,"source":668,"pc":[2674,2675]},{"teal":2748,"source":668,"pc":[2676,2677]},{"teal":2749,"source":668,"pc":[2678,2679,2680]},{"teal":2750,"source":668,"pc":[2681]},{"teal":2751,"source":668,"pc":[2682]},{"teal":2752,"source":668,"pc":[2683]},{"teal":2753,"source":668,"pc":[2684,2685]},{"teal":2754,"source":668,"pc":[2686]},{"teal":2755,"source":668,"pc":[2687]},{"teal":2756,"source":668,"pc":[2688,2689]},{"teal":2757,"source":668,"pc":[2690]},{"teal":2758,"source":668,"pc":[2691]},{"teal":2759,"source":668,"pc":[2692]},{"teal":2760,"source":668,"pc":[2693,2694]},{"teal":2761,"source":668,"pc":[2695,2696,2697]},{"teal":2762,"source":668,"pc":[2698]},{"teal":2763,"source":668,"pc":[2699]},{"teal":2764,"source":668,"pc":[2700]},{"teal":2765,"source":668,"pc":[2701,2702]},{"teal":2766,"source":668,"pc":[2703]},{"teal":2767,"source":668,"pc":[2704]},{"teal":2768,"source":668,"pc":[2705,2706]},{"teal":2769,"source":668,"pc":[2707]},{"teal":2770,"source":668,"pc":[2708]},{"teal":2771,"source":668,"pc":[2709]},{"teal":2772,"source":668,"pc":[2710,2711]},{"teal":2773,"source":668,"pc":[2712,2713,2714]},{"teal":2774,"source":668,"pc":[2715]},{"teal":2775,"source":668,"pc":[2716]},{"teal":2776,"source":668,"pc":[2717]},{"teal":2777,"source":668,"pc":[2718,2719]},{"teal":2778,"source":668,"pc":[2720]},{"teal":2782,"source":669,"pc":[2721,2722]},{"teal":2783,"source":669,"pc":[2723]},{"teal":2784,"source":669,"pc":[2724]},{"teal":2785,"source":669,"pc":[2725]},{"teal":2786,"source":669,"pc":[2726,2727]},{"teal":2787,"source":669,"pc":[2728,2729,2730]},{"teal":2788,"source":669,"pc":[2731]},{"teal":2789,"source":669,"pc":[2732]},{"teal":2790,"source":669,"pc":[2733]},{"teal":2791,"source":669,"pc":[2734,2735]},{"teal":2792,"source":669,"pc":[2736]},{"teal":2793,"source":669,"pc":[2737]},{"teal":2794,"source":669,"pc":[2738,2739]},{"teal":2795,"source":669,"pc":[2740]},{"teal":2796,"source":669,"pc":[2741]},{"teal":2797,"source":669,"pc":[2742]},{"teal":2798,"source":669,"pc":[2743,2744]},{"teal":2799,"source":669,"pc":[2745,2746,2747]},{"teal":2800,"source":669,"pc":[2748]},{"teal":2801,"source":669,"pc":[2749]},{"teal":2802,"source":669,"pc":[2750]},{"teal":2803,"source":669,"pc":[2751,2752]},{"teal":2804,"source":669,"pc":[2753]},{"teal":2808,"source":670,"pc":[2754,2755]},{"teal":2809,"source":670,"pc":[2756]},{"teal":2810,"source":670,"pc":[2757]},{"teal":2811,"source":670,"pc":[2758]},{"teal":2812,"source":670,"pc":[2759,2760]},{"teal":2813,"source":670,"pc":[2761,2762,2763]},{"teal":2814,"source":670,"pc":[2764]},{"teal":2815,"source":670,"pc":[2765]},{"teal":2816,"source":670,"pc":[2766]},{"teal":2817,"source":670,"pc":[2767,2768]},{"teal":2818,"source":670,"pc":[2769]},{"teal":2819,"source":670,"pc":[2770]},{"teal":2820,"source":670,"pc":[2771,2772]},{"teal":2821,"source":670,"pc":[2773]},{"teal":2822,"source":670,"pc":[2774]},{"teal":2823,"source":670,"pc":[2775]},{"teal":2824,"source":670,"pc":[2776,2777]},{"teal":2825,"source":670,"pc":[2778,2779,2780]},{"teal":2826,"source":670,"pc":[2781]},{"teal":2827,"source":670,"pc":[2782]},{"teal":2828,"source":670,"pc":[2783]},{"teal":2829,"source":670,"pc":[2784,2785]},{"teal":2830,"source":670,"pc":[2786]},{"teal":2834,"source":672,"pc":[2787,2788]},{"teal":2835,"source":672,"pc":[2789]},{"teal":2836,"source":672,"pc":[2790,2791]},{"teal":2837,"source":672,"pc":[2792]},{"teal":2838,"source":672,"pc":[2793,2794]},{"teal":2839,"source":672,"pc":[2795]},{"teal":2840,"source":672,"pc":[2796]},{"teal":2844,"source":675,"pc":[2797,2798]},{"teal":2845,"source":675,"pc":[2799,2800,2801]},{"teal":2846,"source":675,"pc":[2802]},{"teal":2847,"source":675,"pc":[2803,2804,2805]},{"teal":2859,"source":677,"pc":[2806,2807,2808,2809,2810,2811]},{"teal":2860,"source":678,"pc":[2812,2813]},{"teal":2861,"source":678,"pc":[2814,2815,2816]},{"teal":2862,"source":678,"pc":[2817]},{"teal":2863,"source":678,"pc":[2818]},{"teal":2864,"source":679,"pc":[2819,2820]},{"teal":2865,"source":679,"pc":[2821,2822,2823]},{"teal":2866,"source":679,"pc":[2824]},{"teal":2867,"source":679,"pc":[2825]},{"teal":2868,"source":679,"pc":[2826]},{"teal":2869,"source":679,"pc":[2827]},{"teal":2870,"source":679,"pc":[2828,2829]},{"teal":2871,"source":679,"pc":[2830]},{"teal":2874,"source":679,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2831]},{"teal":2875,"source":679,"pc":[2832,2833,2834]},{"teal":2876,"source":679,"pc":[2835]},{"teal":2877,"source":680,"pc":[2836,2837]},{"teal":2878,"source":680,"pc":[2838,2839,2840]},{"teal":2879,"source":680,"pc":[2841]},{"teal":2880,"source":680,"pc":[2842]},{"teal":2881,"source":680,"pc":[2843]},{"teal":2882,"source":684,"pc":[2844,2845]},{"teal":2883,"source":684,"pc":[2846]},{"teal":2884,"source":684,"pc":[2847]},{"teal":2885,"source":683,"pc":[2848,2849]},{"teal":2886,"source":683,"pc":[2850]},{"teal":2887,"source":683,"pc":[2851]},{"teal":2888,"source":681,"pc":[2852,2853]},{"teal":2889,"source":681,"pc":[2854]},{"teal":2890,"source":681,"pc":[2855]},{"teal":2891,"source":682,"pc":[2856,2857]},{"teal":2892,"source":682,"pc":[2858]},{"teal":2893,"source":682,"pc":[2859]},{"teal":2894,"source":677,"pc":[2860]},{"teal":2895,"source":677,"pc":[2861]},{"teal":2896,"source":658,"pc":[2862]},{"teal":2901,"source":705,"pc":[2863,2864,2865]},{"teal":2902,"source":705,"pc":[2866]},{"teal":2903,"source":705,"pc":[2867]},{"teal":2904,"source":705,"pc":[2868]},{"teal":2905,"source":705,"pc":[2869]},{"teal":2908,"source":705,"errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2870]},{"teal":2909,"source":705,"pc":[2871]},{"teal":2910,"source":705,"pc":[2872]},{"teal":2913,"source":704,"pc":[2873,2874,2875]},{"teal":2914,"source":704,"pc":[2876]},{"teal":2917,"source":703,"pc":[2877,2878,2879]},{"teal":2918,"source":703,"pc":[2880]},{"teal":2921,"source":702,"pc":[2881,2882,2883]},{"teal":2922,"source":702,"pc":[2884]},{"teal":2923,"source":702,"pc":[2885]},{"teal":2924,"source":702,"pc":[2886,2887]},{"teal":2925,"source":702,"pc":[2888]},{"teal":2928,"source":702,"errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2889]},{"teal":2931,"source":701,"pc":[2890,2891,2892]},{"teal":2932,"source":701,"pc":[2893]},{"teal":2933,"source":701,"pc":[2894]},{"teal":2934,"source":701,"pc":[2895]},{"teal":2935,"source":701,"pc":[2896]},{"teal":2938,"source":701,"errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2897]},{"teal":2941,"source":700,"pc":[2898,2899,2900]},{"teal":2942,"source":700,"pc":[2901]},{"teal":2943,"source":700,"pc":[2902]},{"teal":2958,"source":700,"pc":[2903,2904,2905]},{"teal":2961,"source":700,"pc":[2906]},{"teal":2962,"source":700,"pc":[2907,2908]},{"teal":2967,"source":707,"pc":[2909,2910]},{"teal":2968,"source":707,"pc":[2911,2912]},{"teal":2969,"source":707,"pc":[2913]},{"teal":2970,"source":707,"pc":[2914,2915,2916]},{"teal":2975,"source":708,"pc":[2917]},{"teal":2976,"source":708,"pc":[2918,2919]},{"teal":2977,"source":708,"pc":[2920,2921]},{"teal":2978,"source":708,"pc":[2922]},{"teal":2979,"source":708,"pc":[2923,2924]},{"teal":2980,"source":708,"pc":[2925,2926]},{"teal":2981,"source":708,"pc":[2927]},{"teal":2982,"source":708,"pc":[2928,2929]},{"teal":2983,"source":708,"pc":[2930,2931]},{"teal":2984,"source":708,"pc":[2932,2933]},{"teal":2985,"source":708,"pc":[2934,2935]},{"teal":2986,"source":708,"pc":[2936]},{"teal":2991,"source":710,"pc":[2937,2938]},{"teal":2992,"source":710,"pc":[2939,2940,2941]},{"teal":2996,"source":714,"pc":[2942,2943]},{"teal":2997,"source":714,"pc":[2944]},{"teal":2998,"source":714,"pc":[2945]},{"teal":2999,"source":714,"pc":[2946]},{"teal":3000,"source":714,"pc":[2947,2948,2949]},{"teal":3001,"source":714,"pc":[2950,2951]},{"teal":3002,"source":714,"pc":[2952]},{"teal":3003,"source":714,"pc":[2953]},{"teal":3004,"source":714,"pc":[2954]},{"teal":3008,"source":714,"errorMessage":"should only be called if algo or reward was removed","pc":[2955]},{"teal":3012,"source":717,"pc":[2956,2957]},{"teal":3013,"source":717,"pc":[2958,2959]},{"teal":3014,"source":717,"pc":[2960,2961,2962]},{"teal":3015,"source":717,"pc":[2963]},{"teal":3016,"source":717,"pc":[2964]},{"teal":3017,"source":717,"pc":[2965]},{"teal":3018,"source":717,"pc":[2966,2967]},{"teal":3019,"source":717,"pc":[2968]},{"teal":3020,"source":717,"pc":[2969]},{"teal":3021,"source":717,"pc":[2970,2971]},{"teal":3022,"source":717,"pc":[2972]},{"teal":3023,"source":717,"pc":[2973,2974]},{"teal":3024,"source":717,"pc":[2975,2976]},{"teal":3025,"source":717,"pc":[2977,2978,2979]},{"teal":3026,"source":717,"pc":[2980]},{"teal":3027,"source":717,"pc":[2981]},{"teal":3028,"source":717,"pc":[2982]},{"teal":3029,"source":717,"pc":[2983,2984]},{"teal":3030,"source":717,"pc":[2985]},{"teal":3031,"source":717,"pc":[2986]},{"teal":3032,"source":717,"pc":[2987,2988]},{"teal":3033,"source":717,"pc":[2989]},{"teal":3034,"source":717,"pc":[2990]},{"teal":3035,"source":717,"pc":[2991]},{"teal":3036,"source":717,"pc":[2992,2993]},{"teal":3037,"source":717,"pc":[2994,2995,2996]},{"teal":3038,"source":717,"pc":[2997]},{"teal":3039,"source":717,"pc":[2998]},{"teal":3040,"source":717,"pc":[2999]},{"teal":3041,"source":717,"pc":[3000,3001]},{"teal":3042,"source":717,"pc":[3002]},{"teal":3043,"source":717,"pc":[3003]},{"teal":3044,"source":717,"pc":[3004,3005]},{"teal":3045,"source":717,"pc":[3006]},{"teal":3046,"source":717,"pc":[3007]},{"teal":3047,"source":717,"pc":[3008]},{"teal":3048,"source":717,"pc":[3009,3010]},{"teal":3049,"source":717,"pc":[3011,3012,3013]},{"teal":3050,"source":717,"pc":[3014]},{"teal":3051,"source":717,"pc":[3015]},{"teal":3052,"source":717,"pc":[3016]},{"teal":3053,"source":717,"pc":[3017,3018]},{"teal":3054,"source":717,"pc":[3019]},{"teal":3058,"source":718,"pc":[3020,3021]},{"teal":3059,"source":718,"pc":[3022]},{"teal":3060,"source":718,"pc":[3023]},{"teal":3061,"source":718,"pc":[3024]},{"teal":3062,"source":718,"pc":[3025,3026]},{"teal":3063,"source":718,"pc":[3027,3028,3029]},{"teal":3064,"source":718,"pc":[3030]},{"teal":3065,"source":718,"pc":[3031]},{"teal":3066,"source":718,"pc":[3032]},{"teal":3067,"source":718,"pc":[3033,3034]},{"teal":3068,"source":718,"pc":[3035]},{"teal":3069,"source":718,"pc":[3036]},{"teal":3070,"source":718,"pc":[3037,3038]},{"teal":3071,"source":718,"pc":[3039]},{"teal":3072,"source":718,"pc":[3040]},{"teal":3073,"source":718,"pc":[3041]},{"teal":3074,"source":718,"pc":[3042,3043]},{"teal":3075,"source":718,"pc":[3044,3045,3046]},{"teal":3076,"source":718,"pc":[3047]},{"teal":3077,"source":718,"pc":[3048]},{"teal":3078,"source":718,"pc":[3049]},{"teal":3079,"source":718,"pc":[3050,3051]},{"teal":3080,"source":718,"pc":[3052]},{"teal":3084,"source":719,"pc":[3053,3054]},{"teal":3085,"source":719,"pc":[3055]},{"teal":3086,"source":719,"pc":[3056,3057]},{"teal":3087,"source":719,"pc":[3058]},{"teal":3088,"source":719,"pc":[3059,3060]},{"teal":3089,"source":719,"pc":[3061]},{"teal":3090,"source":719,"pc":[3062]},{"teal":3095,"source":721,"pc":[3063,3064]},{"teal":3096,"source":721,"pc":[3065]},{"teal":3097,"source":721,"pc":[3066]},{"teal":3098,"source":721,"pc":[3067,3068,3069]},{"teal":3103,"source":722,"pc":[3070,3071]},{"teal":3104,"source":722,"pc":[3072]},{"teal":3105,"source":722,"pc":[3073]},{"teal":3106,"source":722,"pc":[3074,3075]},{"teal":3107,"source":722,"pc":[3076,3077,3078]},{"teal":3108,"source":722,"pc":[3079]},{"teal":3109,"source":722,"pc":[3080]},{"teal":3110,"source":722,"pc":[3081]},{"teal":3111,"source":722,"pc":[3082,3083]},{"teal":3112,"source":722,"pc":[3084]},{"teal":3113,"source":722,"pc":[3085]},{"teal":3114,"source":722,"pc":[3086,3087]},{"teal":3118,"source":723,"pc":[3088,3089]},{"teal":3119,"source":723,"pc":[3090]},{"teal":3120,"source":723,"pc":[3091]},{"teal":3123,"source":723,"errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[3092]},{"teal":3130,"source":725,"pc":[3093,3094]},{"teal":3131,"source":725,"pc":[3095]},{"teal":3132,"source":725,"pc":[3096]},{"teal":3133,"source":725,"pc":[3097,3098]},{"teal":3134,"source":725,"pc":[3099,3100,3101]},{"teal":3135,"source":725,"pc":[3102]},{"teal":3136,"source":725,"pc":[3103]},{"teal":3137,"source":725,"pc":[3104]},{"teal":3138,"source":725,"pc":[3105,3106]},{"teal":3139,"source":725,"pc":[3107]},{"teal":3140,"source":725,"pc":[3108]},{"teal":3141,"source":725,"pc":[3109,3110]},{"teal":3142,"source":725,"pc":[3111]},{"teal":3145,"source":724,"errorMessage":"reward being removed must be covered by hold back amount","pc":[3112]},{"teal":3149,"source":730,"pc":[3113,3114]},{"teal":3150,"source":730,"pc":[3115]},{"teal":3151,"source":730,"pc":[3116]},{"teal":3152,"source":730,"pc":[3117]},{"teal":3153,"source":730,"pc":[3118,3119]},{"teal":3154,"source":730,"pc":[3120,3121,3122]},{"teal":3155,"source":730,"pc":[3123]},{"teal":3156,"source":730,"pc":[3124]},{"teal":3157,"source":730,"pc":[3125]},{"teal":3158,"source":730,"pc":[3126,3127]},{"teal":3159,"source":730,"pc":[3128]},{"teal":3160,"source":730,"pc":[3129]},{"teal":3161,"source":730,"pc":[3130,3131]},{"teal":3162,"source":730,"pc":[3132]},{"teal":3163,"source":730,"pc":[3133]},{"teal":3164,"source":730,"pc":[3134]},{"teal":3165,"source":730,"pc":[3135,3136]},{"teal":3166,"source":730,"pc":[3137,3138,3139]},{"teal":3167,"source":730,"pc":[3140]},{"teal":3168,"source":730,"pc":[3141]},{"teal":3169,"source":730,"pc":[3142]},{"teal":3170,"source":730,"pc":[3143,3144]},{"teal":3171,"source":730,"pc":[3145]},{"teal":3176,"source":735,"pc":[3146,3147]},{"teal":3177,"source":735,"pc":[3148,3149,3150]},{"teal":3178,"source":735,"pc":[3151]},{"teal":3179,"source":735,"pc":[3152]},{"teal":3180,"source":735,"pc":[3153]},{"teal":3181,"source":735,"pc":[3154,3155,3156]},{"teal":3189,"source":736,"pc":[3157]},{"teal":3190,"source":736,"pc":[3158,3159]},{"teal":3191,"source":736,"pc":[3160,3161]},{"teal":3192,"source":736,"pc":[3162,3163]},{"teal":3193,"source":736,"pc":[3164,3165]},{"teal":3197,"source":737,"pc":[3166,3167]},{"teal":3198,"source":737,"pc":[3168]},{"teal":3199,"source":737,"pc":[3169]},{"teal":3200,"source":737,"pc":[3170,3171]},{"teal":3201,"source":737,"pc":[3172,3173,3174]},{"teal":3202,"source":737,"pc":[3175]},{"teal":3203,"source":737,"pc":[3176]},{"teal":3204,"source":737,"pc":[3177]},{"teal":3205,"source":737,"pc":[3178,3179]},{"teal":3206,"source":737,"pc":[3180]},{"teal":3207,"source":737,"pc":[3181]},{"teal":3208,"source":737,"pc":[3182,3183]},{"teal":3212,"source":738,"pc":[3184,3185]},{"teal":3213,"source":738,"pc":[3186,3187]},{"teal":3214,"source":738,"pc":[3188,3189]},{"teal":3215,"source":738,"pc":[3190]},{"teal":3216,"source":738,"pc":[3191,3192]},{"teal":3217,"source":738,"pc":[3193,3194]},{"teal":3218,"source":738,"pc":[3195]},{"teal":3219,"source":738,"pc":[3196,3197]},{"teal":3222,"source":736,"pc":[3198]},{"teal":3223,"source":736,"pc":[3199,3200]},{"teal":3226,"source":736,"pc":[3201]},{"teal":3239,"source":741,"pc":[3202,3203]},{"teal":3240,"source":742,"pc":[3204,3205]},{"teal":3241,"source":742,"pc":[3206,3207,3208]},{"teal":3242,"source":742,"pc":[3209]},{"teal":3243,"source":742,"pc":[3210]},{"teal":3244,"source":743,"pc":[3211,3212]},{"teal":3245,"source":743,"pc":[3213,3214,3215]},{"teal":3246,"source":743,"pc":[3216]},{"teal":3247,"source":743,"pc":[3217]},{"teal":3248,"source":743,"pc":[3218]},{"teal":3249,"source":743,"pc":[3219]},{"teal":3250,"source":743,"pc":[3220,3221]},{"teal":3251,"source":743,"pc":[3222]},{"teal":3254,"source":743,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3223]},{"teal":3255,"source":743,"pc":[3224,3225,3226]},{"teal":3256,"source":743,"pc":[3227]},{"teal":3257,"source":744,"pc":[3228,3229]},{"teal":3258,"source":744,"pc":[3230,3231,3232]},{"teal":3259,"source":744,"pc":[3233]},{"teal":3260,"source":744,"pc":[3234]},{"teal":3261,"source":744,"pc":[3235]},{"teal":3262,"source":745,"pc":[3236,3237]},{"teal":3263,"source":745,"pc":[3238]},{"teal":3264,"source":746,"pc":[3239,3240]},{"teal":3265,"source":746,"pc":[3241]},{"teal":3266,"source":746,"pc":[3242]},{"teal":3267,"source":748,"pc":[3243,3244]},{"teal":3268,"source":748,"pc":[3245]},{"teal":3269,"source":748,"pc":[3246]},{"teal":3270,"source":747,"pc":[3247,3248]},{"teal":3271,"source":747,"pc":[3249]},{"teal":3272,"source":747,"pc":[3250]},{"teal":3273,"source":741,"pc":[3251]},{"teal":3274,"source":741,"pc":[3252]},{"teal":3275,"source":721,"pc":[3253,3254,3255]},{"teal":3289,"source":751,"pc":[3256,3257]},{"teal":3290,"source":752,"pc":[3258,3259]},{"teal":3291,"source":752,"pc":[3260,3261,3262]},{"teal":3292,"source":752,"pc":[3263]},{"teal":3293,"source":752,"pc":[3264]},{"teal":3294,"source":753,"pc":[3265,3266]},{"teal":3295,"source":753,"pc":[3267,3268,3269]},{"teal":3296,"source":753,"pc":[3270]},{"teal":3297,"source":753,"pc":[3271]},{"teal":3298,"source":753,"pc":[3272]},{"teal":3299,"source":753,"pc":[3273]},{"teal":3300,"source":753,"pc":[3274,3275]},{"teal":3301,"source":753,"pc":[3276]},{"teal":3304,"source":753,"errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3277]},{"teal":3305,"source":753,"pc":[3278,3279,3280]},{"teal":3306,"source":753,"pc":[3281]},{"teal":3307,"source":754,"pc":[3282,3283]},{"teal":3308,"source":754,"pc":[3284,3285,3286]},{"teal":3309,"source":754,"pc":[3287]},{"teal":3310,"source":754,"pc":[3288]},{"teal":3311,"source":754,"pc":[3289]},{"teal":3312,"source":755,"pc":[3290,3291]},{"teal":3313,"source":755,"pc":[3292]},{"teal":3314,"source":756,"pc":[3293,3294]},{"teal":3315,"source":756,"pc":[3295]},{"teal":3316,"source":756,"pc":[3296]},{"teal":3317,"source":759,"pc":[3297,3298]},{"teal":3318,"source":759,"pc":[3299]},{"teal":3319,"source":758,"pc":[3300,3301]},{"teal":3320,"source":758,"pc":[3302]},{"teal":3321,"source":751,"pc":[3303]},{"teal":3322,"source":751,"pc":[3304]},{"teal":3328,"source":763,"pc":[3305,3306]},{"teal":3329,"source":763,"pc":[3307,3308,3309]},{"teal":3334,"source":765,"pc":[3310,3311]},{"teal":3335,"source":765,"pc":[3312,3313]},{"teal":3336,"source":765,"pc":[3314,3315,3316]},{"teal":3337,"source":765,"pc":[3317]},{"teal":3338,"source":765,"pc":[3318]},{"teal":3339,"source":765,"pc":[3319]},{"teal":3340,"source":765,"pc":[3320,3321]},{"teal":3341,"source":765,"pc":[3322]},{"teal":3342,"source":765,"pc":[3323]},{"teal":3343,"source":765,"pc":[3324]},{"teal":3344,"source":765,"pc":[3325]},{"teal":3345,"source":765,"pc":[3326,3327]},{"teal":3346,"source":765,"pc":[3328,3329]},{"teal":3347,"source":765,"pc":[3330,3331,3332]},{"teal":3348,"source":765,"pc":[3333]},{"teal":3349,"source":765,"pc":[3334]},{"teal":3350,"source":765,"pc":[3335]},{"teal":3351,"source":765,"pc":[3336,3337]},{"teal":3352,"source":765,"pc":[3338]},{"teal":3353,"source":765,"pc":[3339]},{"teal":3354,"source":765,"pc":[3340]},{"teal":3355,"source":765,"pc":[3341]},{"teal":3356,"source":765,"pc":[3342,3343]},{"teal":3357,"source":765,"pc":[3344]},{"teal":3358,"source":765,"pc":[3345,3346]},{"teal":3359,"source":765,"pc":[3347,3348,3349]},{"teal":3360,"source":765,"pc":[3350]},{"teal":3361,"source":765,"pc":[3351]},{"teal":3362,"source":765,"pc":[3352]},{"teal":3363,"source":765,"pc":[3353,3354]},{"teal":3364,"source":765,"pc":[3355]},{"teal":3365,"source":765,"pc":[3356]},{"teal":3366,"source":765,"pc":[3357]},{"teal":3367,"source":765,"pc":[3358]},{"teal":3368,"source":765,"pc":[3359]},{"teal":3369,"source":765,"pc":[3360,3361,3362]},{"teal":3370,"source":765,"pc":[3363]},{"teal":3371,"source":765,"pc":[3364,3365]},{"teal":3372,"source":765,"pc":[3366,3367,3368]},{"teal":3373,"source":765,"pc":[3369]},{"teal":3374,"source":765,"pc":[3370]},{"teal":3375,"source":765,"pc":[3371]},{"teal":3376,"source":765,"pc":[3372,3373]},{"teal":3377,"source":765,"pc":[3374]},{"teal":3385,"source":768,"pc":[3375,3376]},{"teal":3386,"source":768,"pc":[3377,3378,3379]},{"teal":3387,"source":768,"pc":[3380]},{"teal":3388,"source":768,"pc":[3381]},{"teal":3389,"source":769,"pc":[3382,3383]},{"teal":3390,"source":769,"pc":[3384,3385,3386]},{"teal":3391,"source":769,"pc":[3387]},{"teal":3392,"source":769,"pc":[3388]},{"teal":3393,"source":769,"pc":[3389]},{"teal":3394,"source":770,"pc":[3390,3391]},{"teal":3395,"source":770,"pc":[3392,3393,3394]},{"teal":3396,"source":770,"pc":[3395]},{"teal":3397,"source":770,"pc":[3396]},{"teal":3398,"source":770,"pc":[3397]},{"teal":3399,"source":767,"pc":[3398,3399]},{"teal":3400,"source":767,"pc":[3400,3401,3402]},{"teal":3401,"source":767,"pc":[3403,3404]},{"teal":3405,"source":772,"pc":[3405,3406]},{"teal":3406,"source":772,"pc":[3407,3408]},{"teal":3407,"source":772,"pc":[3409,3410]},{"teal":3408,"source":772,"pc":[3411]},{"teal":3409,"source":772,"pc":[3412]},{"teal":3410,"source":772,"pc":[3413,3414]},{"teal":3414,"source":773,"pc":[3415,3416]},{"teal":3415,"source":773,"pc":[3417,3418]},{"teal":3416,"source":773,"pc":[3419,3420]},{"teal":3417,"source":773,"pc":[3421]},{"teal":3418,"source":773,"pc":[3422]},{"teal":3419,"source":773,"pc":[3423,3424]},{"teal":3424,"source":775,"pc":[3425,3426]},{"teal":3425,"source":775,"pc":[3427,3428,3429]},{"teal":3430,"source":776,"pc":[3430,3431]},{"teal":3431,"source":776,"pc":[3432]},{"teal":3432,"source":776,"pc":[3433]},{"teal":3433,"source":776,"pc":[3434]},{"teal":3434,"source":776,"pc":[3435,3436]},{"teal":3435,"source":776,"pc":[3437,3438,3439]},{"teal":3436,"source":776,"pc":[3440]},{"teal":3437,"source":776,"pc":[3441]},{"teal":3438,"source":776,"pc":[3442]},{"teal":3439,"source":776,"pc":[3443,3444]},{"teal":3440,"source":776,"pc":[3445]},{"teal":3441,"source":776,"pc":[3446]},{"teal":3442,"source":776,"pc":[3447]},{"teal":3443,"source":776,"pc":[3448]},{"teal":3444,"source":776,"pc":[3449]},{"teal":3445,"source":776,"pc":[3450]},{"teal":3446,"source":776,"pc":[3451,3452]},{"teal":3447,"source":776,"pc":[3453,3454,3455]},{"teal":3448,"source":776,"pc":[3456]},{"teal":3449,"source":776,"pc":[3457]},{"teal":3450,"source":776,"pc":[3458]},{"teal":3451,"source":776,"pc":[3459,3460]},{"teal":3452,"source":776,"pc":[3461]},{"teal":3458,"source":779,"pc":[3462,3463]},{"teal":3459,"source":779,"pc":[3464,3465,3466]},{"teal":3464,"source":780,"pc":[3467,3468]},{"teal":3465,"source":780,"pc":[3469]},{"teal":3466,"source":780,"pc":[3470]},{"teal":3467,"source":780,"pc":[3471]},{"teal":3468,"source":780,"pc":[3472,3473]},{"teal":3469,"source":780,"pc":[3474]},{"teal":3470,"source":780,"pc":[3475]},{"teal":3475,"source":700,"pc":[3476]},{"teal":3480,"source":796,"pc":[3477]},{"teal":3483,"source":800,"pc":[3478,3479,3480]},{"teal":3484,"source":800,"pc":[3481]},{"teal":3487,"source":799,"pc":[3482,3483,3484]},{"teal":3488,"source":799,"pc":[3485]},{"teal":3489,"source":799,"pc":[3486]},{"teal":3490,"source":799,"pc":[3487,3488]},{"teal":3491,"source":799,"pc":[3489]},{"teal":3494,"source":799,"errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3490]},{"teal":3497,"source":798,"pc":[3491,3492,3493]},{"teal":3498,"source":798,"pc":[3494]},{"teal":3501,"source":796,"pc":[3495,3496,3497]},{"teal":3502,"source":796,"pc":[3498]},{"teal":3503,"source":796,"pc":[3499]},{"teal":3504,"source":796,"pc":[3500]},{"teal":3505,"source":796,"pc":[3501]},{"teal":3519,"source":796,"pc":[3502,3503,3504]},{"teal":3522,"source":796,"pc":[3505]},{"teal":3523,"source":796,"pc":[3506,3507]},{"teal":3527,"source":802,"pc":[3508]},{"teal":3528,"source":802,"pc":[3509,3510]},{"teal":3532,"source":803,"pc":[3511]},{"teal":3533,"source":803,"pc":[3512,3513]},{"teal":3537,"source":811,"pc":[3514,3515]},{"teal":3538,"source":811,"pc":[3516,3517,3518]},{"teal":3539,"source":811,"pc":[3519,3520]},{"teal":3544,"source":814,"pc":[3521]},{"teal":3545,"source":814,"pc":[3522,3523]},{"teal":3546,"source":814,"pc":[3524]},{"teal":3547,"source":814,"pc":[3525]},{"teal":3548,"source":814,"pc":[3526]},{"teal":3549,"source":814,"pc":[3527]},{"teal":3550,"source":814,"pc":[3528,3529,3530]},{"teal":3555,"source":815,"pc":[3531]},{"teal":3556,"source":815,"pc":[3532,3533]},{"teal":3557,"source":815,"pc":[3534]},{"teal":3558,"source":815,"pc":[3535]},{"teal":3561,"source":815,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3536]},{"teal":3562,"source":815,"pc":[3537,3538]},{"teal":3566,"source":816,"pc":[3539,3540]},{"teal":3567,"source":816,"pc":[3541]},{"teal":3568,"source":816,"pc":[3542]},{"teal":3569,"source":816,"pc":[3543]},{"teal":3573,"source":817,"pc":[3544]},{"teal":3574,"source":817,"pc":[3545,3546]},{"teal":3579,"source":817,"pc":[3547,3548]},{"teal":3580,"source":817,"pc":[3549,3550]},{"teal":3581,"source":817,"pc":[3551]},{"teal":3582,"source":817,"pc":[3552,3553,3554]},{"teal":3587,"source":818,"pc":[3555,3556]},{"teal":3588,"source":818,"pc":[3557,3558]},{"teal":3589,"source":818,"pc":[3559]},{"teal":3590,"source":818,"pc":[3560,3561,3562]},{"teal":3595,"source":819,"pc":[3563]},{"teal":3596,"source":819,"pc":[3564,3565]},{"teal":3597,"source":819,"pc":[3566,3567]},{"teal":3598,"source":819,"pc":[3568]},{"teal":3599,"source":819,"pc":[3569,3570]},{"teal":3600,"source":819,"pc":[3571,3572]},{"teal":3601,"source":819,"pc":[3573]},{"teal":3602,"source":819,"pc":[3574,3575]},{"teal":3603,"source":819,"pc":[3576,3577]},{"teal":3604,"source":819,"pc":[3578,3579]},{"teal":3605,"source":819,"pc":[3580,3581]},{"teal":3606,"source":819,"pc":[3582]},{"teal":3612,"source":821,"pc":[3583,3584]},{"teal":3613,"source":821,"pc":[3585,3586]},{"teal":3614,"source":821,"pc":[3587]},{"teal":3615,"source":821,"pc":[3588]},{"teal":3616,"source":821,"pc":[3589]},{"teal":3617,"source":821,"pc":[3590]},{"teal":3618,"source":821,"pc":[3591]},{"teal":3619,"source":821,"pc":[3592]},{"teal":3620,"source":821,"pc":[3593]},{"teal":3621,"source":821,"pc":[3594]},{"teal":3622,"source":821,"pc":[3595]},{"teal":3623,"source":821,"pc":[3596,3597,3598]},{"teal":3626,"source":822,"pc":[3599,3600,3601]},{"teal":3631,"source":824,"pc":[3602]},{"teal":3632,"source":824,"pc":[3603,3604]},{"teal":3637,"source":825,"pc":[3605,3606]},{"teal":3638,"source":825,"pc":[3607,3608]},{"teal":3639,"source":825,"pc":[3609]},{"teal":3640,"source":825,"pc":[3610]},{"teal":3641,"source":825,"pc":[3611]},{"teal":3642,"source":825,"pc":[3612]},{"teal":3643,"source":825,"pc":[3613]},{"teal":3644,"source":825,"pc":[3614]},{"teal":3645,"source":825,"pc":[3615]},{"teal":3646,"source":825,"pc":[3616,3617]},{"teal":3647,"source":825,"pc":[3618]},{"teal":3648,"source":825,"pc":[3619,3620,3621]},{"teal":3653,"source":827,"pc":[3622]},{"teal":3654,"source":827,"pc":[3623,3624]},{"teal":3661,"source":829,"pc":[3625,3626]},{"teal":3662,"source":829,"pc":[3627,3628]},{"teal":3663,"source":829,"pc":[3629,3630]},{"teal":3664,"source":829,"pc":[3631]},{"teal":3665,"source":829,"pc":[3632]},{"teal":3666,"source":829,"pc":[3633]},{"teal":3667,"source":829,"pc":[3634]},{"teal":3668,"source":829,"pc":[3635]},{"teal":3669,"source":829,"pc":[3636]},{"teal":3670,"source":829,"pc":[3637]},{"teal":3671,"source":829,"pc":[3638]},{"teal":3672,"source":829,"pc":[3639]},{"teal":3673,"source":829,"pc":[3640,3641]},{"teal":3674,"source":829,"pc":[3642]},{"teal":3675,"source":829,"pc":[3643]},{"teal":3676,"source":829,"pc":[3644,3645]},{"teal":3677,"source":829,"pc":[3646]},{"teal":3678,"source":829,"pc":[3647]},{"teal":3679,"source":829,"pc":[3648]},{"teal":3680,"source":829,"pc":[3649,3650]},{"teal":3681,"source":829,"pc":[3651]},{"teal":3682,"source":829,"pc":[3652]},{"teal":3683,"source":829,"pc":[3653,3654]},{"teal":3684,"source":829,"pc":[3655]},{"teal":3685,"source":829,"pc":[3656]},{"teal":3686,"source":830,"pc":[3657,3658]},{"teal":3687,"source":829,"pc":[3659]},{"teal":3688,"source":831,"pc":[3660,3661]},{"teal":3689,"source":830,"pc":[3662]},{"teal":3690,"source":828,"pc":[3663,3664,3665]},{"teal":3695,"source":833,"pc":[3666,3667]},{"teal":3696,"source":833,"pc":[3668,3669]},{"teal":3697,"source":833,"pc":[3670]},{"teal":3698,"source":833,"pc":[3671]},{"teal":3699,"source":833,"pc":[3672]},{"teal":3700,"source":833,"pc":[3673]},{"teal":3701,"source":833,"pc":[3674,3675]},{"teal":3702,"source":833,"pc":[3676]},{"teal":3703,"source":833,"pc":[3677,3678]},{"teal":3704,"source":833,"pc":[3679]},{"teal":3705,"source":833,"pc":[3680]},{"teal":3706,"source":833,"pc":[3681,3682]},{"teal":3707,"source":833,"pc":[3683]},{"teal":3708,"source":833,"pc":[3684]},{"teal":3709,"source":833,"pc":[3685,3686,3687]},{"teal":3718,"source":817,"pc":[3688,3689]},{"teal":3719,"source":817,"pc":[3690]},{"teal":3720,"source":817,"pc":[3691]},{"teal":3721,"source":817,"pc":[3692,3693]},{"teal":3722,"source":817,"pc":[3694,3695,3696]},{"teal":3732,"source":841,"pc":[3697,3698]},{"teal":3733,"source":841,"pc":[3699,3700]},{"teal":3734,"source":841,"pc":[3701]},{"teal":3735,"source":841,"pc":[3702]},{"teal":3736,"source":841,"pc":[3703,3704]},{"teal":3737,"source":841,"pc":[3705]},{"teal":3738,"source":841,"pc":[3706]},{"teal":3739,"source":841,"pc":[3707,3708]},{"teal":3740,"source":841,"pc":[3709]},{"teal":3741,"source":841,"pc":[3710]},{"teal":3742,"source":841,"pc":[3711]},{"teal":3745,"source":840,"errorMessage":"must stake at least the minimum for this pool","pc":[3712]},{"teal":3749,"source":846,"pc":[3713,3714]},{"teal":3750,"source":846,"pc":[3715,3716]},{"teal":3751,"source":846,"pc":[3717]},{"teal":3752,"source":846,"pc":[3718,3719]},{"teal":3753,"source":846,"pc":[3720]},{"teal":3754,"source":846,"pc":[3721]},{"teal":3755,"source":846,"pc":[3722,3723]},{"teal":3756,"source":846,"pc":[3724]},{"teal":3757,"source":846,"pc":[3725,3726]},{"teal":3761,"source":847,"pc":[3727,3728]},{"teal":3762,"source":847,"pc":[3729,3730]},{"teal":3763,"source":847,"pc":[3731]},{"teal":3764,"source":847,"pc":[3732,3733]},{"teal":3765,"source":847,"pc":[3734]},{"teal":3766,"source":847,"pc":[3735]},{"teal":3767,"source":847,"pc":[3736,3737]},{"teal":3768,"source":847,"pc":[3738]},{"teal":3769,"source":847,"pc":[3739]},{"teal":3770,"source":847,"pc":[3740,3741]},{"teal":3774,"source":848,"pc":[3742]},{"teal":3775,"source":848,"pc":[3743,3744]},{"teal":3780,"source":848,"pc":[3745,3746]},{"teal":3781,"source":848,"pc":[3747,3748]},{"teal":3782,"source":848,"pc":[3749]},{"teal":3783,"source":848,"pc":[3750,3751,3752]},{"teal":3788,"source":849,"pc":[3753,3754]},{"teal":3789,"source":849,"pc":[3755,3756]},{"teal":3790,"source":849,"pc":[3757,3758]},{"teal":3791,"source":849,"pc":[3759]},{"teal":3792,"source":849,"pc":[3760,3761]},{"teal":3793,"source":849,"pc":[3762]},{"teal":3794,"source":849,"pc":[3763]},{"teal":3795,"source":849,"pc":[3764]},{"teal":3796,"source":849,"pc":[3765]},{"teal":3797,"source":849,"pc":[3766,3767]},{"teal":3798,"source":849,"pc":[3768]},{"teal":3799,"source":849,"pc":[3769,3770]},{"teal":3800,"source":849,"pc":[3771]},{"teal":3801,"source":849,"pc":[3772,3773,3774]},{"teal":3810,"source":851,"pc":[3775,3776]},{"teal":3811,"source":851,"pc":[3777]},{"teal":3812,"source":851,"pc":[3778,3779]},{"teal":3813,"source":851,"pc":[3780]},{"teal":3814,"source":851,"pc":[3781]},{"teal":3815,"source":851,"pc":[3782]},{"teal":3816,"source":851,"pc":[3783]},{"teal":3817,"source":851,"pc":[3784,3785]},{"teal":3818,"source":851,"pc":[3786,3787]},{"teal":3819,"source":851,"pc":[3788,3789]},{"teal":3820,"source":851,"pc":[3790]},{"teal":3821,"source":851,"pc":[3791]},{"teal":3822,"source":851,"pc":[3792]},{"teal":3823,"source":851,"pc":[3793]},{"teal":3824,"source":851,"pc":[3794]},{"teal":3825,"source":851,"pc":[3795]},{"teal":3826,"source":851,"pc":[3796]},{"teal":3827,"source":851,"pc":[3797]},{"teal":3828,"source":852,"pc":[3798,3799]},{"teal":3829,"source":852,"pc":[3800]},{"teal":3830,"source":852,"pc":[3801,3802]},{"teal":3831,"source":852,"pc":[3803]},{"teal":3832,"source":853,"pc":[3804]},{"teal":3833,"source":853,"pc":[3805,3806]},{"teal":3834,"source":853,"pc":[3807]},{"teal":3835,"source":850,"pc":[3808]},{"teal":3836,"source":850,"pc":[3809,3810,3811]},{"teal":3843,"source":848,"pc":[3812,3813]},{"teal":3844,"source":848,"pc":[3814]},{"teal":3845,"source":848,"pc":[3815]},{"teal":3846,"source":848,"pc":[3816,3817]},{"teal":3847,"source":848,"pc":[3818,3819,3820]},{"teal":3852,"source":858,"pc":[3821,3822]},{"teal":3853,"source":858,"pc":[3823]},{"teal":3854,"source":858,"pc":[3824,3825]},{"teal":3855,"source":858,"pc":[3826]},{"teal":3856,"source":858,"pc":[3827,3828]},{"teal":3857,"source":858,"pc":[3829]},{"teal":3858,"source":858,"pc":[3830,3831]},{"teal":3859,"source":858,"pc":[3832]},{"teal":3860,"source":858,"pc":[3833,3834]},{"teal":3861,"source":858,"pc":[3835]},{"teal":3862,"source":858,"pc":[3836]},{"teal":3863,"source":858,"pc":[3837,3838]},{"teal":3864,"source":858,"pc":[3839]},{"teal":3865,"source":858,"pc":[3840]},{"teal":3869,"source":796,"pc":[3841,3842]},{"teal":3872,"source":796,"pc":[3843,3844]},{"teal":3873,"source":796,"pc":[3845]},{"teal":3878,"source":872,"pc":[3846,3847,3848]},{"teal":3879,"source":872,"pc":[3849]},{"teal":3882,"source":872,"pc":[3850,3851,3852]},{"teal":3883,"source":872,"pc":[3853]},{"teal":3886,"source":872,"pc":[3854,3855,3856]},{"teal":3887,"source":872,"pc":[3857]},{"teal":3890,"source":872,"pc":[3858,3859,3860]},{"teal":3891,"source":872,"pc":[3861]},{"teal":3892,"source":872,"pc":[3862]},{"teal":3906,"source":872,"pc":[3863,3864,3865]},{"teal":3909,"source":872,"pc":[3866]},{"teal":3910,"source":872,"pc":[3867,3868]},{"teal":3914,"source":873,"pc":[3869,3870]},{"teal":3915,"source":873,"pc":[3871,3872,3873]},{"teal":3919,"source":875,"pc":[3874,3875]},{"teal":3920,"source":875,"pc":[3876,3877]},{"teal":3921,"source":875,"pc":[3878]},{"teal":3922,"source":875,"pc":[3879,3880]},{"teal":3923,"source":875,"pc":[3881]},{"teal":3924,"source":875,"pc":[3882]},{"teal":3925,"source":875,"pc":[3883,3884]},{"teal":3926,"source":875,"pc":[3885]},{"teal":3927,"source":875,"pc":[3886,3887]},{"teal":3931,"source":876,"pc":[3888,3889]},{"teal":3932,"source":876,"pc":[3890]},{"teal":3933,"source":876,"pc":[3891]},{"teal":3934,"source":876,"pc":[3892]},{"teal":3935,"source":876,"pc":[3893,3894,3895]},{"teal":3936,"source":876,"pc":[3896,3897]},{"teal":3937,"source":876,"pc":[3898]},{"teal":3938,"source":876,"pc":[3899]},{"teal":3939,"source":876,"pc":[3900]},{"teal":3943,"source":876,"errorMessage":"node number out of allowable range","pc":[3901]},{"teal":3947,"source":878,"pc":[3902]},{"teal":3948,"source":878,"pc":[3903,3904]},{"teal":3953,"source":878,"pc":[3905,3906]},{"teal":3954,"source":878,"pc":[3907]},{"teal":3955,"source":878,"pc":[3908]},{"teal":3956,"source":878,"pc":[3909,3910,3911]},{"teal":3960,"source":879,"pc":[3912]},{"teal":3961,"source":879,"pc":[3913,3914]},{"teal":3966,"source":879,"pc":[3915,3916]},{"teal":3967,"source":879,"pc":[3917,3918]},{"teal":3968,"source":879,"pc":[3919]},{"teal":3969,"source":879,"pc":[3920,3921,3922]},{"teal":3974,"source":880,"pc":[3923,3924]},{"teal":3975,"source":880,"pc":[3925]},{"teal":3976,"source":880,"pc":[3926,3927]},{"teal":3977,"source":880,"pc":[3928]},{"teal":3978,"source":880,"pc":[3929]},{"teal":3979,"source":880,"pc":[3930]},{"teal":3980,"source":880,"pc":[3931]},{"teal":3981,"source":880,"pc":[3932]},{"teal":3982,"source":880,"pc":[3933,3934]},{"teal":3983,"source":880,"pc":[3935]},{"teal":3984,"source":880,"pc":[3936]},{"teal":3985,"source":880,"pc":[3937]},{"teal":3986,"source":880,"pc":[3938]},{"teal":3987,"source":880,"pc":[3939]},{"teal":3988,"source":880,"pc":[3940]},{"teal":3989,"source":880,"pc":[3941,3942]},{"teal":3990,"source":880,"pc":[3943]},{"teal":3991,"source":880,"pc":[3944,3945,3946]},{"teal":3996,"source":881,"pc":[3947,3948]},{"teal":3997,"source":881,"pc":[3949]},{"teal":3998,"source":881,"pc":[3950]},{"teal":3999,"source":881,"pc":[3951,3952]},{"teal":4000,"source":881,"pc":[3953]},{"teal":4003,"source":881,"errorMessage":"can't move to same node","pc":[3954]},{"teal":4007,"source":883,"pc":[3955,3956]},{"teal":4008,"source":883,"pc":[3957,3958]},{"teal":4009,"source":883,"pc":[3959]},{"teal":4010,"source":883,"pc":[3960]},{"teal":4011,"source":883,"pc":[3961]},{"teal":4012,"source":883,"pc":[3962]},{"teal":4013,"source":883,"pc":[3963]},{"teal":4014,"source":883,"pc":[3964,3965]},{"teal":4015,"source":883,"pc":[3966]},{"teal":4016,"source":883,"pc":[3967]},{"teal":4017,"source":883,"pc":[3968]},{"teal":4018,"source":883,"pc":[3969,3970]},{"teal":4019,"source":883,"pc":[3971]},{"teal":4020,"source":883,"pc":[3972,3973]},{"teal":4021,"source":883,"pc":[3974]},{"teal":4022,"source":883,"pc":[3975]},{"teal":4023,"source":883,"pc":[3976,3977]},{"teal":4024,"source":883,"pc":[3978]},{"teal":4030,"source":886,"pc":[3979]},{"teal":4031,"source":886,"pc":[3980,3981]},{"teal":4032,"source":886,"pc":[3982,3983]},{"teal":4033,"source":886,"pc":[3984,3985,3986,3987,3988,3989]},{"teal":4034,"source":886,"pc":[3990,3991]},{"teal":4038,"source":887,"pc":[3992,3993]},{"teal":4039,"source":887,"pc":[3994,3995]},{"teal":4042,"source":886,"pc":[3996]},{"teal":4043,"source":886,"pc":[3997,3998]},{"teal":4046,"source":886,"pc":[3999]},{"teal":4050,"source":891,"pc":[4000,4001]},{"teal":4051,"source":891,"pc":[4002,4003]},{"teal":4052,"source":891,"pc":[4004,4005]},{"teal":4053,"source":891,"pc":[4006,4007,4008]},{"teal":4057,"source":892,"pc":[4009]},{"teal":4064,"source":879,"pc":[4010,4011]},{"teal":4065,"source":879,"pc":[4012]},{"teal":4066,"source":879,"pc":[4013]},{"teal":4067,"source":879,"pc":[4014,4015]},{"teal":4068,"source":879,"pc":[4016,4017,4018]},{"teal":4075,"source":878,"pc":[4019,4020]},{"teal":4076,"source":878,"pc":[4021]},{"teal":4077,"source":878,"pc":[4022]},{"teal":4078,"source":878,"pc":[4023,4024]},{"teal":4079,"source":878,"pc":[4025,4026,4027]},{"teal":4083,"source":896,"errorMessage":"couldn't find pool app id in nodes to move","pc":[4028]},{"teal":4084,"source":872,"pc":[4029]},{"teal":4089,"source":910,"pc":[4030]},{"teal":4092,"source":910,"pc":[4031,4032,4033]},{"teal":4093,"source":910,"pc":[4034]},{"teal":4094,"source":910,"pc":[4035]},{"teal":4095,"source":910,"pc":[4036,4037]},{"teal":4096,"source":910,"pc":[4038]},{"teal":4099,"source":910,"errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[4039]},{"teal":4102,"source":910,"pc":[4040,4041,4042]},{"teal":4103,"source":910,"pc":[4043]},{"teal":4106,"source":910,"pc":[4044,4045,4046]},{"teal":4107,"source":910,"pc":[4047]},{"teal":4108,"source":910,"pc":[4048]},{"teal":4109,"source":910,"pc":[4049]},{"teal":4110,"source":910,"pc":[4050]},{"teal":4111,"source":910,"pc":[4051]},{"teal":4125,"source":910,"pc":[4052,4053,4054]},{"teal":4128,"source":910,"pc":[4055]},{"teal":4129,"source":910,"pc":[4056,4057]},{"teal":4133,"source":911,"pc":[4058,4059]},{"teal":4134,"source":911,"pc":[4060,4061,4062]},{"teal":4138,"source":912,"pc":[4063,4064]},{"teal":4139,"source":912,"pc":[4065]},{"teal":4140,"source":912,"pc":[4066]},{"teal":4141,"source":912,"pc":[4067,4068]},{"teal":4142,"source":912,"pc":[4069]},{"teal":4143,"source":912,"pc":[4070]},{"teal":4144,"source":912,"pc":[4071,4072]},{"teal":4145,"source":912,"pc":[4073]},{"teal":4146,"source":912,"pc":[4074]},{"teal":4147,"source":912,"pc":[4075,4076]},{"teal":4151,"source":913,"pc":[4077,4078]},{"teal":4152,"source":913,"pc":[4079]},{"teal":4153,"source":913,"pc":[4080]},{"teal":4154,"source":913,"pc":[4081,4082]},{"teal":4155,"source":913,"pc":[4083]},{"teal":4156,"source":913,"pc":[4084]},{"teal":4157,"source":913,"pc":[4085,4086]},{"teal":4158,"source":913,"pc":[4087]},{"teal":4159,"source":913,"pc":[4088]},{"teal":4160,"source":913,"pc":[4089,4090]},{"teal":4164,"source":914,"pc":[4091,4092]},{"teal":4165,"source":914,"pc":[4093]},{"teal":4166,"source":914,"pc":[4094]},{"teal":4169,"source":914,"errorMessage":"this validator doesn't have a reward token defined","pc":[4095]},{"teal":4173,"source":915,"pc":[4096,4097]},{"teal":4174,"source":915,"pc":[4098]},{"teal":4175,"source":915,"pc":[4099]},{"teal":4176,"source":915,"pc":[4100,4101]},{"teal":4177,"source":915,"pc":[4102]},{"teal":4178,"source":915,"pc":[4103]},{"teal":4179,"source":915,"pc":[4104,4105]},{"teal":4180,"source":915,"pc":[4106]},{"teal":4181,"source":915,"pc":[4107]},{"teal":4182,"source":915,"pc":[4108,4109]},{"teal":4187,"source":918,"pc":[4110,4111]},{"teal":4188,"source":918,"pc":[4112,4113]},{"teal":4189,"source":918,"pc":[4114]},{"teal":4190,"source":918,"pc":[4115,4116]},{"teal":4191,"source":918,"pc":[4117,4118]},{"teal":4192,"source":918,"pc":[4119]},{"teal":4193,"source":918,"pc":[4120,4121]},{"teal":4194,"source":918,"pc":[4122]},{"teal":4195,"source":917,"pc":[4123,4124]},{"teal":4202,"source":921,"pc":[4125]},{"teal":4203,"source":921,"pc":[4126,4127]},{"teal":4204,"source":921,"pc":[4128,4129]},{"teal":4205,"source":921,"pc":[4130,4131]},{"teal":4206,"source":921,"pc":[4132,4133]},{"teal":4210,"source":922,"pc":[4134,4135]},{"teal":4211,"source":922,"pc":[4136,4137]},{"teal":4215,"source":923,"pc":[4138,4139]},{"teal":4216,"source":923,"pc":[4140,4141]},{"teal":4217,"source":923,"pc":[4142,4143]},{"teal":4218,"source":923,"pc":[4144]},{"teal":4219,"source":923,"pc":[4145,4146]},{"teal":4220,"source":923,"pc":[4147,4148]},{"teal":4221,"source":923,"pc":[4149]},{"teal":4222,"source":923,"pc":[4150,4151]},{"teal":4225,"source":921,"pc":[4152]},{"teal":4226,"source":921,"pc":[4153,4154]},{"teal":4229,"source":921,"pc":[4155]},{"teal":4236,"source":926,"pc":[4156,4157]},{"teal":4237,"source":926,"pc":[4158,4159]},{"teal":4238,"source":926,"pc":[4160]},{"teal":4239,"source":926,"pc":[4161,4162]},{"teal":4240,"source":926,"pc":[4163,4164]},{"teal":4241,"source":926,"pc":[4165]},{"teal":4242,"source":926,"pc":[4166,4167]},{"teal":4243,"source":926,"pc":[4168]},{"teal":4246,"source":925,"errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[4169]},{"teal":4250,"source":929,"pc":[4170,4171]},{"teal":4253,"source":910,"pc":[4172,4173]},{"teal":4256,"source":910,"pc":[4174,4175]},{"teal":4257,"source":910,"pc":[4176]},{"teal":4261,"source":1021,"pc":[4177,4178,4179]},{"teal":4268,"source":1023,"pc":[4180,4181]},{"teal":4269,"source":1023,"pc":[4182]},{"teal":4270,"source":1023,"pc":[4183,4184]},{"teal":4271,"source":1023,"pc":[4185]},{"teal":4272,"source":1023,"pc":[4186,4187]},{"teal":4273,"source":1023,"pc":[4188]},{"teal":4274,"source":1023,"pc":[4189]},{"teal":4275,"source":1023,"pc":[4190,4191]},{"teal":4276,"source":1023,"pc":[4192]},{"teal":4277,"source":1023,"pc":[4193]},{"teal":4280,"source":1022,"errorMessage":"can only be called by validator owner","pc":[4194]},{"teal":4281,"source":1021,"pc":[4195]},{"teal":4285,"source":1028,"pc":[4196,4197,4198]},{"teal":4293,"source":1030,"pc":[4199,4200]},{"teal":4294,"source":1030,"pc":[4201]},{"teal":4295,"source":1030,"pc":[4202,4203]},{"teal":4296,"source":1030,"pc":[4204]},{"teal":4297,"source":1030,"pc":[4205,4206]},{"teal":4298,"source":1030,"pc":[4207]},{"teal":4299,"source":1030,"pc":[4208]},{"teal":4300,"source":1030,"pc":[4209,4210]},{"teal":4301,"source":1030,"pc":[4211]},{"teal":4302,"source":1030,"pc":[4212]},{"teal":4303,"source":1030,"pc":[4213]},{"teal":4304,"source":1030,"pc":[4214,4215,4216]},{"teal":4305,"source":1031,"pc":[4217,4218]},{"teal":4306,"source":1031,"pc":[4219,4220]},{"teal":4307,"source":1031,"pc":[4221,4222]},{"teal":4308,"source":1031,"pc":[4223]},{"teal":4309,"source":1031,"pc":[4224,4225]},{"teal":4310,"source":1031,"pc":[4226]},{"teal":4311,"source":1031,"pc":[4227]},{"teal":4312,"source":1031,"pc":[4228,4229]},{"teal":4313,"source":1031,"pc":[4230]},{"teal":4314,"source":1031,"pc":[4231]},{"teal":4315,"source":1030,"pc":[4232]},{"teal":4319,"source":1029,"errorMessage":"can only be called by owner or manager of validator","pc":[4233]},{"teal":4320,"source":1028,"pc":[4234]},{"teal":4328,"source":1041,"pc":[4235,4236,4237]},{"teal":4332,"source":1042,"pc":[4238]},{"teal":4333,"source":1042,"pc":[4239,4240]},{"teal":4334,"source":1042,"pc":[4241,4242,4243]},{"teal":4335,"source":1042,"pc":[4244]},{"teal":4336,"source":1042,"pc":[4245]},{"teal":4337,"source":1042,"pc":[4246]},{"teal":4338,"source":1042,"pc":[4247]},{"teal":4339,"source":1042,"pc":[4248]},{"teal":4340,"source":1042,"pc":[4249]},{"teal":4343,"source":1042,"errorMessage":"the specified validator id isn't valid","pc":[4250]},{"teal":4347,"source":1043,"pc":[4251,4252]},{"teal":4348,"source":1043,"pc":[4253,4254,4255]},{"teal":4349,"source":1043,"pc":[4256]},{"teal":4350,"source":58,"pc":[4257]},{"teal":4351,"source":1043,"pc":[4258]},{"teal":4354,"source":1043,"errorMessage":"pool id not in valid range","pc":[4259]},{"teal":4361,"source":1045,"pc":[4260,4261]},{"teal":4362,"source":1045,"pc":[4262,4263,4264]},{"teal":4363,"source":1045,"pc":[4265]},{"teal":4364,"source":1045,"pc":[4266]},{"teal":4365,"source":1045,"pc":[4267]},{"teal":4366,"source":1045,"pc":[4268]},{"teal":4367,"source":1045,"pc":[4269,4270,4271]},{"teal":4368,"source":1045,"pc":[4272,4273]},{"teal":4369,"source":1045,"pc":[4274,4275,4276]},{"teal":4370,"source":1045,"pc":[4277]},{"teal":4371,"source":1045,"pc":[4278,4279]},{"teal":4372,"source":1045,"pc":[4280,4281]},{"teal":4373,"source":1045,"pc":[4282]},{"teal":4374,"source":1045,"pc":[4283,4284]},{"teal":4375,"source":1045,"pc":[4285,4286,4287]},{"teal":4376,"source":1045,"pc":[4288]},{"teal":4377,"source":1045,"pc":[4289]},{"teal":4378,"source":1045,"pc":[4290]},{"teal":4379,"source":1045,"pc":[4291,4292]},{"teal":4380,"source":1045,"pc":[4293]},{"teal":4381,"source":1045,"pc":[4294]},{"teal":4382,"source":1045,"pc":[4295]},{"teal":4383,"source":1045,"pc":[4296]},{"teal":4387,"source":1044,"errorMessage":"pool id outside of range of pools created for this validator","pc":[4297]},{"teal":4394,"source":1051,"pc":[4298,4299]},{"teal":4395,"source":1051,"pc":[4300,4301,4302]},{"teal":4396,"source":1051,"pc":[4303]},{"teal":4397,"source":1051,"pc":[4304,4305]},{"teal":4398,"source":1051,"pc":[4306,4307]},{"teal":4399,"source":1051,"pc":[4308,4309,4310]},{"teal":4400,"source":1051,"pc":[4311]},{"teal":4401,"source":1051,"pc":[4312]},{"teal":4402,"source":1051,"pc":[4313]},{"teal":4403,"source":1051,"pc":[4314,4315]},{"teal":4404,"source":1051,"pc":[4316]},{"teal":4405,"source":1051,"pc":[4317]},{"teal":4406,"source":1051,"pc":[4318]},{"teal":4407,"source":1051,"pc":[4319]},{"teal":4408,"source":1051,"pc":[4320]},{"teal":4409,"source":1051,"pc":[4321]},{"teal":4410,"source":1051,"pc":[4322,4323]},{"teal":4411,"source":1051,"pc":[4324,4325,4326]},{"teal":4412,"source":1051,"pc":[4327]},{"teal":4413,"source":1051,"pc":[4328]},{"teal":4414,"source":1051,"pc":[4329]},{"teal":4415,"source":1051,"pc":[4330,4331]},{"teal":4416,"source":1051,"pc":[4332]},{"teal":4417,"source":1051,"pc":[4333]},{"teal":4418,"source":1051,"pc":[4334]},{"teal":4421,"source":1050,"errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4335]},{"teal":4425,"source":1055,"pc":[4336,4337]},{"teal":4426,"source":1055,"pc":[4338,4339]},{"teal":4427,"source":1055,"pc":[4340,4341,4342]},{"teal":4428,"source":1055,"pc":[4343]},{"teal":4429,"source":1055,"pc":[4344,4345]},{"teal":4430,"source":1055,"pc":[4346]},{"teal":4431,"source":1055,"pc":[4347]},{"teal":4432,"source":1055,"pc":[4348]},{"teal":4436,"source":1057,"pc":[4349,4350]},{"teal":4437,"source":1057,"pc":[4351,4352,4353]},{"teal":4438,"source":1057,"pc":[4354]},{"teal":4439,"source":1057,"pc":[4355,4356]},{"teal":4440,"source":1057,"pc":[4357,4358,4359]},{"teal":4441,"source":1057,"pc":[4360]},{"teal":4442,"source":1057,"pc":[4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373]},{"teal":4443,"source":1057,"pc":[4374]},{"teal":4446,"source":1057,"errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4375]},{"teal":4447,"source":1057,"pc":[4376]},{"teal":4448,"source":1057,"pc":[4377]},{"teal":4452,"source":1058,"pc":[4378,4379]},{"teal":4453,"source":1058,"pc":[4380,4381,4382]},{"teal":4454,"source":1058,"pc":[4383]},{"teal":4455,"source":1058,"pc":[4384,4385]},{"teal":4456,"source":1058,"pc":[4386,4387,4388]},{"teal":4457,"source":1058,"pc":[4389]},{"teal":4458,"source":1058,"pc":[4390,4391,4392,4393,4394,4395,4396,4397]},{"teal":4459,"source":1058,"pc":[4398]},{"teal":4462,"source":1058,"errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4399]},{"teal":4463,"source":1058,"pc":[4400]},{"teal":4464,"source":1058,"pc":[4401]},{"teal":4465,"source":1041,"pc":[4402]},{"teal":4474,"source":1067,"pc":[4403,4404,4405]},{"teal":4477,"source":1067,"pc":[4406]},{"teal":4478,"source":1067,"pc":[4407]},{"teal":4482,"source":1068,"pc":[4408]},{"teal":4483,"source":1068,"pc":[4409,4410]},{"teal":4484,"source":1068,"pc":[4411]},{"teal":4485,"source":1068,"pc":[4412]},{"teal":4486,"source":1068,"pc":[4413,4414]},{"teal":4491,"source":1069,"pc":[4415,4416]},{"teal":4492,"source":1069,"pc":[4417]},{"teal":4493,"source":1068,"pc":[4418]},{"teal":4494,"source":1068,"pc":[4419,4420]},{"teal":4495,"source":1068,"pc":[4421]},{"teal":4496,"source":1068,"pc":[4422]},{"teal":4497,"source":1068,"pc":[4423,4424]},{"teal":4498,"source":1068,"pc":[4425]},{"teal":4499,"source":1069,"pc":[4426]},{"teal":4500,"source":1069,"pc":[4427]},{"teal":4501,"source":1069,"pc":[4428]},{"teal":4502,"source":1069,"pc":[4429,4430,4431]},{"teal":4507,"source":1072,"pc":[4432,4433]},{"teal":4508,"source":1072,"pc":[4434]},{"teal":4509,"source":1068,"pc":[4435]},{"teal":4510,"source":1068,"pc":[4436,4437]},{"teal":4511,"source":1068,"pc":[4438]},{"teal":4512,"source":1068,"pc":[4439]},{"teal":4513,"source":1068,"pc":[4440,4441]},{"teal":4514,"source":1068,"pc":[4442]},{"teal":4515,"source":1072,"pc":[4443]},{"teal":4516,"source":1072,"pc":[4444,4445]},{"teal":4517,"source":1072,"pc":[4446]},{"teal":4520,"source":1072,"errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4447]},{"teal":4521,"source":1072,"pc":[4448,4449]},{"teal":4526,"source":1074,"pc":[4450]},{"teal":4527,"source":1074,"pc":[4451,4452]},{"teal":4528,"source":1068,"pc":[4453]},{"teal":4529,"source":1068,"pc":[4454,4455]},{"teal":4530,"source":1068,"pc":[4456]},{"teal":4531,"source":1068,"pc":[4457]},{"teal":4532,"source":1068,"pc":[4458,4459]},{"teal":4533,"source":1068,"pc":[4460]},{"teal":4534,"source":1074,"pc":[4461,4462]},{"teal":4535,"source":1074,"pc":[4463]},{"teal":4536,"source":1074,"pc":[4464]},{"teal":4537,"source":1074,"pc":[4465,4466,4467]},{"teal":4538,"source":1074,"pc":[4468,4469]},{"teal":4539,"source":1074,"pc":[4470,4471]},{"teal":4540,"source":1068,"pc":[4472]},{"teal":4541,"source":1068,"pc":[4473,4474]},{"teal":4542,"source":1068,"pc":[4475]},{"teal":4543,"source":1068,"pc":[4476]},{"teal":4544,"source":1068,"pc":[4477,4478]},{"teal":4545,"source":1068,"pc":[4479]},{"teal":4546,"source":1074,"pc":[4480,4481]},{"teal":4547,"source":1074,"pc":[4482]},{"teal":4548,"source":1074,"pc":[4483]},{"teal":4551,"source":1074,"pc":[4484,4485,4486]},{"teal":4556,"source":1076,"pc":[4487,4488]},{"teal":4557,"source":1076,"pc":[4489,4490]},{"teal":4558,"source":1076,"pc":[4491]},{"teal":4559,"source":1076,"pc":[4492,4493]},{"teal":4560,"source":1076,"pc":[4494]},{"teal":4561,"source":1076,"pc":[4495]},{"teal":4562,"source":1076,"pc":[4496,4497]},{"teal":4563,"source":1076,"pc":[4498]},{"teal":4568,"source":1067,"pc":[4499]},{"teal":4572,"source":1081,"pc":[4500,4501,4502]},{"teal":4576,"source":1083,"pc":[4503,4504]},{"teal":4577,"source":1083,"pc":[4505,4506,4507]},{"teal":4578,"source":1083,"pc":[4508,4509]},{"teal":4579,"source":1083,"pc":[4510]},{"teal":4580,"source":1083,"pc":[4511]},{"teal":4584,"source":1084,"pc":[4512,4513]},{"teal":4585,"source":1084,"pc":[4514,4515,4516]},{"teal":4586,"source":1084,"pc":[4517,4518]},{"teal":4587,"source":1084,"pc":[4519]},{"teal":4588,"source":1084,"pc":[4520]},{"teal":4592,"source":1085,"pc":[4521,4522]},{"teal":4593,"source":1085,"pc":[4523,4524]},{"teal":4594,"source":1085,"pc":[4525,4526,4527]},{"teal":4595,"source":1085,"pc":[4528]},{"teal":4598,"source":1085,"errorMessage":"sender must be owner to add new validator","pc":[4529]},{"teal":4605,"source":1088,"pc":[4530,4531]},{"teal":4606,"source":1088,"pc":[4532,4533,4534]},{"teal":4607,"source":1088,"pc":[4535]},{"teal":4608,"source":1088,"pc":[4536]},{"teal":4609,"source":1088,"pc":[4537]},{"teal":4610,"source":1088,"pc":[4538]},{"teal":4611,"source":1088,"pc":[4539,4540,4541]},{"teal":4612,"source":1088,"pc":[4542,4543]},{"teal":4613,"source":1088,"pc":[4544,4545,4546]},{"teal":4614,"source":1088,"pc":[4547]},{"teal":4615,"source":1088,"pc":[4548,4549]},{"teal":4616,"source":1088,"pc":[4550]},{"teal":4617,"source":1088,"pc":[4551]},{"teal":4621,"source":1087,"errorMessage":"gating type not valid","pc":[4552]},{"teal":4628,"source":1092,"pc":[4553,4554]},{"teal":4629,"source":1092,"pc":[4555,4556,4557]},{"teal":4630,"source":1092,"pc":[4558]},{"teal":4631,"source":1092,"pc":[4559]},{"teal":4632,"source":1092,"pc":[4560]},{"teal":4633,"source":1092,"pc":[4561]},{"teal":4634,"source":1092,"pc":[4562,4563,4564]},{"teal":4635,"source":1092,"pc":[4565,4566]},{"teal":4636,"source":1092,"pc":[4567,4568,4569]},{"teal":4637,"source":1092,"pc":[4570]},{"teal":4638,"source":1092,"pc":[4571,4572]},{"teal":4639,"source":1092,"pc":[4573]},{"teal":4640,"source":1092,"pc":[4574]},{"teal":4644,"source":1091,"errorMessage":"epoch length not in allowable range","pc":[4575]},{"teal":4651,"source":1096,"pc":[4576,4577]},{"teal":4652,"source":1096,"pc":[4578,4579,4580]},{"teal":4653,"source":1096,"pc":[4581]},{"teal":4654,"source":1096,"pc":[4582]},{"teal":4655,"source":1096,"pc":[4583]},{"teal":4656,"source":1096,"pc":[4584]},{"teal":4657,"source":1096,"pc":[4585,4586,4587]},{"teal":4658,"source":1096,"pc":[4588,4589]},{"teal":4659,"source":1096,"pc":[4590,4591,4592]},{"teal":4660,"source":1096,"pc":[4593]},{"teal":4661,"source":1096,"pc":[4594,4595]},{"teal":4662,"source":1096,"pc":[4596]},{"teal":4663,"source":1096,"pc":[4597]},{"teal":4667,"source":1095,"errorMessage":"commission percentage not valid","pc":[4598]},{"teal":4672,"source":1099,"pc":[4599,4600]},{"teal":4673,"source":1099,"pc":[4601,4602,4603]},{"teal":4674,"source":1099,"pc":[4604]},{"teal":4675,"source":1099,"pc":[4605]},{"teal":4676,"source":1099,"pc":[4606]},{"teal":4677,"source":1099,"pc":[4607,4608,4609]},{"teal":4685,"source":1101,"pc":[4610,4611]},{"teal":4686,"source":1101,"pc":[4612,4613,4614]},{"teal":4687,"source":1101,"pc":[4615,4616]},{"teal":4688,"source":1101,"pc":[4617]},{"teal":4691,"source":1100,"errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4618]},{"teal":4696,"source":1105,"pc":[4619,4620]},{"teal":4697,"source":1105,"pc":[4621,4622,4623]},{"teal":4698,"source":1105,"pc":[4624]},{"teal":4699,"source":1105,"pc":[4625,4626]},{"teal":4700,"source":1105,"pc":[4627]},{"teal":4703,"source":1105,"errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4628]},{"teal":4710,"source":1108,"pc":[4629,4630]},{"teal":4711,"source":1108,"pc":[4631,4632,4633]},{"teal":4712,"source":1108,"pc":[4634]},{"teal":4713,"source":1108,"pc":[4635]},{"teal":4714,"source":1108,"pc":[4636]},{"teal":4715,"source":1108,"pc":[4637]},{"teal":4716,"source":1108,"pc":[4638,4639,4640]},{"teal":4717,"source":1108,"pc":[4641,4642]},{"teal":4718,"source":1108,"pc":[4643,4644,4645]},{"teal":4719,"source":1108,"pc":[4646]},{"teal":4720,"source":1108,"pc":[4647,4648]},{"teal":4721,"source":1108,"pc":[4649]},{"teal":4722,"source":1108,"pc":[4650]},{"teal":4726,"source":1107,"errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4651]},{"teal":4731,"source":1111,"pc":[4652,4653]},{"teal":4732,"source":1111,"pc":[4654,4655,4656]},{"teal":4733,"source":1111,"pc":[4657]},{"teal":4734,"source":1111,"pc":[4658]},{"teal":4735,"source":1111,"pc":[4659]},{"teal":4736,"source":1111,"pc":[4660,4661,4662]},{"teal":4741,"source":1112,"pc":[4663,4664]},{"teal":4742,"source":1112,"pc":[4665,4666,4667]},{"teal":4743,"source":1112,"pc":[4668]},{"teal":4744,"source":1112,"pc":[4669,4670]},{"teal":4745,"source":1112,"pc":[4671]},{"teal":4748,"source":1112,"errorMessage":"sunsettingOn must be later than now if set","pc":[4672]},{"teal":4751,"source":1081,"pc":[4673]},{"teal":4765,"source":1127,"pc":[4674,4675,4676]},{"teal":4768,"source":1127,"pc":[4677]},{"teal":4769,"source":1127,"pc":[4678,4679]},{"teal":4773,"source":1134,"pc":[4680,4681]},{"teal":4774,"source":1134,"pc":[4682,4683]},{"teal":4775,"source":1134,"pc":[4684,4685,4686]},{"teal":4776,"source":1134,"pc":[4687]},{"teal":4777,"source":1134,"pc":[4688]},{"teal":4778,"source":1134,"pc":[4689]},{"teal":4779,"source":1134,"pc":[4690,4691]},{"teal":4780,"source":1134,"pc":[4692]},{"teal":4781,"source":1134,"pc":[4693]},{"teal":4782,"source":1134,"pc":[4694]},{"teal":4783,"source":1134,"pc":[4695]},{"teal":4784,"source":1134,"pc":[4696]},{"teal":4785,"source":1134,"pc":[4697]},{"teal":4786,"source":1134,"pc":[4698,4699]},{"teal":4787,"source":1134,"pc":[4700,4701,4702]},{"teal":4788,"source":1134,"pc":[4703]},{"teal":4789,"source":1134,"pc":[4704]},{"teal":4790,"source":1134,"pc":[4705]},{"teal":4791,"source":1134,"pc":[4706,4707]},{"teal":4792,"source":1134,"pc":[4708]},{"teal":4793,"source":1134,"pc":[4709]},{"teal":4794,"source":1134,"pc":[4710,4711]},{"teal":4807,"source":1143,"pc":[4712]},{"teal":4808,"source":1143,"pc":[4713]},{"teal":4809,"source":1143,"pc":[4714,4715]},{"teal":4813,"source":1143,"pc":[4716,4717]},{"teal":4814,"source":1143,"pc":[4718,4719]},{"teal":4815,"source":1143,"pc":[4720,4721]},{"teal":4816,"source":1143,"pc":[4722]},{"teal":4817,"source":1143,"pc":[4723,4724]},{"teal":4821,"source":1143,"pc":[4725,4726]},{"teal":4822,"source":1143,"pc":[4727,4728]},{"teal":4823,"source":1143,"pc":[4729]},{"teal":4824,"source":1143,"pc":[4730,4731]},{"teal":4827,"source":1143,"pc":[4732]},{"teal":4828,"source":1143,"pc":[4733,4734]},{"teal":4829,"source":1138,"pc":[4735]},{"teal":4830,"source":1138,"pc":[4736,4737]},{"teal":4831,"source":1138,"pc":[4738,4739]},{"teal":4832,"source":1138,"pc":[4740,4741,4742,4743,4744,4745]},{"teal":4833,"source":1138,"pc":[4746,4747]},{"teal":4837,"source":1139,"pc":[4748,4749]},{"teal":4838,"source":1139,"pc":[4750,4751]},{"teal":4848,"source":1145,"pc":[4752,4753]},{"teal":4849,"source":1145,"pc":[4754,4755]},{"teal":4850,"source":1145,"pc":[4756,4757]},{"teal":4853,"source":1138,"pc":[4758]},{"teal":4854,"source":1138,"pc":[4759,4760]},{"teal":4857,"source":1138,"pc":[4761]},{"teal":4858,"source":1138,"pc":[4762,4763]},{"teal":4859,"source":1138,"pc":[4764]},{"teal":4860,"source":1138,"pc":[4765]},{"teal":4861,"source":1138,"pc":[4766,4767]},{"teal":4862,"source":1138,"pc":[4768,4769,4770]},{"teal":4863,"source":1138,"pc":[4771]},{"teal":4868,"source":1148,"pc":[4772,4773]},{"teal":4869,"source":1148,"pc":[4774,4775,4776]},{"teal":4870,"source":1148,"pc":[4777]},{"teal":4871,"source":1148,"pc":[4778,4779,4780]},{"teal":4876,"source":1149,"pc":[4781]},{"teal":4877,"source":1149,"pc":[4782,4783]},{"teal":4878,"source":1149,"pc":[4784,4785]},{"teal":4879,"source":1149,"pc":[4786]},{"teal":4880,"source":1149,"pc":[4787,4788]},{"teal":4881,"source":1149,"pc":[4789,4790]},{"teal":4882,"source":1149,"pc":[4791]},{"teal":4883,"source":1149,"pc":[4792,4793]},{"teal":4884,"source":1149,"pc":[4794,4795]},{"teal":4885,"source":1149,"pc":[4796,4797]},{"teal":4886,"source":1149,"pc":[4798,4799]},{"teal":4887,"source":1149,"pc":[4800]},{"teal":4892,"source":1153,"pc":[4801,4802]},{"teal":4893,"source":1153,"pc":[4803,4804]},{"teal":4894,"source":1153,"pc":[4805]},{"teal":4897,"source":1153,"errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4806]},{"teal":4898,"source":1153,"pc":[4807,4808]},{"teal":4902,"source":1154,"pc":[4809,4810]},{"teal":4903,"source":1154,"pc":[4811,4812]},{"teal":4904,"source":1154,"pc":[4813]},{"teal":4907,"source":1154,"errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4814]},{"teal":4908,"source":1154,"pc":[4815,4816]},{"teal":4912,"source":1155,"pc":[4817,4818]},{"teal":4913,"source":1155,"pc":[4819,4820]},{"teal":4914,"source":1155,"pc":[4821,4822,4823]},{"teal":4915,"source":1155,"pc":[4824]},{"teal":4916,"source":1155,"pc":[4825]},{"teal":4917,"source":1155,"pc":[4826]},{"teal":4918,"source":1155,"pc":[4827,4828]},{"teal":4919,"source":1155,"pc":[4829]},{"teal":4920,"source":1155,"pc":[4830]},{"teal":4921,"source":1155,"pc":[4831]},{"teal":4922,"source":1155,"pc":[4832]},{"teal":4923,"source":1155,"pc":[4833,4834]},{"teal":4924,"source":1155,"pc":[4835]},{"teal":4925,"source":1155,"pc":[4836,4837,4838]},{"teal":4926,"source":1155,"pc":[4839]},{"teal":4927,"source":1155,"pc":[4840,4841]},{"teal":4928,"source":1155,"pc":[4842,4843,4844]},{"teal":4929,"source":1155,"pc":[4845]},{"teal":4930,"source":1155,"pc":[4846]},{"teal":4931,"source":1155,"pc":[4847]},{"teal":4932,"source":1155,"pc":[4848,4849]},{"teal":4933,"source":1155,"pc":[4850]},{"teal":4937,"source":1156,"pc":[4851,4852]},{"teal":4938,"source":1156,"pc":[4853,4854]},{"teal":4939,"source":1156,"pc":[4855,4856,4857]},{"teal":4940,"source":1156,"pc":[4858]},{"teal":4941,"source":1156,"pc":[4859]},{"teal":4942,"source":1156,"pc":[4860]},{"teal":4943,"source":1156,"pc":[4861,4862]},{"teal":4944,"source":1156,"pc":[4863]},{"teal":4945,"source":1156,"pc":[4864]},{"teal":4946,"source":1156,"pc":[4865,4866]},{"teal":4947,"source":1156,"pc":[4867]},{"teal":4948,"source":1156,"pc":[4868,4869]},{"teal":4949,"source":1156,"pc":[4870]},{"teal":4950,"source":1156,"pc":[4871]},{"teal":4951,"source":1156,"pc":[4872,4873]},{"teal":4952,"source":1156,"pc":[4874,4875,4876]},{"teal":4953,"source":1156,"pc":[4877]},{"teal":4954,"source":1156,"pc":[4878]},{"teal":4955,"source":1156,"pc":[4879]},{"teal":4956,"source":1156,"pc":[4880,4881]},{"teal":4957,"source":1156,"pc":[4882]},{"teal":4962,"source":1159,"pc":[4883,4884]},{"teal":4963,"source":1159,"pc":[4885,4886,4887]},{"teal":4968,"source":1160,"pc":[4888,4889]},{"teal":4969,"source":1160,"pc":[4890]},{"teal":4970,"source":1160,"pc":[4891]},{"teal":4971,"source":1160,"pc":[4892]},{"teal":4972,"source":1160,"pc":[4893,4894]},{"teal":4973,"source":1160,"pc":[4895,4896,4897]},{"teal":4974,"source":1160,"pc":[4898]},{"teal":4975,"source":1160,"pc":[4899]},{"teal":4976,"source":1160,"pc":[4900]},{"teal":4977,"source":1160,"pc":[4901,4902]},{"teal":4978,"source":1160,"pc":[4903]},{"teal":4979,"source":1160,"pc":[4904]},{"teal":4980,"source":1160,"pc":[4905]},{"teal":4981,"source":1160,"pc":[4906]},{"teal":4982,"source":1160,"pc":[4907]},{"teal":4983,"source":1160,"pc":[4908]},{"teal":4984,"source":1160,"pc":[4909,4910]},{"teal":4985,"source":1160,"pc":[4911,4912,4913]},{"teal":4986,"source":1160,"pc":[4914]},{"teal":4987,"source":1160,"pc":[4915]},{"teal":4988,"source":1160,"pc":[4916]},{"teal":4989,"source":1160,"pc":[4917,4918]},{"teal":4990,"source":1160,"pc":[4919]},{"teal":4996,"source":1162,"pc":[4920,4921]},{"teal":4997,"source":1162,"pc":[4922,4923,4924]},{"teal":5002,"source":1163,"pc":[4925,4926]},{"teal":5003,"source":1163,"pc":[4927]},{"teal":5004,"source":1163,"pc":[4928]},{"teal":5005,"source":1163,"pc":[4929]},{"teal":5006,"source":1163,"pc":[4930,4931]},{"teal":5007,"source":1163,"pc":[4932]},{"teal":5008,"source":1163,"pc":[4933]},{"teal":5013,"source":1165,"pc":[4934,4935]},{"teal":5014,"source":1165,"pc":[4936]},{"teal":5015,"source":1165,"pc":[4937]},{"teal":5016,"source":1165,"pc":[4938]},{"teal":5017,"source":1165,"pc":[4939,4940]},{"teal":5018,"source":1165,"pc":[4941,4942,4943]},{"teal":5019,"source":1165,"pc":[4944]},{"teal":5020,"source":1165,"pc":[4945]},{"teal":5021,"source":1165,"pc":[4946]},{"teal":5022,"source":1165,"pc":[4947,4948]},{"teal":5023,"source":1165,"pc":[4949]},{"teal":5024,"source":1165,"pc":[4950]},{"teal":5025,"source":1165,"pc":[4951,4952]},{"teal":5026,"source":1165,"pc":[4953,4954]},{"teal":5027,"source":1165,"pc":[4955,4956]},{"teal":5028,"source":1165,"pc":[4957]},{"teal":5029,"source":1165,"pc":[4958]},{"teal":5030,"source":1165,"pc":[4959]},{"teal":5031,"source":1165,"pc":[4960]},{"teal":5032,"source":1165,"pc":[4961,4962]},{"teal":5033,"source":1165,"pc":[4963,4964,4965]},{"teal":5034,"source":1165,"pc":[4966]},{"teal":5035,"source":1165,"pc":[4967]},{"teal":5036,"source":1165,"pc":[4968]},{"teal":5037,"source":1165,"pc":[4969,4970]},{"teal":5038,"source":1165,"pc":[4971]},{"teal":5042,"source":1166,"pc":[4972,4973]},{"teal":5043,"source":1166,"pc":[4974]},{"teal":5044,"source":1166,"pc":[4975,4976]},{"teal":5045,"source":1166,"pc":[4977,4978]},{"teal":5046,"source":1166,"pc":[4979,4980]},{"teal":5047,"source":1166,"pc":[4981]},{"teal":5048,"source":1166,"pc":[4982]},{"teal":5049,"source":1166,"pc":[4983,4984]},{"teal":5050,"source":1166,"pc":[4985]},{"teal":5051,"source":1166,"pc":[4986]},{"teal":5052,"source":1127,"pc":[4987]},{"teal":5056,"source":1169,"pc":[4988,4989,4990]},{"teal":5059,"source":1169,"pc":[4991]},{"teal":5060,"source":1169,"pc":[4992,4993]},{"teal":5064,"source":1170,"pc":[4994]},{"teal":5065,"source":1170,"pc":[4995,4996]},{"teal":5066,"source":1170,"pc":[4997]},{"teal":5067,"source":1170,"pc":[4998]},{"teal":5068,"source":1170,"pc":[4999]},{"teal":5069,"source":1170,"pc":[5000]},{"teal":5070,"source":1170,"pc":[5001]},{"teal":5074,"source":1172,"pc":[5002]},{"teal":5075,"source":1172,"pc":[5003,5004]},{"teal":5076,"source":1172,"pc":[5005]},{"teal":5077,"source":1172,"pc":[5006]},{"teal":5080,"source":1172,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[5007]},{"teal":5081,"source":1172,"pc":[5008,5009]},{"teal":5085,"source":1173,"pc":[5010]},{"teal":5086,"source":1173,"pc":[5011,5012]},{"teal":5090,"source":1174,"pc":[5013]},{"teal":5091,"source":1174,"pc":[5014,5015]},{"teal":5096,"source":1174,"pc":[5016,5017]},{"teal":5097,"source":1174,"pc":[5018,5019]},{"teal":5098,"source":1174,"pc":[5020]},{"teal":5099,"source":1174,"pc":[5021,5022,5023]},{"teal":5104,"source":1175,"pc":[5024,5025]},{"teal":5105,"source":1175,"pc":[5026,5027]},{"teal":5106,"source":1175,"pc":[5028]},{"teal":5107,"source":1175,"pc":[5029]},{"teal":5108,"source":1175,"pc":[5030]},{"teal":5109,"source":1175,"pc":[5031]},{"teal":5110,"source":1175,"pc":[5032,5033]},{"teal":5111,"source":1175,"pc":[5034]},{"teal":5112,"source":1175,"pc":[5035,5036,5037]},{"teal":5117,"source":1177,"pc":[5038]},{"teal":5123,"source":1179,"pc":[5039,5040]},{"teal":5124,"source":1179,"pc":[5041]},{"teal":5125,"source":1179,"pc":[5042]},{"teal":5126,"source":1179,"pc":[5043]},{"teal":5127,"source":1179,"pc":[5044,5045,5046]},{"teal":5128,"source":1179,"pc":[5047,5048]},{"teal":5129,"source":1179,"pc":[5049,5050]},{"teal":5130,"source":1179,"pc":[5051]},{"teal":5131,"source":1179,"pc":[5052]},{"teal":5132,"source":1179,"pc":[5053]},{"teal":5133,"source":1179,"pc":[5054]},{"teal":5134,"source":1179,"pc":[5055]},{"teal":5135,"source":1179,"pc":[5056]},{"teal":5136,"source":1179,"pc":[5057]},{"teal":5137,"source":1179,"pc":[5058]},{"teal":5138,"source":1179,"pc":[5059]},{"teal":5139,"source":1179,"pc":[5060]},{"teal":5142,"source":1179,"pc":[5061,5062,5063]},{"teal":5147,"source":1180,"pc":[5064,5065]},{"teal":5148,"source":1180,"pc":[5066]},{"teal":5149,"source":1180,"pc":[5067]},{"teal":5150,"source":1180,"pc":[5068,5069]},{"teal":5157,"source":1174,"pc":[5070,5071]},{"teal":5158,"source":1174,"pc":[5072]},{"teal":5159,"source":1174,"pc":[5073]},{"teal":5160,"source":1174,"pc":[5074,5075]},{"teal":5161,"source":1174,"pc":[5076,5077,5078]},{"teal":5167,"source":1183,"pc":[5079,5080]},{"teal":5168,"source":1183,"pc":[5081]},{"teal":5169,"source":1183,"pc":[5082]},{"teal":5170,"source":1183,"pc":[5083,5084,5085]},{"teal":5174,"source":1184,"errorMessage":"No empty slot available in the staker pool set","pc":[5086]},{"teal":5179,"source":1186,"pc":[5087,5088]},{"teal":5180,"source":1186,"pc":[5089]},{"teal":5181,"source":1186,"pc":[5090]},{"teal":5182,"source":1186,"pc":[5091]},{"teal":5183,"source":1186,"pc":[5092]},{"teal":5184,"source":1186,"pc":[5093,5094]},{"teal":5185,"source":1186,"pc":[5095]},{"teal":5186,"source":1186,"pc":[5096,5097]},{"teal":5187,"source":1186,"pc":[5098]},{"teal":5188,"source":1186,"pc":[5099,5100]},{"teal":5189,"source":1186,"pc":[5101]},{"teal":5190,"source":1169,"pc":[5102]},{"teal":5201,"source":1197,"pc":[5103,5104,5105]},{"teal":5204,"source":1197,"pc":[5106]},{"teal":5205,"source":1197,"pc":[5107,5108]},{"teal":5209,"source":1199,"pc":[5109]},{"teal":5210,"source":1199,"pc":[5110,5111]},{"teal":5214,"source":1200,"pc":[5112]},{"teal":5215,"source":1200,"pc":[5113,5114]},{"teal":5219,"source":1201,"pc":[5115]},{"teal":5220,"source":1201,"pc":[5116,5117]},{"teal":5224,"source":1203,"pc":[5118]},{"teal":5225,"source":1203,"pc":[5119,5120]},{"teal":5226,"source":1203,"pc":[5121]},{"teal":5227,"source":1203,"pc":[5122]},{"teal":5230,"source":1203,"errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[5123]},{"teal":5231,"source":1203,"pc":[5124,5125]},{"teal":5235,"source":1204,"pc":[5126]},{"teal":5236,"source":1204,"pc":[5127,5128]},{"teal":5241,"source":1204,"pc":[5129,5130]},{"teal":5242,"source":1204,"pc":[5131,5132]},{"teal":5243,"source":1204,"pc":[5133]},{"teal":5244,"source":1204,"pc":[5134,5135,5136]},{"teal":5249,"source":1205,"pc":[5137,5138]},{"teal":5250,"source":1205,"pc":[5139,5140]},{"teal":5251,"source":1205,"pc":[5141]},{"teal":5252,"source":1205,"pc":[5142]},{"teal":5253,"source":1205,"pc":[5143]},{"teal":5254,"source":1205,"pc":[5144]},{"teal":5255,"source":1205,"pc":[5145]},{"teal":5256,"source":1205,"pc":[5146]},{"teal":5257,"source":1205,"pc":[5147]},{"teal":5258,"source":1205,"pc":[5148]},{"teal":5259,"source":1205,"pc":[5149]},{"teal":5260,"source":1205,"pc":[5150,5151,5152]},{"teal":5263,"source":1206,"pc":[5153,5154,5155]},{"teal":5268,"source":1208,"pc":[5156,5157]},{"teal":5269,"source":1208,"pc":[5158]},{"teal":5270,"source":1208,"pc":[5159]},{"teal":5271,"source":1208,"pc":[5160,5161]},{"teal":5276,"source":1209,"pc":[5162,5163]},{"teal":5277,"source":1209,"pc":[5164,5165]},{"teal":5278,"source":1209,"pc":[5166]},{"teal":5279,"source":1209,"pc":[5167]},{"teal":5280,"source":1209,"pc":[5168]},{"teal":5281,"source":1209,"pc":[5169]},{"teal":5282,"source":1209,"pc":[5170]},{"teal":5283,"source":1209,"pc":[5171]},{"teal":5284,"source":1209,"pc":[5172]},{"teal":5285,"source":1209,"pc":[5173,5174]},{"teal":5286,"source":1209,"pc":[5175,5176,5177]},{"teal":5287,"source":1209,"pc":[5178]},{"teal":5288,"source":1209,"pc":[5179]},{"teal":5289,"source":1209,"pc":[5180,5181,5182]},{"teal":5295,"source":1210,"pc":[5183,5184]},{"teal":5296,"source":1210,"pc":[5185,5186]},{"teal":5297,"source":1210,"pc":[5187]},{"teal":5298,"source":1210,"pc":[5188]},{"teal":5299,"source":1210,"pc":[5189]},{"teal":5300,"source":1210,"pc":[5190]},{"teal":5301,"source":1210,"pc":[5191,5192]},{"teal":5302,"source":1210,"pc":[5193]},{"teal":5303,"source":1210,"pc":[5194,5195,5196]},{"teal":5308,"source":1211,"pc":[5197]},{"teal":5309,"source":1211,"pc":[5198,5199]},{"teal":5313,"source":1213,"pc":[5200,5201]},{"teal":5314,"source":1213,"pc":[5202]},{"teal":5315,"source":1213,"pc":[5203]},{"teal":5316,"source":1213,"pc":[5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229]},{"teal":5317,"source":1213,"pc":[5230]},{"teal":5318,"source":1213,"pc":[5231,5232]},{"teal":5319,"source":1213,"pc":[5233]},{"teal":5320,"source":1213,"pc":[5234,5235]},{"teal":5321,"source":1213,"pc":[5236]},{"teal":5322,"source":1210,"pc":[5237,5238,5239]},{"teal":5327,"source":1215,"pc":[5240,5241]},{"teal":5328,"source":1215,"pc":[5242]},{"teal":5329,"source":1215,"pc":[5243]},{"teal":5330,"source":1215,"pc":[5244,5245]},{"teal":5339,"source":1204,"pc":[5246,5247]},{"teal":5340,"source":1204,"pc":[5248]},{"teal":5341,"source":1204,"pc":[5249]},{"teal":5342,"source":1204,"pc":[5250,5251]},{"teal":5343,"source":1204,"pc":[5252,5253,5254]},{"teal":5349,"source":1219,"pc":[5255,5256]},{"teal":5350,"source":1219,"pc":[5257]},{"teal":5351,"source":1219,"pc":[5258,5259,5260]},{"teal":5355,"source":1220,"errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5261]},{"teal":5360,"source":1223,"pc":[5262,5263]},{"teal":5361,"source":1223,"pc":[5264]},{"teal":5362,"source":1223,"pc":[5265,5266]},{"teal":5363,"source":1223,"pc":[5267]},{"teal":5364,"source":1223,"pc":[5268]},{"teal":5365,"source":1223,"pc":[5269]},{"teal":5366,"source":1223,"pc":[5270]},{"teal":5367,"source":1223,"pc":[5271,5272]},{"teal":5368,"source":1223,"pc":[5273]},{"teal":5369,"source":1223,"pc":[5274]},{"teal":5370,"source":1223,"pc":[5275]},{"teal":5373,"source":1197,"pc":[5276,5277]},{"teal":5376,"source":1197,"pc":[5278,5279]},{"teal":5377,"source":1197,"pc":[5280]},{"teal":5381,"source":1226,"pc":[5281,5282,5283]},{"teal":5384,"source":1226,"pc":[5284]},{"teal":5385,"source":1226,"pc":[5285,5286]},{"teal":5389,"source":1227,"pc":[5287,5288]},{"teal":5390,"source":1227,"pc":[5289,5290]},{"teal":5391,"source":1227,"pc":[5291]},{"teal":5392,"source":1227,"pc":[5292,5293]},{"teal":5393,"source":1227,"pc":[5294]},{"teal":5394,"source":1227,"pc":[5295]},{"teal":5395,"source":1227,"pc":[5296,5297]},{"teal":5396,"source":1227,"pc":[5298]},{"teal":5397,"source":1227,"pc":[5299,5300]},{"teal":5401,"source":1228,"pc":[5301,5302,5303]},{"teal":5402,"source":1228,"pc":[5304]},{"teal":5403,"source":1228,"pc":[5305]},{"teal":5404,"source":1228,"pc":[5306,5307]},{"teal":5405,"source":1228,"pc":[5308]},{"teal":5406,"source":1228,"pc":[5309]},{"teal":5407,"source":1228,"pc":[5310,5311]},{"teal":5408,"source":1228,"pc":[5312]},{"teal":5409,"source":1228,"pc":[5313]},{"teal":5410,"source":1228,"pc":[5314,5315]},{"teal":5414,"source":1230,"pc":[5316,5317]},{"teal":5415,"source":1230,"pc":[5318]},{"teal":5416,"source":1230,"pc":[5319]},{"teal":5417,"source":1230,"pc":[5320]},{"teal":5418,"source":1230,"pc":[5321,5322,5323]},{"teal":5419,"source":1230,"pc":[5324,5325]},{"teal":5420,"source":1230,"pc":[5326]},{"teal":5421,"source":1230,"pc":[5327]},{"teal":5422,"source":1230,"pc":[5328]},{"teal":5426,"source":1230,"errorMessage":"node number not in valid range","pc":[5329]},{"teal":5430,"source":1232,"pc":[5330]},{"teal":5431,"source":1232,"pc":[5331,5332]},{"teal":5436,"source":1232,"pc":[5333,5334]},{"teal":5437,"source":1232,"pc":[5335,5336]},{"teal":5438,"source":1232,"pc":[5337]},{"teal":5439,"source":1232,"pc":[5338,5339,5340]},{"teal":5444,"source":1233,"pc":[5341,5342]},{"teal":5445,"source":1233,"pc":[5343]},{"teal":5446,"source":1233,"pc":[5344,5345]},{"teal":5447,"source":1233,"pc":[5346]},{"teal":5448,"source":1233,"pc":[5347]},{"teal":5449,"source":1233,"pc":[5348]},{"teal":5450,"source":1233,"pc":[5349]},{"teal":5451,"source":1233,"pc":[5350]},{"teal":5452,"source":1233,"pc":[5351]},{"teal":5453,"source":1233,"pc":[5352]},{"teal":5454,"source":1233,"pc":[5353,5354]},{"teal":5455,"source":1233,"pc":[5355]},{"teal":5456,"source":1233,"pc":[5356]},{"teal":5457,"source":1233,"pc":[5357]},{"teal":5458,"source":1233,"pc":[5358]},{"teal":5459,"source":1233,"pc":[5359]},{"teal":5460,"source":1233,"pc":[5360]},{"teal":5461,"source":1233,"pc":[5361]},{"teal":5462,"source":1233,"pc":[5362]},{"teal":5463,"source":1233,"pc":[5363,5364,5365]},{"teal":5468,"source":1235,"pc":[5366,5367]},{"teal":5469,"source":1235,"pc":[5368,5369]},{"teal":5470,"source":1235,"pc":[5370]},{"teal":5471,"source":1235,"pc":[5371]},{"teal":5472,"source":1235,"pc":[5372]},{"teal":5473,"source":1235,"pc":[5373]},{"teal":5474,"source":1235,"pc":[5374]},{"teal":5475,"source":1235,"pc":[5375]},{"teal":5476,"source":1235,"pc":[5376]},{"teal":5477,"source":1235,"pc":[5377,5378]},{"teal":5478,"source":1235,"pc":[5379]},{"teal":5479,"source":1235,"pc":[5380]},{"teal":5480,"source":1235,"pc":[5381]},{"teal":5481,"source":1235,"pc":[5382,5383]},{"teal":5482,"source":1235,"pc":[5384]},{"teal":5483,"source":1235,"pc":[5385]},{"teal":5484,"source":1235,"pc":[5386,5387]},{"teal":5485,"source":1235,"pc":[5388]},{"teal":5486,"source":1235,"pc":[5389]},{"teal":5487,"source":1235,"pc":[5390,5391]},{"teal":5488,"source":1235,"pc":[5392]},{"teal":5492,"source":1236,"pc":[5393]},{"teal":5499,"source":1232,"pc":[5394,5395]},{"teal":5500,"source":1232,"pc":[5396]},{"teal":5501,"source":1232,"pc":[5397]},{"teal":5502,"source":1232,"pc":[5398,5399]},{"teal":5503,"source":1232,"pc":[5400,5401,5402]},{"teal":5507,"source":1239,"errorMessage":"no available space in specified node for this pool","pc":[5403]},{"teal":5508,"source":1226,"pc":[5404]},{"teal":5518,"source":1249,"pc":[5405,5406,5407]},{"teal":5521,"source":1249,"pc":[5408]},{"teal":5522,"source":1249,"pc":[5409,5410]},{"teal":5526,"source":1250,"pc":[5411,5412]},{"teal":5527,"source":1250,"pc":[5413]},{"teal":5528,"source":1250,"pc":[5414]},{"teal":5529,"source":1250,"pc":[5415,5416]},{"teal":5530,"source":1250,"pc":[5417]},{"teal":5531,"source":1250,"pc":[5418]},{"teal":5532,"source":1250,"pc":[5419,5420]},{"teal":5533,"source":1250,"pc":[5421]},{"teal":5534,"source":1250,"pc":[5422]},{"teal":5535,"source":1250,"pc":[5423,5424]},{"teal":5540,"source":1251,"pc":[5425,5426]},{"teal":5541,"source":1251,"pc":[5427]},{"teal":5542,"source":1251,"pc":[5428]},{"teal":5543,"source":1251,"pc":[5429,5430,5431]},{"teal":5548,"source":1252,"pc":[5432]},{"teal":5553,"source":1254,"pc":[5433,5434]},{"teal":5554,"source":1254,"pc":[5435,5436]},{"teal":5558,"source":1255,"pc":[5437]},{"teal":5559,"source":1255,"pc":[5438,5439]},{"teal":5560,"source":1255,"pc":[5440]},{"teal":5561,"source":1255,"pc":[5441,5442]},{"teal":5562,"source":1255,"pc":[5443]},{"teal":5563,"source":1255,"pc":[5444]},{"teal":5564,"source":1255,"pc":[5445,5446]},{"teal":5565,"source":1255,"pc":[5447]},{"teal":5566,"source":1255,"pc":[5448,5449]},{"teal":5573,"source":1259,"pc":[5450,5451]},{"teal":5574,"source":1259,"pc":[5452]},{"teal":5575,"source":1259,"pc":[5453]},{"teal":5576,"source":1259,"pc":[5454]},{"teal":5577,"source":1259,"pc":[5455,5456,5457]},{"teal":5578,"source":1260,"pc":[5458,5459]},{"teal":5579,"source":1260,"pc":[5460,5461]},{"teal":5580,"source":1260,"pc":[5462]},{"teal":5581,"source":1259,"pc":[5463]},{"teal":5584,"source":1260,"pc":[5464]},{"teal":5585,"source":1260,"pc":[5465,5466,5467]},{"teal":5586,"source":1261,"pc":[5468,5469]},{"teal":5587,"source":1261,"pc":[5470,5471]},{"teal":5588,"source":1261,"pc":[5472]},{"teal":5589,"source":1260,"pc":[5473]},{"teal":5592,"source":1258,"pc":[5474,5475,5476]},{"teal":5597,"source":1263,"pc":[5477,5478]},{"teal":5598,"source":1263,"pc":[5479]},{"teal":5599,"source":1263,"pc":[5480]},{"teal":5600,"source":1263,"pc":[5481]},{"teal":5604,"source":1264,"pc":[5482,5483]},{"teal":5605,"source":1264,"pc":[5484]},{"teal":5606,"source":1264,"pc":[5485]},{"teal":5607,"source":1264,"pc":[5486,5487]},{"teal":5608,"source":1264,"pc":[5488]},{"teal":5609,"source":1264,"pc":[5489]},{"teal":5610,"source":1264,"pc":[5490,5491]},{"teal":5611,"source":1264,"pc":[5492]},{"teal":5612,"source":1264,"pc":[5493]},{"teal":5613,"source":1264,"pc":[5494,5495]},{"teal":5618,"source":1265,"pc":[5496,5497]},{"teal":5619,"source":1265,"pc":[5498]},{"teal":5620,"source":1265,"pc":[5499]},{"teal":5621,"source":1265,"pc":[5500,5501,5502]},{"teal":5626,"source":1266,"pc":[5503]},{"teal":5627,"source":1266,"pc":[5504,5505]},{"teal":5635,"source":1269,"pc":[5506,5507]},{"teal":5636,"source":1269,"pc":[5508,5509]},{"teal":5637,"source":1269,"pc":[5510,5511]},{"teal":5638,"source":1269,"pc":[5512]},{"teal":5639,"source":1269,"pc":[5513,5514]},{"teal":5640,"source":1269,"pc":[5515]},{"teal":5643,"source":1268,"errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5516]},{"teal":5649,"source":1273,"pc":[5517,5518]},{"teal":5650,"source":1273,"pc":[5519]},{"teal":5651,"source":1273,"pc":[5520]},{"teal":5652,"source":1273,"pc":[5521,5522,5523]},{"teal":5660,"source":1275,"pc":[5524,5525]},{"teal":5661,"source":1275,"pc":[5526,5527]},{"teal":5662,"source":1275,"pc":[5528]},{"teal":5663,"source":1275,"pc":[5529,5530]},{"teal":5664,"source":1275,"pc":[5531,5532,5533]},{"teal":5665,"source":1275,"pc":[5534]},{"teal":5668,"source":1274,"errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5535]},{"teal":5674,"source":1279,"pc":[5536,5537]},{"teal":5675,"source":1279,"pc":[5538,5539]},{"teal":5676,"source":1279,"pc":[5540]},{"teal":5677,"source":1279,"pc":[5541,5542,5543]},{"teal":5682,"source":1280,"pc":[5544]},{"teal":5683,"source":1280,"pc":[5545,5546]},{"teal":5687,"source":1281,"pc":[5547,5548]},{"teal":5688,"source":1281,"pc":[5549,5550,5551]},{"teal":5689,"source":1281,"pc":[5552]},{"teal":5690,"source":1281,"pc":[5553,5554]},{"teal":5691,"source":1281,"pc":[5555,5556,5557]},{"teal":5692,"source":1281,"pc":[5558]},{"teal":5693,"source":1281,"pc":[5559,5560]},{"teal":5694,"source":1281,"pc":[5561]},{"teal":5695,"source":1281,"pc":[5562,5563]},{"teal":5701,"source":1282,"pc":[5564,5565]},{"teal":5702,"source":1282,"pc":[5566,5567]},{"teal":5703,"source":1282,"pc":[5568]},{"teal":5704,"source":1282,"pc":[5569,5570,5571]},{"teal":5709,"source":1283,"pc":[5572]},{"teal":5710,"source":1283,"pc":[5573,5574]},{"teal":5711,"source":1284,"pc":[5575,5576,5577]},{"teal":5717,"source":1281,"pc":[5578,5579]},{"teal":5718,"source":1281,"pc":[5580]},{"teal":5719,"source":1281,"pc":[5581]},{"teal":5720,"source":1281,"pc":[5582]},{"teal":5721,"source":1281,"pc":[5583,5584]},{"teal":5722,"source":1281,"pc":[5585]},{"teal":5723,"source":1281,"pc":[5586,5587,5588]},{"teal":5724,"source":1281,"pc":[5589,5590]},{"teal":5725,"source":1281,"pc":[5591,5592]},{"teal":5726,"source":1281,"pc":[5593,5594]},{"teal":5727,"source":1281,"pc":[5595]},{"teal":5728,"source":1281,"pc":[5596]},{"teal":5729,"source":1281,"pc":[5597]},{"teal":5730,"source":1281,"pc":[5598,5599]},{"teal":5731,"source":1281,"pc":[5600,5601,5602]},{"teal":5736,"source":1287,"pc":[5603,5604]},{"teal":5739,"source":1287,"errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5605]},{"teal":5745,"source":1289,"pc":[5606,5607]},{"teal":5746,"source":1289,"pc":[5608,5609]},{"teal":5747,"source":1289,"pc":[5610]},{"teal":5748,"source":1289,"pc":[5611,5612,5613]},{"teal":5756,"source":1293,"pc":[5614,5615]},{"teal":5757,"source":1293,"pc":[5616,5617]},{"teal":5758,"source":1293,"pc":[5618]},{"teal":5759,"source":1293,"pc":[5619,5620]},{"teal":5760,"source":1293,"pc":[5621,5622,5623]},{"teal":5761,"source":1293,"pc":[5624]},{"teal":5762,"source":1293,"pc":[5625,5626,5627]},{"teal":5765,"source":1292,"errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5628]},{"teal":5771,"source":1297,"pc":[5629,5630]},{"teal":5772,"source":1297,"pc":[5631,5632]},{"teal":5773,"source":1297,"pc":[5633]},{"teal":5774,"source":1297,"pc":[5634,5635,5636]},{"teal":5779,"source":1299,"pc":[5637,5638]},{"teal":5780,"source":1299,"pc":[5639,5640]},{"teal":5784,"source":1300,"pc":[5641,5642]},{"teal":5785,"source":1300,"pc":[5643,5644,5645]},{"teal":5788,"source":1300,"errorMessage":"provided NFD must be valid","pc":[5646]},{"teal":5796,"source":1304,"pc":[5647,5648]},{"teal":5797,"source":1304,"pc":[5649,5650]},{"teal":5798,"source":1304,"pc":[5651]},{"teal":5801,"source":1304,"errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5652]},{"teal":5802,"source":1305,"pc":[5653,5654]},{"teal":5803,"source":1304,"pc":[5655]},{"teal":5804,"source":1305,"pc":[5656]},{"teal":5805,"source":1305,"pc":[5657,5658,5659]},{"teal":5806,"source":1305,"pc":[5660,5661]},{"teal":5807,"source":1305,"pc":[5662,5663]},{"teal":5808,"source":1305,"pc":[5664,5665,5666]},{"teal":5809,"source":1305,"pc":[5667]},{"teal":5813,"source":1303,"errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5668]},{"teal":5821,"source":1311,"pc":[5669,5670]},{"teal":5822,"source":1311,"pc":[5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685]},{"teal":5823,"source":1311,"pc":[5686]},{"teal":5826,"source":1311,"errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5687]},{"teal":5827,"source":1311,"pc":[5688]},{"teal":5828,"source":1312,"pc":[5689,5690]},{"teal":5829,"source":1312,"pc":[5691,5692,5693]},{"teal":5830,"source":1312,"pc":[5694]},{"teal":5831,"source":1311,"pc":[5695]},{"teal":5834,"source":1310,"errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5696]},{"teal":5837,"source":1249,"pc":[5697]},{"teal":5849,"source":1327,"pc":[5698,5699,5700]},{"teal":5852,"source":1327,"pc":[5701]},{"teal":5856,"source":1329,"pc":[5702,5703]},{"teal":5857,"source":1329,"pc":[5704,5705,5706,5707,5708,5709,5710,5711]},{"teal":5858,"source":1329,"pc":[5712]},{"teal":5861,"source":1329,"errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5713]},{"teal":5862,"source":1329,"pc":[5714,5715]},{"teal":5870,"source":1331,"pc":[5716]},{"teal":5871,"source":1331,"pc":[5717,5718]},{"teal":5872,"source":1331,"pc":[5719,5720]},{"teal":5873,"source":1333,"pc":[5721,5722,5723,5724,5725,5726]},{"teal":5874,"source":1333,"pc":[5727,5728]},{"teal":5878,"source":1332,"pc":[5729,5730]},{"teal":5879,"source":1332,"pc":[5731,5732]},{"teal":5883,"source":1334,"pc":[5733,5734]},{"teal":5884,"source":1334,"pc":[5735]},{"teal":5885,"source":1334,"pc":[5736]},{"teal":5886,"source":1334,"pc":[5737]},{"teal":5887,"source":1334,"pc":[5738,5739,5740]},{"teal":5888,"source":1334,"pc":[5741]},{"teal":5889,"source":1334,"pc":[5742]},{"teal":5890,"source":1334,"pc":[5743,5744]},{"teal":5891,"source":1334,"pc":[5745,5746]},{"teal":5892,"source":1334,"pc":[5747]},{"teal":5893,"source":1334,"pc":[5748,5749]},{"teal":5896,"source":1331,"pc":[5750]},{"teal":5897,"source":1331,"pc":[5751,5752]},{"teal":5900,"source":1331,"pc":[5753]},{"teal":5901,"source":1331,"pc":[5754,5755]},{"teal":5902,"source":1331,"pc":[5756]},{"teal":5903,"source":1331,"pc":[5757]},{"teal":5904,"source":1331,"pc":[5758,5759]},{"teal":5905,"source":1331,"pc":[5760,5761,5762]},{"teal":5906,"source":1331,"pc":[5763]},{"teal":5907,"source":1331,"pc":[5764]},{"teal":5910,"source":1327,"pc":[5765,5766]},{"teal":5911,"source":1327,"pc":[5767]},{"teal":5922,"source":1346,"pc":[5768,5769,5770]},{"teal":5925,"source":1346,"pc":[5771]},{"teal":5926,"source":1346,"pc":[5772,5773]},{"teal":5933,"source":1347,"pc":[5774]},{"teal":5934,"source":1347,"pc":[5775,5776]},{"teal":5935,"source":1347,"pc":[5777,5778]},{"teal":5939,"source":1348,"pc":[5779,5780]},{"teal":5940,"source":1348,"pc":[5781,5782]},{"teal":5944,"source":1349,"pc":[5783,5784,5785,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797]},{"teal":5945,"source":1349,"pc":[5798,5799]},{"teal":5946,"source":1349,"pc":[5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814]},{"teal":5947,"source":1349,"pc":[5815,5816]},{"teal":5950,"source":1347,"pc":[5817]},{"teal":5951,"source":1347,"pc":[5818,5819]},{"teal":5954,"source":1347,"pc":[5820]},{"teal":5958,"source":1351,"pc":[5821,5822]},{"teal":5959,"source":1351,"pc":[5823,5824]},{"teal":5963,"source":1352,"pc":[5825]},{"teal":5964,"source":1352,"pc":[5826,5827]},{"teal":5969,"source":1352,"pc":[5828,5829]},{"teal":5970,"source":1352,"pc":[5830,5831]},{"teal":5971,"source":1352,"pc":[5832]},{"teal":5972,"source":1352,"pc":[5833]},{"teal":5973,"source":1352,"pc":[5834,5835,5836]},{"teal":5977,"source":1353,"pc":[5837,5838]},{"teal":5978,"source":1353,"pc":[5839,5840]},{"teal":5979,"source":1353,"pc":[5841,5842]},{"teal":5980,"source":1353,"pc":[5843]},{"teal":5981,"source":1353,"pc":[5844,5845]},{"teal":5986,"source":1354,"pc":[5846,5847]},{"teal":5987,"source":1354,"pc":[5848,5849]},{"teal":5988,"source":1354,"pc":[5850]},{"teal":5989,"source":1354,"pc":[5851]},{"teal":5990,"source":1354,"pc":[5852,5853,5854]},{"teal":5991,"source":1354,"pc":[5855,5856]},{"teal":5992,"source":1354,"pc":[5857,5858]},{"teal":5993,"source":1354,"pc":[5859]},{"teal":5994,"source":1354,"pc":[5860]},{"teal":5997,"source":1354,"pc":[5861,5862,5863]},{"teal":6002,"source":1355,"pc":[5864]},{"teal":6003,"source":1355,"pc":[5865,5866,5867]},{"teal":6010,"source":1352,"pc":[5868,5869]},{"teal":6011,"source":1352,"pc":[5870,5871]},{"teal":6012,"source":1352,"pc":[5872]},{"teal":6013,"source":1352,"pc":[5873,5874]},{"teal":6014,"source":1352,"pc":[5875,5876,5877]},{"teal":6019,"source":1358,"pc":[5878]},{"teal":6023,"source":1346,"pc":[5879,5880]},{"teal":6026,"source":1346,"pc":[5881,5882]},{"teal":6027,"source":1346,"pc":[5883]},{"teal":6035,"source":1366,"pc":[5884,5885,5886]},{"teal":6038,"source":1366,"pc":[5887]},{"teal":6042,"source":1367,"pc":[5888,5889,5890]},{"teal":6043,"source":1367,"pc":[5891,5892]},{"teal":6047,"source":1369,"pc":[5893,5894]},{"teal":6048,"source":1369,"pc":[5895,5896]},{"teal":6049,"source":1369,"pc":[5897]},{"teal":6050,"source":1369,"pc":[5898]},{"teal":6051,"source":1369,"pc":[5899,5900]},{"teal":6052,"source":1369,"pc":[5901]},{"teal":6053,"source":1369,"pc":[5902]},{"teal":6054,"source":1369,"pc":[5903]},{"teal":6055,"source":1369,"pc":[5904]},{"teal":6056,"source":1369,"pc":[5905]},{"teal":6059,"source":1369,"errorMessage":"wideRatio failed","pc":[5906]},{"teal":6062,"source":1366,"pc":[5907,5908]},{"teal":6063,"source":1366,"pc":[5909]},{"teal":6070,"source":1376,"pc":[5910,5911,5912]},{"teal":6073,"source":1376,"pc":[5913]},{"teal":6077,"source":1377,"pc":[5914,5915,5916]},{"teal":6078,"source":1377,"pc":[5917,5918]},{"teal":6082,"source":1379,"pc":[5919,5920]},{"teal":6083,"source":1379,"pc":[5921,5922,5923]},{"teal":6084,"source":1379,"pc":[5924]},{"teal":6085,"source":1379,"pc":[5925]},{"teal":6086,"source":1379,"pc":[5926,5927]},{"teal":6087,"source":1379,"pc":[5928]},{"teal":6088,"source":1379,"pc":[5929]},{"teal":6089,"source":1379,"pc":[5930]},{"teal":6090,"source":1379,"pc":[5931]},{"teal":6091,"source":1379,"pc":[5932]},{"teal":6094,"source":1379,"errorMessage":"wideRatio failed","pc":[5933]},{"teal":6097,"source":1376,"pc":[5934,5935]},{"teal":6098,"source":1376,"pc":[5936]},{"teal":6104,"source":1385,"pc":[5937,5938,5939]},{"teal":6108,"source":1386,"pc":[5940,5941]},{"teal":6109,"source":1385,"pc":[5942]},{"teal":6113,"source":1389,"pc":[5943,5944,5945]},{"teal":6117,"source":1390,"pc":[5946]},{"teal":6118,"source":1389,"pc":[5947]},{"teal":6122,"source":1393,"pc":[5948,5949,5950]},{"teal":6125,"source":1393,"pc":[5951]},{"teal":6129,"source":1402,"pc":[5952,5953]},{"teal":6130,"source":1402,"pc":[5954,5955]},{"teal":6134,"source":1403,"pc":[5956,5957]},{"teal":6135,"source":1403,"pc":[5958,5959]},{"teal":6136,"source":1403,"pc":[5960,5961]},{"teal":6137,"source":1403,"pc":[5962]},{"teal":6138,"source":1403,"pc":[5963]},{"teal":6139,"source":1403,"pc":[5964,5965]},{"teal":6143,"source":1404,"pc":[5966,5967]},{"teal":6144,"source":1404,"pc":[5968,5969]},{"teal":6145,"source":1404,"pc":[5970,5971]},{"teal":6146,"source":1404,"pc":[5972]},{"teal":6147,"source":1404,"pc":[5973]},{"teal":6148,"source":1404,"pc":[5974,5975]},{"teal":6152,"source":1405,"pc":[5976,5977]},{"teal":6153,"source":1405,"pc":[5978,5979]},{"teal":6154,"source":1405,"pc":[5980,5981]},{"teal":6155,"source":1405,"pc":[5982]},{"teal":6156,"source":1405,"pc":[5983]},{"teal":6157,"source":1405,"pc":[5984,5985]},{"teal":6161,"source":1406,"pc":[5986,5987]},{"teal":6162,"source":1406,"pc":[5988,5989]},{"teal":6163,"source":1406,"pc":[5990,5991]},{"teal":6164,"source":1406,"pc":[5992]},{"teal":6165,"source":1406,"pc":[5993]},{"teal":6166,"source":1406,"pc":[5994,5995]},{"teal":6170,"source":1407,"pc":[5996,5997]},{"teal":6171,"source":1407,"pc":[5998,5999]},{"teal":6172,"source":1407,"pc":[6000,6001]},{"teal":6173,"source":1407,"pc":[6002]},{"teal":6174,"source":1407,"pc":[6003]},{"teal":6175,"source":1407,"pc":[6004,6005]},{"teal":6179,"source":1408,"pc":[6006,6007]},{"teal":6180,"source":1408,"pc":[6008,6009]},{"teal":6181,"source":1408,"pc":[6010,6011]},{"teal":6182,"source":1408,"pc":[6012]},{"teal":6183,"source":1408,"pc":[6013]},{"teal":6184,"source":1408,"pc":[6014,6015]},{"teal":6188,"source":1409,"pc":[6016,6017]},{"teal":6189,"source":1409,"pc":[6018,6019]},{"teal":6190,"source":1409,"pc":[6020,6021]},{"teal":6191,"source":1409,"pc":[6022]},{"teal":6192,"source":1409,"pc":[6023]},{"teal":6193,"source":1409,"pc":[6024,6025]},{"teal":6197,"source":1410,"pc":[6026,6027]},{"teal":6200,"source":1393,"pc":[6028,6029]},{"teal":6201,"source":1393,"pc":[6030]},{"teal":6205,"source":1413,"pc":[6031,6032,6033]},{"teal":6209,"source":1417,"pc":[6034,6035,6036]},{"teal":6210,"source":1417,"pc":[6037,6038]},{"teal":6211,"source":1417,"pc":[6039,6040,6041]},{"teal":6212,"source":1417,"pc":[6042]},{"teal":6213,"source":1417,"pc":[6043]},{"teal":6214,"source":1413,"pc":[6044]},{"teal":6217,"source":50,"pc":[6045,6046,6047,6048,6049,6050]},{"teal":6218,"source":50,"pc":[6051,6052,6053]},{"teal":6219,"source":50,"pc":[6054,6055,6056,6057]},{"teal":6222,"source":50,"errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[6058]},{"teal":6225,"source":50,"pc":[6059,6060,6061,6062,6063,6064]},{"teal":6226,"source":50,"pc":[6065,6066,6067,6068,6069,6070]},{"teal":6227,"source":50,"pc":[6071,6072,6073,6074,6075,6076]},{"teal":6228,"source":50,"pc":[6077,6078,6079,6080,6081,6082]},{"teal":6229,"source":50,"pc":[6083,6084,6085,6086,6087,6088]},{"teal":6230,"source":50,"pc":[6089,6090,6091,6092,6093,6094]},{"teal":6231,"source":50,"pc":[6095,6096,6097,6098,6099,6100]},{"teal":6232,"source":50,"pc":[6101,6102,6103,6104,6105,6106]},{"teal":6233,"source":50,"pc":[6107,6108,6109,6110,6111,6112]},{"teal":6234,"source":50,"pc":[6113,6114,6115,6116,6117,6118]},{"teal":6235,"source":50,"pc":[6119,6120,6121,6122,6123,6124]},{"teal":6236,"source":50,"pc":[6125,6126,6127,6128,6129,6130]},{"teal":6237,"source":50,"pc":[6131,6132,6133,6134,6135,6136]},{"teal":6238,"source":50,"pc":[6137,6138,6139,6140,6141,6142]},{"teal":6239,"source":50,"pc":[6143,6144,6145,6146,6147,6148]},{"teal":6240,"source":50,"pc":[6149,6150,6151,6152,6153,6154]},{"teal":6241,"source":50,"pc":[6155,6156,6157,6158,6159,6160]},{"teal":6242,"source":50,"pc":[6161,6162,6163,6164,6165,6166]},{"teal":6243,"source":50,"pc":[6167,6168,6169,6170,6171,6172]},{"teal":6244,"source":50,"pc":[6173,6174,6175,6176,6177,6178]},{"teal":6245,"source":50,"pc":[6179,6180,6181,6182,6183,6184]},{"teal":6246,"source":50,"pc":[6185,6186,6187,6188,6189,6190]},{"teal":6247,"source":50,"pc":[6191,6192,6193,6194,6195,6196]},{"teal":6248,"source":50,"pc":[6197,6198,6199,6200,6201,6202]},{"teal":6249,"source":50,"pc":[6203,6204,6205,6206,6207,6208]},{"teal":6250,"source":50,"pc":[6209,6210,6211,6212,6213,6214]},{"teal":6251,"source":50,"pc":[6215,6216,6217,6218,6219,6220]},{"teal":6252,"source":50,"pc":[6221,6222,6223,6224,6225,6226]},{"teal":6253,"source":50,"pc":[6227,6228,6229,6230,6231,6232]},{"teal":6254,"source":50,"pc":[6233,6234,6235,6236,6237,6238]},{"teal":6255,"source":50,"pc":[6239,6240,6241,6242,6243,6244]},{"teal":6256,"source":50,"pc":[6245,6246,6247,6248,6249,6250]},{"teal":6257,"source":50,"pc":[6251,6252,6253,6254,6255,6256]},{"teal":6258,"source":50,"pc":[6257,6258,6259]},{"teal":6259,"source":50,"pc":[6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327]},{"teal":6262,"source":50,"errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6328]}],"clear":[]},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMy4yCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIGxpbmVzIG9mIFRFQUwgYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgaW4gc2NyYXRjaCBzbG90cwpwdXNoYnl0ZXMgVE1QTF9uZmRSZWdpc3RyeUFwcElkCmJ0b2kKc3RvcmUgMjAwCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50IDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKTogdm9pZApjcmVhdGVBcHBsaWNhdGlvbjoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyCgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZSAweDY5NmU2OTc0IC8vICJpbml0IgoJaW50IDAKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSAwCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglpbnQgMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlID0gMAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJaW50IDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludCAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uY3JlYXRlKGFwcHJvdmFsUHJvZ3JhbVNpemUpCglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkCiphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGE6CgkvLyBkYXRhOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gb2Zmc2V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoJY2FsbHN1YiBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YQoJaW50IDEKCXJldHVybgoKLy8gbG9hZFN0YWtpbmdDb250cmFjdERhdGEob2Zmc2V0OiB1aW50NjQsIGRhdGE6IGJ5dGVzKTogdm9pZApsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YToKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGUgMHg2OTZlNjk3NCAvLyAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NQoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5yZXBsYWNlKG9mZnNldCwgZGF0YSkKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50IDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlIDB4Njk2ZTY5NzQgLy8gImluaXQiCglpbnQgMQoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50IDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50IDMKCWludCAxMQoJaW50IDAKCWR1cG4gMgoJaW50IDMKCWludCAxCgljYWxsc3ViIG1pbkJhbGFuY2VGb3JBY2NvdW50CglpdG9iCgljb25jYXQKCWludCAxMDAwMDAKCWludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglpbnQgMTc5CgljYWxsc3ViIGNvc3RGb3JCb3hTdG9yYWdlCglpdG9iCgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UHJvdG9jb2xDb25zdHJhaW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKTogQ29uc3RyYWludHMKLy8KLy8gUmV0dXJucyB0aGUgcHJvdG9jb2wgY29uc3RyYWludHMgc28gdGhhdCBVSXMgY2FuIGxpbWl0IHdoYXQgdXNlcnMgc3BlY2lmeSBmb3IgdmFsaWRhdG9yIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KZ2V0UHJvdG9jb2xDb25zdHJhaW50czoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OQoJLy8gcmV0dXJuIHsKCS8vICAgICAgICAgICAgIGVwb2NoUGF5b3V0Um91bmRzTWluOiBNSU5fRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNYXg6IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBtaW5QY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1JTl9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWF4UGN0VG9WYWxpZGF0b3JXRm91ckRlY2ltYWxzOiBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICAgICAgIG1pbkVudHJ5U3Rha2U6IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLAoJLy8gICAgICAgICAgICAgbWF4QWxnb1BlclBvb2w6IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCksCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyVmFsaWRhdG9yOiB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgYW10Q29uc2lkZXJlZFNhdHVyYXRlZDogdGhpcy5hbGdvU2F0dXJhdGlvbkxldmVsKCksCgkvLyAgICAgICAgICAgICBtYXhOb2RlczogTUFYX05PREVTLAoJLy8gICAgICAgICAgICAgbWF4UG9vbHNQZXJOb2RlOiBNQVhfUE9PTFNfUEVSX05PREUsCgkvLyAgICAgICAgICAgICBtYXhTdGFrZXJzUGVyUG9vbDogTUFYX1NUQUtFUlNfUEVSX1BPT0wsCgkvLyAgICAgICAgIH0KCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGY0MjQwMDAwMDAwMDAwMDBmNDI0MAoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCWl0b2IKCWNvbmNhdAoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglpdG9iCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAzCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMGM4Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CiphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9yczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQKCWNhbGxzdWIgZ2V0TnVtVmFsaWRhdG9ycwoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE51bVZhbGlkYXRvcnMoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkYXRvcnMKZ2V0TnVtVmFsaWRhdG9yczoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE2OQoJLy8gcmV0dXJuIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZQoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglpbnQgMAoJaW50IDI0MgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludCAyNDIgLy8gaGVhZE9mZnNldAoJaW50IDI2CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50IDgKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJY29uY2F0CglyZXRzdWIKCi8vIGdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRQb29sczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoJY2FsbHN1YiBnZXRQb29scwoJZHVwCglsZW4KCWludCAxOAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sSW5mb1tdCi8vCi8vIFJldHVybiBsaXN0IG9mIGFsbCBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZAovLyBAcmV0dXJuIHtQb29sSW5mb1tdfSAtIGFycmF5IG9mIHBvb2xzCi8vIE5vdCBjYWxsYWJsZSBmcm9tIG90aGVyIGNvbnRyYWN0cyBiZWNhdXNlID4xSyByZXR1cm4gYnV0IGNhbiBiZSBjYWxsZWQgdy8gc2ltdWxhdGUgd2hpY2ggYnVtcHMgbG9nIHJldHVybnMKZ2V0UG9vbHM6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTk5CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludCAyNjggLy8gaGVhZE9mZnNldAoJaW50IDQzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDEKCS8vIHBvb2xTZXRbaV0ucG9vbEFwcElkID09PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWYwX2VuZAoKCS8vICppZjBfY29uc2VxdWVudAoJYiAqZm9yXzBfZW5kCgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDE4CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKKmZvcl8wX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA3CgkvLyByZXR1cm4gcmV0RGF0YQoJZnJhbWVfZGlnIDAgLy8gcmV0RGF0YTogUG9vbEluZm9bXQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZ2V0UG9vbEFwcElkOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBwb29sSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBnZXRQb29sQXBwSWQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBnZXRQb29sQXBwSWQodmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQpOiB1aW50NjQKLy8KLy8gZ2V0UG9vbEFwcElkIGlzIHVzZWZ1bCBmb3IgY2FsbGVycyB0byBkZXRlcm1pbmUgYXBwIHRvIGNhbGwgZm9yIHJlbW92aW5nIHN0YWtlIGlmIHRoZXkgZG9uJ3QgaGF2ZSBzdGFraW5nIG9yCi8vIHdhbnQgdG8gZ2V0IHN0YWtlciBsaXN0IGZvciBhbiBhY2NvdW50LiAgVGhlIHN0YWtpbmcgcG9vbCBhbHNvIHVzZXMgaXQgdG8gZ2V0IHRoZSBhcHAgaWQgb2Ygc3Rha2luZyBwb29sIDEKLy8gKHdoaWNoIGNvbnRhaW5zIHJld2FyZCB0b2tlbnMgaWYgYmVpbmcgdXNlZCkgc28gdGhhdCB0aGUgYW1vdW50IGF2YWlsYWJsZSBjYW4gYmUgZGV0ZXJtaW5lZC4KZ2V0UG9vbEFwcElkOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjE3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAwCgkhPQoJZHVwCglieiAqc2tpcF9hbmQwCglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludCAyNAoJPD0KCSYmCgoqc2tpcF9hbmQwOgoJLy8gcG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sSWQgLSAxXS5wb29sQXBwSWQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXJldHN1YgoKLy8gZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCiphYmlfcm91dGVfZ2V0UG9vbEluZm86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMjQKCT09CgoJLy8gYXJndW1lbnQgMCAocG9vbEtleSkgZm9yIGdldFBvb2xJbmZvIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJY2FsbHN1YiBnZXRQb29sSW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldFBvb2xJbmZvKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBQb29sSW5mbwpnZXRQb29sSW5mbzoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIyNgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglpbnQgMjE3CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludCAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50IDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY3CgkvLyAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJYnogKmlmM19lbmQKCgkvLyAqaWYzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2OAoJLy8gcmV0dXJuIFtdCglieXRlIDB4CgliICpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuCgoqaWYzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MAoJLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdID0gW10KCWJ5dGUgMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzEKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKCWNhbGxzdWIgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModmFsaWRhdG9ySWQ6IHVpbnQ2NCk6IE5vZGVQb29sQXNzaWdubWVudENvbmZpZwpnZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJcHJvdG8gMSAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mjk0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoJY2FsbHN1YiBnZXRORkRSZWdpc3RyeUlECglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpOiB1aW50NjQKZ2V0TkZEUmVnaXN0cnlJRDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMwMQoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZAoJbG9hZCAyMDAgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0CgljYWxsc3ViIGFkZFZhbGlkYXRvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFZhbGlkYXRvcihtYnJQYXltZW50OiBQYXlUeG4sIG5mZE5hbWU6IHN0cmluZywgY29uZmlnOiBWYWxpZGF0b3JDb25maWcpOiB1aW50NjQKLy8KLy8gQWRkcyBhIG5ldyB2YWxpZGF0b3IKLy8gUmVxdWlyZXMgYXQgbGVhc3QgMTAgQUxHTyBhcyB0aGUgJ2ZlZScgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBoZWxwIGRpc3N1YWRlIHNwYW1tZWQgdmFsaWRhdG9yIGFkZHMuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBuZXcgdmFsaWRhdG9yIHN0b3JhZ2UKLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgKE9wdGlvbmFsKSBOYW1lIG9mIG5mZCAodXNlZCBhcyBkb3VibGUtY2hlY2sgYWdhaW5zdCBpZCBzcGVjaWZpZWQgaW4gY29uZmlnKQovLyBAcGFyYW0ge1ZhbGlkYXRvckNvbmZpZ30gY29uZmlnIFZhbGlkYXRvckNvbmZpZyBzdHJ1Y3QKLy8gQHJldHVybnMge3VpbnQ2NH0gdmFsaWRhdG9yIGlkCmFkZFZhbGlkYXRvcjoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzEzCgkvLyB0aGlzLnZhbGlkYXRlQ29uZmlnKGNvbmZpZykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJY2FsbHN1YiB2YWxpZGF0ZUNvbmZpZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNQoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkVmFsaWRhdG9yTWJyIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxNwoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCWludCAxMDAwMDAwMAoJPgoKCS8vIGZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gdmFsaWRhdG9ySWQgPSB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgKyAxCglieXRlIDB4NmU3NTZkNTYgLy8gIm51bVYiCglhcHBfZ2xvYmFsX2dldAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZSAweDZlNzU2ZDU2IC8vICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuY3JlYXRlKCkKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaW50IDEwOTIKCWJveF9jcmVhdGUKCXBvcAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcgPSBjb25maWcKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmlkID0gdmFsaWRhdG9ySWQKCWludCAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGUgMHg2OTJlNmY3NzZlNjU3MjJlNjEgLy8gImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM4CgkvLyBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCWJ5dGUgMHhhOGRkMjFjYiAvLyByZXRpT1BfYWRkZWRWYWxpZGF0b3IodWludDY0LGFkZHJlc3MsYWRkcmVzcykKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXI6CgkvLyBtYW5hZ2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1hbmFnZXIpIGZvciBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcgoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBtYW5hZ2VyOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBWYWxpZGF0b3IgbWFuYWdlciBmb3IgYSBzcGVjaWZpYyBWYWxpZGF0b3IgaWQuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gY2hhbmdlIHRoZSBtYW5hZ2VyIGZvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBtYW5hZ2VyIC0gVGhlIG5ldyBtYW5hZ2VyIGFkZHJlc3MuCmNoYW5nZVZhbGlkYXRvck1hbmFnZXI6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTkKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MAoJLy8gYXNzZXJ0KG1hbmFnZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MsICduZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzJykKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gbmVlZHMgdG8gYXQgbGVhc3QgYmUgdmFsaWQgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyID0gbWFuYWdlcgoJaW50IDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCS8vIHN1bnNldHRpbmdUbzogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Vuc2V0dGluZ09uOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbwoJaW50IDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdW5zZXR0aW5nT246IHVpbnQ2NCwgc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUpOiB2b2lkCi8vCi8vIFVwZGF0ZXMgdGhlIHN1bnNldCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiB2YWxpZGF0b3IuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ09uIC0gVGhlIG5ldyBzdW5zZXQgdGltZXN0YW1wLgovLyBAcGFyYW0ge3VpbnQ2NH0gc3Vuc2V0dGluZ1RvIC0gVGhlIG5ldyBzdW5zZXQgdG8gdmFsaWRhdG9yIGlkLgpjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJcHJvdG8gMyAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzczCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzQKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50IDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ1RvID0gc3Vuc2V0dGluZ1RvCglpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEOgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIG5mZEFwcElEOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JORkQKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck5GRCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBuZmRBcHBJRDogdWludDY0LCBuZmROYW1lOiBzdHJpbmcpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIE5GRCBmb3IgYSB2YWxpZGF0b3IgaW4gdGhlIHZhbGlkYXRvckxpc3QgY29udHJhY3QuCi8vIFsgT05MWSBPV05FUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IgdG8gdXBkYXRlLgovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIE5GRCB0byBhc3NpZ24gdG8gdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtzdHJpbmd9IG5mZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgTkZEICh3aGljaCBtdXN0IG1hdGNoKQpjaGFuZ2VWYWxpZGF0b3JORkQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OQoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozOTEKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludCA3MgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDAzCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDQKCS8vIGFzc2VydChjb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglpbnQgMTc3CglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludCAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjAKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgRW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgRW50cnlHYXRpbmdUeXBlIDwgR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgICAgICAgJ2ludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPAoJJiYKCipza2lwX2FuZDE6CgkvLyBpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlCglhc3NlcnQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI2CgkvLyBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDEKCT09CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDI3CgkvLyBhc3NlcnQoRW50cnlHYXRpbmdBZGRyZXNzICE9PSBnbG9iYWxzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoqaWY3X2VuZDoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzAKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICAgICAgICBFbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50IDMKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnQgNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludCA4MAoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglpbnQgODEKCWZyYW1lX2RpZyAtMyAvLyBFbnRyeUdhdGluZ0FkZHJlc3M6IEFkZHJlc3MKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWZyYW1lX2RpZyAtNSAvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJaW50IDE2MQoJZnJhbWVfZGlnIC02IC8vIFJld2FyZFBlclBheW91dDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAobWJyUGF5bWVudCkgZm9yIGFkZFBvb2wgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkUG9vbAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFBvb2wobWJyUGF5bWVudDogUGF5VHhuLCB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBub2RlTnVtOiB1aW50NjQpOiBWYWxpZGF0b3JQb29sS2V5Ci8vCi8vIEFkZHMgYSBuZXcgcG9vbCB0byBhIHZhbGlkYXRvcidzIHBvb2wgc2V0LCByZXR1cm5pbmcgdGhlICdrZXknIHRvIHJlZmVyZW5jZSB0aGUgcG9vbCBpbiB0aGUgZnV0dXJlIGZvciBzdGFraW5nLCBldGMuCi8vIFRoZSBjYWxsZXIgbXVzdCBwYXkgdGhlIGNvc3Qgb2YgdGhlIHZhbGlkYXRvcnMgTUJSIGluY3JlYXNlIGFzIHdlbGwgYXMgdGhlIE1CUiB0aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgcG9vbCBpdHNlbGYuCi8vCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBjYWxsIF0KLy8gQHBhcmFtIHtQYXlUeG59IG1iclBheW1lbnQgcGF5bWVudCBmcm9tIGNhbGxlciB3aGljaCBjb3ZlcnMgbWJyIGluY3JlYXNlIG9mIGFkZGluZyBhIG5ldyBwb29sCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCBpcyBpZCBvZiB2YWxpZGF0b3IgdG8gcG9vbCB0byAobXVzdCBiZSBvd25lciBvciBtYW5hZ2VyKQovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bSBpcyBub2RlIG51bWJlciB0byBhZGQgdG8KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2wga2V5IHRvIGNyZWF0ZWQgcG9vbAphZGRQb29sOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NAoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU3CgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiB0aGlzLmdldE1ickFtb3VudHMoKS5hZGRQb29sTWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTkKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludCAyNDIKCWludCAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY5CgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnQgMCAvLyBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCAwCglpbnQgNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGUgMHg3MDZmNmY2YzU0NjU2ZDcwNmM2MTc0NjU0MTcwNzA3MjZmNzY2MTZjNDI3OTc0NjU3MyAvLyAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWludCA0MDk2CglieXRlIDB4NzA2ZjZmNmM1NDY1NmQ3MDZjNjE3NDY1NDE3MDcwNzI2Zjc2NjE2YzQyNzk3NDY1NzMgLy8gInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfbGVuCgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUKCWFzc2VydAoJaW50IDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCWJ5dGUgYjY0IEN3PT0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzUKCS8vIGdsb2JhbE51bVVpbnQ6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtVWludAoJaW50IDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzYKCS8vIGdsb2JhbE51bUJ5dGVTbGljZTogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UKCWludCAzCglpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NwoJLy8gZXh0cmFQcm9ncmFtUGFnZXM6IDMKCWludCAzCglpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc4CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyBjcmVhdGluZ0NvbnRyYWN0SUQsIHZhbGlkYXRvcklkLCBwb29sSWQsIG1pbkVudHJ5U3Rha2UKCS8vICAgICAgICAgICAgICAgICBtZXRob2QoJ2NyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkJyksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih2YWxpZGF0b3JJZCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYihudW1Qb29scyBhcyB1aW50NjQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICAgICAgICBdCgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnQgMjA5CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyA9IG51bVBvb2xzIGFzIHVpbnQxNgoJaW50IDI0MgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDkxCgkvLyBwb29sQXBwSWQgPSB0aGlzLml0eG4uY3JlYXRlZEFwcGxpY2F0aW9uSUQuaWQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWZyYW1lX2J1cnkgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tudW1Qb29scyAtIDFdLnBvb2xBcHBJZCA9IHBvb2xBcHBJZAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCWJ5dGUgMHhmYmNjMGY2YiAvLyByZXRpT1BfdmFsaWRhdG9yQWRkZWRQb29sKHVpbnQ2NCx1aW50MTYsdWludDY0KQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnQgMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA1CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE0CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnQgMjI2CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGUgMHg3MzcwNzMgLy8gInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglpbnQgMTQ0Cglib3hfY3JlYXRlCglwb3AKCippZjExX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKyByZWFsQW1vdW50IDwgdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSwKCS8vICAgICAgICAgICAgICd0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAnLAoJLy8gICAgICAgICApCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJKwoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OAoJLy8gZmluZFJldCA9IHRoaXMuZmluZFBvb2xGb3JTdGFrZXIodmFsaWRhdG9ySWQsIHN0YWtlciwgcmVhbEFtb3VudCkKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJZnJhbWVfYnVyeSAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NTkKCS8vIHBvb2xLZXkgPSBmaW5kUmV0WzBdCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYyCgkvLyBwb29sS2V5LnBvb2xJZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMAoJPT0KCWJ6ICppZjEyX2VuZAoKCS8vICppZjEyX2NvbnNlcXVlbnQKCS8vIE5vIHBvb2wgYXZhaWxhYmxlIHdpdGggZnJlZSBzdGFrZS4gIFZhbGlkYXRvciBuZWVkcyB0byBhZGQgYW5vdGhlciBwb29sCgllcnIKCippZjEyX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2NwoJLy8gdGhpcy51cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlciwgcG9vbEtleSkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY2FsbHN1YiB1cGRhdGVTdGFrZXJQb29sU2V0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTcwCgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgICAgICAgcG9vbEtleSwKCS8vICAgICAgICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCWZyYW1lX2RpZyA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJY2FsbHN1YiBjYWxsUG9vbEFkZFN0YWtlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTc3CgkvLyB0aGlzLnJldGlPUF9zdGFrZUFkZGVkLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogdmFsaWRhdG9ySWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYW1vdW50U3Rha2VkOiByZWFsQW1vdW50LAoJLy8gICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgIH0pCglieXRlIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglpdG9iCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTg1CgkvLyByZXR1cm4gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gOAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNQoJLy8gcG9vbDFBcHBJRCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkCglpbnQgMjY4CglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnQgMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxM19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTUKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNgoJLy8gbGFzdFBheW91dFVwZGF0ZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby51cGRhdGVkRm9yUGF5b3V0CglpbnQgODkyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCgkvLyAqaWYxNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxNwoJLy8gbGFzdFBheW91dFVwZGF0ZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglpbnQgMAoJIT0KCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vICppZjE1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE5CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWIgKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuCgoqaWYxNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjIKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJaW50IDE2OQoJaW50IDQKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNQoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTZfZW5kCgoJLy8gKmlmMTZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI2CgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvCglpbnQgNzAwIC8vIGhlYWRPZmZzZXQKCWludCAyMDAKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnQgODkyCglmcmFtZV9kaWcgMSAvLyBjdXJSb3VuZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50IDI0MgoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnQgMjUyCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnQgMV8wMDBfMDAwCgltdWx3CglpbnQgMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVtpXSA9IG91clBvb2xQY3RPZldob2xlCglpbnQgNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NDQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludCA3MDAgLy8gaGVhZE9mZnNldAoJaW50IDIwMAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50IDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAxMCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayArPSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkCglpbnQgMjYwCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NQoJLy8gdGhpcy5yZXZlcmlmeU5GRE93bmVyc2hpcChwb29sS2V5LmlkKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgljYWxsc3ViIHJldmVyaWZ5TkZET3duZXJzaGlwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc3CgkvLyB0aGlzLnJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZS5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgYWxnb0FkZGVkOiBhbGdvVG9BZGQsCgkvLyAgICAgICAgICAgICByZXdhcmRUb2tlbkhlbGRCYWNrOiByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkLAoJLy8gICAgICAgICAgICAgc2F0dXJhdGVkQnVyblRvRmVlU2luazogc2F0dXJhdGVkQnVyblRvRmVlU2luaywKCS8vICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb246IHZhbGlkYXRvckNvbW1pc3Npb24sCgkvLyAgICAgICAgIH0pCglieXRlIDB4YjNlNDdjM2QgLy8gcmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlKHVpbnQ2NCx1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNSAvLyBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZDoKCS8vIHN0YWtlclJlbW92ZWQ6IGJvb2wKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXJSZW1vdmVkKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBib29sCglhc3NlcnQKCWludCAwCglnZXRiaXQKCgkvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWJ0b2kKCgkvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMyAoc3Rha2VyKSBmb3Igc3Rha2VSZW1vdmVkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZAoJY2FsbHN1YiBzdGFrZVJlbW92ZWQKCWludCAxCglyZXR1cm4KCi8vIHN0YWtlUmVtb3ZlZChwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NCwgcmV3YXJkUmVtb3ZlZDogdWludDY0LCBzdGFrZXJSZW1vdmVkOiBib29sZWFuKTogdm9pZAovLwovLyBzdGFrZVJlbW92ZWQgaXMgY2FsbGVkIGJ5IFN0YWtpbmcgcG9vbHMgdG8gaW5mb3JtIHRoZSB2YWxpZGF0b3IgKHVzKSB0aGF0IGEgcGFydGljdWxhciBhbW91bnQgb2YgdG90YWwgc3Rha2UgaGFzIGJlZW4gcmVtb3ZlZAovLyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIElmIGFueSBhbW91bnQgb2YgcmV3YXJkUmVtb3ZlZCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhhdCBhbW91bnQgb2YgcmV3YXJkIGlzIHNlbnQgdG8gdGhlIHVzZQovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgY2FsbGluZyB1cyBmcm9tIHdoaWNoIHN0YWtlIHdhcyByZW1vdmVkCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRSZW1vdmVkIC0gYWxnbyBhbW91bnQgcmVtb3ZlZAovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkUmVtb3ZlZCAtIGlmIGFwcGxpY2FibGUsIGFtb3VudCBvZiB0b2tlbiByZXdhcmQgcmVtb3ZlZCAoYnkgcG9vbCAxIGNhbGxlcikgb3IgVE8gcmVtb3ZlIGFuZCBwYXkgb3V0ICh2aWEgcG9vbCAxIGZyb20gZGlmZmVyZW50IHBvb2wgY2FsbGVyKQovLyBAcGFyYW0ge2Jvb2xlYW59IHN0YWtlclJlbW92ZWQKc3Rha2VSZW1vdmVkOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vICppZjE3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA3CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50IDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxN19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTAKCS8vIHRoaXMudmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWNhbGxzdWIgdmVyaWZ5UG9vbEtleUNhbGxlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxNAoJLy8gYXNzZXJ0KGFtb3VudFJlbW92ZWQgPiAwIHx8IHJld2FyZFJlbW92ZWQgPiAwLCAnc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkJykKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+CglkdXAKCWJueiAqc2tpcF9vcjIKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWludCAwCgk+Cgl8fAoKKnNraXBfb3IyOgoJLy8gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsZ28gb3IgcmV3YXJkIHdhcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnQgMjUyCglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZSAweDczNzQ2MTZiNjU2NCAvLyAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gKmlmMThfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjEKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnQgMAoJPgoJYnogKmlmMThfZWxzZQoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMgoJLy8gcmV3YXJkVG9rZW5JRCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyMwoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSUQgIT09IDAsICJyZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpbnQgMAoJIT0KCgkvLyByZXdhcmRSZW1vdmVkIGNhbid0IGJlIHNldCBpZiB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIHJld2FyZCB0b2tlbiEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcyNAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrID49IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgJ3Jld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgICAgICkKCWludCAyNjAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCT49CgoJLy8gcmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczMAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgLT0gcmV3YXJkUmVtb3ZlZAoJaW50IDI2MAoJZHVwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZCkKCWludCAyNjgKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczOAoJLy8gbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0KCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjE5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc0MQoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VSZW1vdmVkLmxvZyh7CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgYW1vdW50VW5zdGFrZWQ6IGFtb3VudFJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JRCksCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IHJld2FyZFJlbW92ZWQsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWIgKmlmMThfZW5kCgoqaWYxOF9lbHNlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzUxCgkvLyB0aGlzLnJldGlPUF9zdGFrZVJlbW92ZWQubG9nKHsKCS8vICAgICAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgICAgICBwb29sTnVtOiBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICBzdGFrZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICBhbW91bnRVbnN0YWtlZDogYW1vdW50UmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAvLyBubyB0b2tlbnMgcmV3YXJkZWQuLgoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC56ZXJvSW5kZXgsCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5zUmVjZWl2ZWQ6IDAsCgkvLyAgICAgICAgICAgICB9KQoJYnl0ZSAweDEyZjRiZDRiIC8vIHJldGlPUF9zdGFrZVJlbW92ZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJaW50IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnQgMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludCAyNDQKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDEKCS0KCWl0b2IKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzkKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wKCWZyYW1lX2RpZyAzIC8vIHN0YWtlck91dE9mUHJvdG9jb2w6IGJvb2wKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc4MAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnQgMQoJLQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNgoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDYKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludCAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludCAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZSBiNjQgQ29FQiAvLyAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnQgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjRfZW5kOgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjEKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjI1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNAoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmFsc2UKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjUKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyNwoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgyOQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1twb29sU2V0W2ldLnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgOCAvLyBoZWFkT2Zmc2V0CgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMzCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF0KCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjdfZW5kOgoKKmlmMjZfZW5kOgoKKmZvcl8zX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJaW50IDIwOQoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk+PQoKCS8vIG11c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ2CgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWludCA0MzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ3CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl80OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ4CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQ5CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDEwIC8vIGhlYWRPZmZzZXQKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlIDB4MDAKCWludCAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludCAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGUgMHgwMAoJaW50IDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50IDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50IDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzYKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgOAoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc4CgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50IDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCA8IE1BWF9OT0RFUwoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgOAoJPAoJYnogKmZvcl81X2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MAoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID09PSBwb29sQXBwSWQKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MQoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50IDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODgzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludCA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4NgoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODg3CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MQoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyOV9lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggKz0gMQoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJYiAqZm9yXzUKCipmb3JfNV9lbmQ6CgkvLyBjb3VsZG4ndCBmaW5kIHBvb2wgYXBwIGlkIGluIG5vZGVzIHRvIG1vdmUKCWVycgoJcmV0c3ViCgovLyBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAocmVjZWl2ZXIpIGZvciBlbXB0eVRva2VuUmV3YXJkcyBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGVtcHR5VG9rZW5SZXdhcmRzCglpdG9iCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gZW1wdHlUb2tlblJld2FyZHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcmVjZWl2ZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gU2VuZHMgdGhlIHJld2FyZCB0b2tlbnMgaGVsZCBpbiBwb29sIDEgdG8gc3BlY2lmaWVkIHJlY2VpdmVyLgovLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIG93bmVyIHdoZW4gdGhleSB3YW50IHRvIGdldCByZXdhcmQgdG9rZW5zICdiYWNrJyB3aGljaCB0aGV5IHNlbnQgdG8KLy8gdGhlIGZpcnN0IHBvb2wgKGxpa2VseSBiZWNhdXNlIHZhbGlkYXRvciBpcyBzdW5zZXR0aW5nLiAgQW55IHRva2VucyBjdXJyZW50bHkgJ3Jlc2VydmVkJyBmb3Igc3Rha2VycyB0byBjbGFpbSB3aWxsCi8vIE5PVCBiZSBzZW50IGFzIHRoZXkgbXVzdCBiZSBoZWxkIGJhY2sgZm9yIHN0YWtlcnMgdG8gbGF0ZXIgY2xhaW0uCi8vIFsgT05MWSBPV05FUiBDQU4gQ0FMTF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gcmVjZWl2ZXIgLSB0aGUgYWNjb3VudCB0byBzZW5kIHRoZSB0b2tlbnMgdG8gKG11c3QgYWxyZWFkeSBiZSBvcHRlZC1pbiB0byB0aGUgcmV3YXJkIHRva2VuKQovLyBAcmV0dXJucyB7dWludDY0fSB0aGUgYW1vdW50IG9mIHJld2FyZCB0b2tlbiBzZW50CmVtcHR5VG9rZW5SZXdhcmRzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxMQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEyCgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50IDE1MwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTEzCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrCglpbnQgMjYwCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTQKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnQgMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE1CgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50IDI2OAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTcKCS8vIHRva2VuUmV3YXJkQmFsID0KCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkyMQoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5wYXlUb2tlblJld2FyZD4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3JlY2VpdmVyLCByZXdhcmRUb2tlbklkLCB0b2tlblJld2FyZEJhbF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDI5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyIHx8CgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWludCA4CglpbnQgMzIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnQgNDAKCWludCAzMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyB2ZXJpZnlQb29sS2V5Q2FsbGVyIHZlcmlmaWVzIHRoZSBwYXNzZWQgaW4ga2V5IChmcm9tIGEgc3Rha2luZyBwb29sIGNhbGxpbmcgdXMgdG8gdXBkYXRlIG1ldHJpY3MpIGlzIHZhbGlkCi8vIGFuZCBtYXRjaGVzIHRoZSBpbmZvcm1hdGlvbiB3ZSBoYXZlIGluIG91ciBzdGF0ZS4gICdGYWtlJyBwb29scyBjb3VsZCBjYWxsIHVzIHRvIHVwZGF0ZSBvdXIgZGF0YSwgYnV0IHRoZXkKLy8gY2FuJ3QgZmFrZSB0aGUgaWRzIGFuZCBtb3N0IGltcG9ydGFudGx5IGFwcGxpY2F0aW9uIGlkKCEpIG9mIHRoZSBjYWxsZXIgdGhhdCBoYXMgdG8gbWF0Y2guCnZlcmlmeVBvb2xLZXlDYWxsZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQyCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMjQyCglpbnQgMgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludCAyNjggLy8gaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnQgMQoJLQoJaW50IDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglpbnQgOAoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBhc3NlcnQocG9vbEtleS5pZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCd2YWxpZGF0b3JJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OAoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpIGFzIHVpbnQ2NCkpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWJ5dGUgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjkKCS8vIHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvICE9PSAwCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMF9lbmQKCgkvLyAqaWYzMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDcyCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnQgNzIKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzQKCS8vIHZhbGlkYXRvckNvbmZpZy5vd25lciAhPT0gbmZkT3duZXIgJiYgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIgIT09IG5mZE93bmVyCglpbnQgOAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludCA0MAoJaW50IDMyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnQgNzIKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50IDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnQgNAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDkxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA+PSBNSU5fRVBPQ0hfTEVOR1RIICYmIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIDw9IE1BWF9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICAnZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA+PSBNSU5fUENUX1RPX1ZBTElEQVRPUiAmJiBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yIDw9IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgJ2NvbW1pc3Npb24gcGVyY2VudGFnZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ3CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludCAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50IDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludCAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMDcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXInLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludCAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50IDMKCTw9CgkmJgoKKnNraXBfYW5kODoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBtdXN0IGJlIGJlIGJldHdlZW4gMSBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTExMQoJLy8gY29uZmlnLnN1bnNldHRpbmdPbiAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglpbnQgMAoJIT0KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTIKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMzX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzNAoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMAoJKwoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQzCgkvLyByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCWl0eG5fbmV4dAoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTM5CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQwCgkvLyBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDgKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgNTAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50IDAKCWl0eG5fZmllbGQgRmVlCglieXRlIGI2NCBDb0VCIC8vICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludCBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYzNF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTUzCgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGUgMHg2ZTc1NmQ1Mzc0NjE2YjY1NzI3MyAvLyAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlIDB4NzM3NDYxNmI2NTY0IC8vICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsU3Rha2VycyA9IHBvb2xOdW1TdGFrZXJzIGFzIHVpbnQxNgoJaW50IDI2OCAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludCAxCgktCglpbnQgMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDggLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCA9IHBvb2xBbGdvU3Rha2VkCglpbnQgMjY4IC8vIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50IDEKCS0KCWludCAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnQgMTAgLy8gaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnQgMjQ0CglkdXAKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludCAxCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sCglmcmFtZV9kaWcgLTUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuCglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZSAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIC8vICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludCAxCgkrCglieXRlIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgLy8gIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludCAyNTIKCWR1cAoJaW50IDgKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTY2CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGUgMHg3Mzc0NjE2YjY1NjQgLy8gInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzAKCS8vIGFzc2VydCh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMpCglieXRlIDB4NzM3MDczIC8vICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3MgoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAwCgkrCglpbnQgOAoJZXh0cmFjdDMKCWJ0b2kKCWludCAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50IDEKCS0KCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyByZW1vdmVGcm9tU3Rha2VyUG9vbFNldChzdGFrZXI6IEFkZHJlc3MsIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkpOiBbYm9vbGVhbiwgYm9vbGVhbl0KLy8KLy8gUmVtb3ZlcyBhIHBvb2wga2V5IGZyb20gdGhlIHN0YWtlcidzIGFjdGl2ZSBwb29sIHNldCAtIGZhaWxzIGlmIG5vdCBmb3VuZCAoISkKLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUgcG9vbCBrZXkgdGhleSBzaG91bGQgYmUgc3RvcmVkIGluCi8vCi8vIEByZXR1cm4gW2Jvb2xlYW4sIGJvb2xlYW5dIFtpcyB0aGUgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHMgb2YgdGhlIGdpdmVuIFZBTElEQVRPUiwgYW5kIGlzIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzXQpyZW1vdmVGcm9tU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk5CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMAoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnQgMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAxCgkvLyBmb3VuZCA9IGZhbHNlCglpbnQgMAoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnQgMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl84OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNQoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50IDAKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0MF9lbmQKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwOAoJLy8gaW5BbnlQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA5CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludCAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnQgMAoJKwoJaW50IDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWY0MV9lbmQKCgkvLyAqaWY0MV9jb25zZXF1ZW50CgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludCAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDJfZWxzZQoKCS8vICppZjQyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTEKCS8vIGZvdW5kID0gdHJ1ZQoJaW50IDEKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTMKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJYnl0ZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoJYnl0ZSAweDczNzA3MyAvLyAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0Ml9lbmQKCippZjQyX2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnQgMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzgKCipmb3JfOF9lbmQ6CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTkKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyMwoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXQoJYnl0ZSAweDAwCglpbnQgMAoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludCAwCgk9PQoJc2V0Yml0CglpbnQgMQoJZnJhbWVfZGlnIDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoJaW50IDAKCT09CglzZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA0CglyZXRzdWIKCi8vIGFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKYWRkUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50IDkwMCAvLyBoZWFkT2Zmc2V0CglpbnQgMTkyCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJaW50IDIyNQoJaW50IDEKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludCAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludCAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnQgMQoJLQoJaW50IDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludCA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludCA4CglleHRyYWN0MwoJYnRvaQoJaW50IDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludCA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludCAxCgktCglpbnQgMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50IDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50IDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50IDgwCglpbnQgMQoJYnl0ZSAweDc2IC8vICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50IDAKCWludCAyNDIKCWJ5dGUgMHg3NiAvLyAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0Nl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRCB8fAoJLy8gICAgICAgICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50IDEKCT09CglkdXAKCWJueiAqc2tpcF9vcjQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludCAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludCAxNDUKCWludCA4CglieXRlIDB4NzYgLy8gInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnQgMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50IDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnQgMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAyCgk9PQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MAoJLy8gZm91bmQgPSBmYWxzZQoJaW50IDAKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnQgMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MgoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MwoJLy8gZm91bmQgPSB0cnVlCglpbnQgMQoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgliICpmb3JPZl8wX2VuZAoKKmlmNTBfZW5kOgoKKmZvck9mXzBfY29udGludWU6CgkvLyBpbmNyZW1lbnQgb2Zmc2V0IGFuZCBsb29wIGlmIG5vdCBvdXQgb2YgYm91bmRzCglmcmFtZV9kaWcgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoJaW50IDgKCSsKCWR1cAoJaW50IDMyIC8vIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnQgOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0OV9lbmQ6CgkvLyAqaWY1MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCAzCgk9PQoJYnogKmlmNTFfZW5kCgoJLy8gKmlmNTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNTFfZW5kOgoJLy8gKmlmNTJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk3CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludCA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZSAweDY5MmU2Zjc3NmU2NTcyMmU2MSAvLyAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxMAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLAoJLy8gICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTJfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOQoJLy8gdXNlck9mZmVyZWRORkROYW1lID0gQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpIGFzIHN0cmluZwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGUgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiaXNWYWxpZE5mZEFwcElkKHN0cmluZyx1aW50NjQpYm9vbCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglsb2FkIDIwMCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnQgMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGUgMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDkKCS8vIGFwcGxpY2F0aW9uQXJnczogWydyZWFkX3Byb3BlcnR5JywgJ3YuY2FBbGdvLjAuYXMnXQoJYnl0ZSAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWJ5dGUgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjYUFsZ29EYXRhLmxlbmd0aDsgaSArPSAzMikKCWludCAwCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgoqZm9yXzEwOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTMKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU0CgkvLyBhZGRyICE9PSByYXdCeXRlcyhnbG9iYWxzLnplcm9BZGRyZXNzKSAmJiBhZGRyID09PSByYXdCeXRlcyhhZGRyVG9GaW5kKQoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDExCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWZyYW1lX2RpZyAtMiAvLyBhZGRyVG9GaW5kOiBBZGRyZXNzCgk9PQoJJiYKCipza2lwX2FuZDExOgoJYnogKmlmNTNfZW5kCgoJLy8gKmlmNTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1NQoJLy8gcmV0dXJuIHRydWUKCWludCAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1M19lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MgoJLy8gaSArPSAzMgoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnQgMzIKCSsKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCWIgKmZvcl8xMAoKKmZvcl8xMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU4CgkvLyByZXR1cm4gZmFsc2UKCWludCAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxMDAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzcKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfSEFSRF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKQoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCWludCAxNTAKCW11bHcKCWludCAwCglpbnQgMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludCAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIG1pbkJhbCArPSBjb250cmFjdHMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyBjb250cmFjdHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNAoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludCAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50IDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNgoJLy8gbWluQmFsICs9IGxvY2FsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC00IC8vIGxvY2FsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDcKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnQgMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA5CgkvLyBtaW5CYWwgKz0gZ2xvYmFsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTcgLy8gZ2xvYmFsQnl0ZXM6IHVpbnQ2NAoJaW50IDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDEwCgkvLyByZXR1cm4gbWluQmFsCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDE3CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEUKCWludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCgltZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCW1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCgltZXRob2QgImdhcygpdm9pZCIKCW1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCgltZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCW1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCgltZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCgltZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCgltZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCgltZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCW1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCW1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCgltZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCW1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCW1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCW1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCW1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/validatorRegistry.algo.ts:50","pc":[1,2]},{"teal":16,"source":"contracts/validatorRegistry.algo.ts:50","pc":[3]},{"teal":17,"source":"contracts/validatorRegistry.algo.ts:50","pc":[4,5]},{"teal":18,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6]},{"teal":19,"source":"contracts/validatorRegistry.algo.ts:50","pc":[7,8]},{"teal":20,"source":"contracts/validatorRegistry.algo.ts:50","pc":[9]},{"teal":21,"source":"contracts/validatorRegistry.algo.ts:50","pc":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]},{"teal":25,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[36]},{"teal":30,"source":"contracts/validatorRegistry.algo.ts:81","pc":[37,38,39]},{"teal":31,"source":"contracts/validatorRegistry.algo.ts:81","pc":[40]},{"teal":32,"source":"contracts/validatorRegistry.algo.ts:81","pc":[41]},{"teal":36,"source":"contracts/validatorRegistry.algo.ts:81","pc":[42,43,44]},{"teal":40,"source":"contracts/validatorRegistry.algo.ts:82","pc":[45,46]},{"teal":41,"source":"contracts/validatorRegistry.algo.ts:82","pc":[47]},{"teal":42,"source":"contracts/validatorRegistry.algo.ts:82","pc":[48,49]},{"teal":43,"source":"contracts/validatorRegistry.algo.ts:82","pc":[50]},{"teal":44,"source":"contracts/validatorRegistry.algo.ts:82","pc":[51,52]},{"teal":45,"source":"contracts/validatorRegistry.algo.ts:82","pc":[53]},{"teal":46,"source":"contracts/validatorRegistry.algo.ts:82","pc":[54]},{"teal":50,"source":"contracts/validatorRegistry.algo.ts:83","pc":[55,56]},{"teal":51,"source":"contracts/validatorRegistry.algo.ts:83","pc":[57]},{"teal":52,"source":"contracts/validatorRegistry.algo.ts:83","pc":[58]},{"teal":56,"source":"contracts/validatorRegistry.algo.ts:84","pc":[59,60]},{"teal":57,"source":"contracts/validatorRegistry.algo.ts:84","pc":[61]},{"teal":58,"source":"contracts/validatorRegistry.algo.ts:84","pc":[62]},{"teal":62,"source":"contracts/validatorRegistry.algo.ts:85","pc":[63,64]},{"teal":63,"source":"contracts/validatorRegistry.algo.ts:85","pc":[65]},{"teal":64,"source":"contracts/validatorRegistry.algo.ts:85","pc":[66]},{"teal":65,"source":"contracts/validatorRegistry.algo.ts:81","pc":[67]},{"teal":70,"source":"contracts/validatorRegistry.algo.ts:88","pc":[68,69,70]},{"teal":71,"source":"contracts/validatorRegistry.algo.ts:88","pc":[71]},{"teal":74,"source":"contracts/validatorRegistry.algo.ts:88","pc":[72,73,74]},{"teal":75,"source":"contracts/validatorRegistry.algo.ts:88","pc":[75]},{"teal":76,"source":"contracts/validatorRegistry.algo.ts:88","pc":[76]},{"teal":80,"source":"contracts/validatorRegistry.algo.ts:88","pc":[77,78,79]},{"teal":84,"source":"contracts/validatorRegistry.algo.ts:90","pc":[80,81]},{"teal":85,"source":"contracts/validatorRegistry.algo.ts:90","pc":[82,83]},{"teal":86,"source":"contracts/validatorRegistry.algo.ts:90","pc":[84]},{"teal":87,"source":"contracts/validatorRegistry.algo.ts:90","pc":[85]},{"teal":88,"source":"contracts/validatorRegistry.algo.ts:88","pc":[86]},{"teal":93,"source":"contracts/validatorRegistry.algo.ts:93","pc":[87,88,89]},{"teal":94,"source":"contracts/validatorRegistry.algo.ts:93","pc":[90,91,92]},{"teal":97,"source":"contracts/validatorRegistry.algo.ts:93","pc":[93,94,95]},{"teal":98,"source":"contracts/validatorRegistry.algo.ts:93","pc":[96]},{"teal":101,"source":"contracts/validatorRegistry.algo.ts:93","pc":[97,98,99]},{"teal":102,"source":"contracts/validatorRegistry.algo.ts:93","pc":[100]},{"teal":103,"source":"contracts/validatorRegistry.algo.ts:93","pc":[101]},{"teal":107,"source":"contracts/validatorRegistry.algo.ts:93","pc":[102,103,104]},{"teal":111,"source":"contracts/validatorRegistry.algo.ts:94","pc":[105,106]},{"teal":112,"source":"contracts/validatorRegistry.algo.ts:94","pc":[107]},{"teal":113,"source":"contracts/validatorRegistry.algo.ts:94","pc":[108]},{"teal":114,"source":"contracts/validatorRegistry.algo.ts:94","pc":[109]},{"teal":115,"source":"contracts/validatorRegistry.algo.ts:94","pc":[110]},{"teal":116,"source":"contracts/validatorRegistry.algo.ts:94","pc":[111]},{"teal":120,"source":"contracts/validatorRegistry.algo.ts:95","pc":[112,113]},{"teal":121,"source":"contracts/validatorRegistry.algo.ts:95","pc":[114,115]},{"teal":122,"source":"contracts/validatorRegistry.algo.ts:95","pc":[116,117]},{"teal":123,"source":"contracts/validatorRegistry.algo.ts:95","pc":[118]},{"teal":124,"source":"contracts/validatorRegistry.algo.ts:93","pc":[119]},{"teal":129,"source":"contracts/validatorRegistry.algo.ts:98","pc":[120,121,122]},{"teal":130,"source":"contracts/validatorRegistry.algo.ts:98","pc":[123]},{"teal":131,"source":"contracts/validatorRegistry.algo.ts:98","pc":[124]},{"teal":135,"source":"contracts/validatorRegistry.algo.ts:98","pc":[125,126,127]},{"teal":139,"source":"contracts/validatorRegistry.algo.ts:99","pc":[128,129]},{"teal":140,"source":"contracts/validatorRegistry.algo.ts:99","pc":[130]},{"teal":141,"source":"contracts/validatorRegistry.algo.ts:99","pc":[131,132]},{"teal":142,"source":"contracts/validatorRegistry.algo.ts:99","pc":[133]},{"teal":143,"source":"contracts/validatorRegistry.algo.ts:99","pc":[134,135]},{"teal":144,"source":"contracts/validatorRegistry.algo.ts:99","pc":[136]},{"teal":145,"source":"contracts/validatorRegistry.algo.ts:99","pc":[137]},{"teal":146,"source":"contracts/validatorRegistry.algo.ts:98","pc":[138]},{"teal":151,"source":"contracts/validatorRegistry.algo.ts:105","pc":[139,140,141]},{"teal":152,"source":"contracts/validatorRegistry.algo.ts:105","pc":[142]},{"teal":153,"source":"contracts/validatorRegistry.algo.ts:105","pc":[143]},{"teal":159,"source":"contracts/validatorRegistry.algo.ts:105","pc":[144,145,146]},{"teal":160,"source":"contracts/validatorRegistry.algo.ts:105","pc":[147]},{"teal":165,"source":"contracts/validatorRegistry.algo.ts:116","pc":[148]},{"teal":168,"source":"contracts/validatorRegistry.algo.ts:116","pc":[149,150,151]},{"teal":169,"source":"contracts/validatorRegistry.algo.ts:116","pc":[152]},{"teal":170,"source":"contracts/validatorRegistry.algo.ts:116","pc":[153]},{"teal":171,"source":"contracts/validatorRegistry.algo.ts:116","pc":[154]},{"teal":172,"source":"contracts/validatorRegistry.algo.ts:116","pc":[155]},{"teal":184,"source":"contracts/validatorRegistry.algo.ts:116","pc":[156,157,158]},{"teal":209,"source":"contracts/validatorRegistry.algo.ts:121","pc":[159,160,161]},{"teal":210,"source":"contracts/validatorRegistry.algo.ts:121","pc":[162,163,164]},{"teal":211,"source":"contracts/validatorRegistry.algo.ts:121","pc":[165]},{"teal":212,"source":"contracts/validatorRegistry.algo.ts:131","pc":[166,167]},{"teal":213,"source":"contracts/validatorRegistry.algo.ts:130","pc":[168,169]},{"teal":214,"source":"contracts/validatorRegistry.algo.ts:129","pc":[170]},{"teal":215,"source":"contracts/validatorRegistry.algo.ts:129","pc":[171,172]},{"teal":216,"source":"contracts/validatorRegistry.algo.ts:126","pc":[173,174]},{"teal":217,"source":"contracts/validatorRegistry.algo.ts:123","pc":[175]},{"teal":218,"source":"contracts/validatorRegistry.algo.ts:122","pc":[176,177,178]},{"teal":219,"source":"contracts/validatorRegistry.algo.ts:122","pc":[179]},{"teal":220,"source":"contracts/validatorRegistry.algo.ts:122","pc":[180]},{"teal":221,"source":"contracts/validatorRegistry.algo.ts:134","pc":[181,182]},{"teal":222,"source":"contracts/validatorRegistry.algo.ts:135","pc":[183,184,185]},{"teal":223,"source":"contracts/validatorRegistry.algo.ts:135","pc":[186,187,188]},{"teal":224,"source":"contracts/validatorRegistry.algo.ts:134","pc":[189]},{"teal":225,"source":"contracts/validatorRegistry.algo.ts:134","pc":[190]},{"teal":226,"source":"contracts/validatorRegistry.algo.ts:134","pc":[191]},{"teal":227,"source":"contracts/validatorRegistry.algo.ts:139","pc":[192,193,194]},{"teal":228,"source":"contracts/validatorRegistry.algo.ts:138","pc":[195,196,197]},{"teal":229,"source":"contracts/validatorRegistry.algo.ts:138","pc":[198]},{"teal":230,"source":"contracts/validatorRegistry.algo.ts:138","pc":[199]},{"teal":231,"source":"contracts/validatorRegistry.algo.ts:116","pc":[200]},{"teal":236,"source":"contracts/validatorRegistry.algo.ts:147","pc":[201]},{"teal":239,"source":"contracts/validatorRegistry.algo.ts:147","pc":[202,203,204]},{"teal":240,"source":"contracts/validatorRegistry.algo.ts:147","pc":[205]},{"teal":241,"source":"contracts/validatorRegistry.algo.ts:147","pc":[206]},{"teal":242,"source":"contracts/validatorRegistry.algo.ts:147","pc":[207]},{"teal":243,"source":"contracts/validatorRegistry.algo.ts:147","pc":[208]},{"teal":249,"source":"contracts/validatorRegistry.algo.ts:147","pc":[209,210,211]},{"teal":265,"source":"contracts/validatorRegistry.algo.ts:154","pc":[212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253]},{"teal":266,"source":"contracts/validatorRegistry.algo.ts:155","pc":[254,255,256]},{"teal":267,"source":"contracts/validatorRegistry.algo.ts:155","pc":[257]},{"teal":268,"source":"contracts/validatorRegistry.algo.ts:155","pc":[258]},{"teal":269,"source":"contracts/validatorRegistry.algo.ts:156","pc":[259,260,261]},{"teal":270,"source":"contracts/validatorRegistry.algo.ts:156","pc":[262]},{"teal":271,"source":"contracts/validatorRegistry.algo.ts:156","pc":[263]},{"teal":272,"source":"contracts/validatorRegistry.algo.ts:157","pc":[264,265,266]},{"teal":273,"source":"contracts/validatorRegistry.algo.ts:157","pc":[267]},{"teal":274,"source":"contracts/validatorRegistry.algo.ts:157","pc":[268]},{"teal":275,"source":"contracts/validatorRegistry.algo.ts:158","pc":[269,270,271,272,273,274,275,276,277,278]},{"teal":276,"source":"contracts/validatorRegistry.algo.ts:158","pc":[279]},{"teal":277,"source":"contracts/validatorRegistry.algo.ts:159","pc":[280,281,282,283,284,285,286,287,288,289]},{"teal":278,"source":"contracts/validatorRegistry.algo.ts:159","pc":[290]},{"teal":279,"source":"contracts/validatorRegistry.algo.ts:160","pc":[291,292,293,294,295,296,297,298,299,300]},{"teal":280,"source":"contracts/validatorRegistry.algo.ts:160","pc":[301]},{"teal":281,"source":"contracts/validatorRegistry.algo.ts:147","pc":[302]},{"teal":286,"source":"contracts/validatorRegistry.algo.ts:167","pc":[303]},{"teal":289,"source":"contracts/validatorRegistry.algo.ts:167","pc":[304,305,306]},{"teal":290,"source":"contracts/validatorRegistry.algo.ts:167","pc":[307]},{"teal":291,"source":"contracts/validatorRegistry.algo.ts:167","pc":[308]},{"teal":292,"source":"contracts/validatorRegistry.algo.ts:167","pc":[309]},{"teal":293,"source":"contracts/validatorRegistry.algo.ts:167","pc":[310]},{"teal":294,"source":"contracts/validatorRegistry.algo.ts:167","pc":[311]},{"teal":300,"source":"contracts/validatorRegistry.algo.ts:167","pc":[312,313,314]},{"teal":304,"source":"contracts/validatorRegistry.algo.ts:169","pc":[315,316]},{"teal":305,"source":"contracts/validatorRegistry.algo.ts:169","pc":[317]},{"teal":306,"source":"contracts/validatorRegistry.algo.ts:167","pc":[318]},{"teal":311,"source":"contracts/validatorRegistry.algo.ts:172","pc":[319]},{"teal":314,"source":"contracts/validatorRegistry.algo.ts:173","pc":[320,321,322]},{"teal":315,"source":"contracts/validatorRegistry.algo.ts:173","pc":[323]},{"teal":318,"source":"contracts/validatorRegistry.algo.ts:172","pc":[324,325,326]},{"teal":319,"source":"contracts/validatorRegistry.algo.ts:172","pc":[327]},{"teal":320,"source":"contracts/validatorRegistry.algo.ts:172","pc":[328]},{"teal":321,"source":"contracts/validatorRegistry.algo.ts:172","pc":[329]},{"teal":322,"source":"contracts/validatorRegistry.algo.ts:172","pc":[330]},{"teal":326,"source":"contracts/validatorRegistry.algo.ts:172","pc":[331,332,333]},{"teal":330,"source":"contracts/validatorRegistry.algo.ts:174","pc":[334]},{"teal":331,"source":"contracts/validatorRegistry.algo.ts:174","pc":[335,336]},{"teal":332,"source":"contracts/validatorRegistry.algo.ts:174","pc":[337]},{"teal":333,"source":"contracts/validatorRegistry.algo.ts:174","pc":[338,339]},{"teal":334,"source":"contracts/validatorRegistry.algo.ts:174","pc":[340]},{"teal":335,"source":"contracts/validatorRegistry.algo.ts:174","pc":[341]},{"teal":336,"source":"contracts/validatorRegistry.algo.ts:174","pc":[342,343]},{"teal":337,"source":"contracts/validatorRegistry.algo.ts:174","pc":[344]},{"teal":338,"source":"contracts/validatorRegistry.algo.ts:172","pc":[345]},{"teal":343,"source":"contracts/validatorRegistry.algo.ts:177","pc":[346]},{"teal":346,"source":"contracts/validatorRegistry.algo.ts:178","pc":[347,348,349]},{"teal":347,"source":"contracts/validatorRegistry.algo.ts:178","pc":[350]},{"teal":350,"source":"contracts/validatorRegistry.algo.ts:177","pc":[351,352,353]},{"teal":351,"source":"contracts/validatorRegistry.algo.ts:177","pc":[354]},{"teal":352,"source":"contracts/validatorRegistry.algo.ts:177","pc":[355]},{"teal":353,"source":"contracts/validatorRegistry.algo.ts:177","pc":[356]},{"teal":354,"source":"contracts/validatorRegistry.algo.ts:177","pc":[357]},{"teal":358,"source":"contracts/validatorRegistry.algo.ts:177","pc":[358,359,360]},{"teal":362,"source":"contracts/validatorRegistry.algo.ts:179","pc":[361,362]},{"teal":363,"source":"contracts/validatorRegistry.algo.ts:179","pc":[363,364]},{"teal":364,"source":"contracts/validatorRegistry.algo.ts:179","pc":[365]},{"teal":365,"source":"contracts/validatorRegistry.algo.ts:179","pc":[366,367]},{"teal":366,"source":"contracts/validatorRegistry.algo.ts:179","pc":[368]},{"teal":367,"source":"contracts/validatorRegistry.algo.ts:179","pc":[369]},{"teal":368,"source":"contracts/validatorRegistry.algo.ts:179","pc":[370,371]},{"teal":369,"source":"contracts/validatorRegistry.algo.ts:179","pc":[372]},{"teal":370,"source":"contracts/validatorRegistry.algo.ts:177","pc":[373]},{"teal":375,"source":"contracts/validatorRegistry.algo.ts:182","pc":[374]},{"teal":378,"source":"contracts/validatorRegistry.algo.ts:183","pc":[375,376,377]},{"teal":379,"source":"contracts/validatorRegistry.algo.ts:183","pc":[378]},{"teal":382,"source":"contracts/validatorRegistry.algo.ts:182","pc":[379,380,381]},{"teal":383,"source":"contracts/validatorRegistry.algo.ts:182","pc":[382]},{"teal":384,"source":"contracts/validatorRegistry.algo.ts:182","pc":[383]},{"teal":385,"source":"contracts/validatorRegistry.algo.ts:182","pc":[384]},{"teal":386,"source":"contracts/validatorRegistry.algo.ts:182","pc":[385]},{"teal":390,"source":"contracts/validatorRegistry.algo.ts:182","pc":[386,387,388]},{"teal":397,"source":"contracts/validatorRegistry.algo.ts:185","pc":[389]},{"teal":398,"source":"contracts/validatorRegistry.algo.ts:185","pc":[390,391]},{"teal":399,"source":"contracts/validatorRegistry.algo.ts:185","pc":[392]},{"teal":400,"source":"contracts/validatorRegistry.algo.ts:185","pc":[393,394]},{"teal":401,"source":"contracts/validatorRegistry.algo.ts:185","pc":[395]},{"teal":402,"source":"contracts/validatorRegistry.algo.ts:185","pc":[396]},{"teal":403,"source":"contracts/validatorRegistry.algo.ts:185","pc":[397,398]},{"teal":404,"source":"contracts/validatorRegistry.algo.ts:185","pc":[399]},{"teal":405,"source":"contracts/validatorRegistry.algo.ts:186","pc":[400,401]},{"teal":406,"source":"contracts/validatorRegistry.algo.ts:186","pc":[402,403]},{"teal":407,"source":"contracts/validatorRegistry.algo.ts:186","pc":[404]},{"teal":408,"source":"contracts/validatorRegistry.algo.ts:186","pc":[405,406]},{"teal":409,"source":"contracts/validatorRegistry.algo.ts:186","pc":[407]},{"teal":410,"source":"contracts/validatorRegistry.algo.ts:186","pc":[408]},{"teal":411,"source":"contracts/validatorRegistry.algo.ts:186","pc":[409,410]},{"teal":412,"source":"contracts/validatorRegistry.algo.ts:186","pc":[411]},{"teal":413,"source":"contracts/validatorRegistry.algo.ts:186","pc":[412]},{"teal":414,"source":"contracts/validatorRegistry.algo.ts:182","pc":[413]},{"teal":419,"source":"contracts/validatorRegistry.algo.ts:196","pc":[414]},{"teal":422,"source":"contracts/validatorRegistry.algo.ts:197","pc":[415,416,417]},{"teal":423,"source":"contracts/validatorRegistry.algo.ts:197","pc":[418]},{"teal":426,"source":"contracts/validatorRegistry.algo.ts:196","pc":[419,420,421]},{"teal":427,"source":"contracts/validatorRegistry.algo.ts:196","pc":[422]},{"teal":428,"source":"contracts/validatorRegistry.algo.ts:196","pc":[423]},{"teal":429,"source":"contracts/validatorRegistry.algo.ts:196","pc":[424,425]},{"teal":430,"source":"contracts/validatorRegistry.algo.ts:196","pc":[426]},{"teal":431,"source":"contracts/validatorRegistry.algo.ts:196","pc":[427]},{"teal":432,"source":"contracts/validatorRegistry.algo.ts:196","pc":[428,429,430]},{"teal":433,"source":"contracts/validatorRegistry.algo.ts:196","pc":[431]},{"teal":434,"source":"contracts/validatorRegistry.algo.ts:196","pc":[432]},{"teal":435,"source":"contracts/validatorRegistry.algo.ts:196","pc":[433]},{"teal":436,"source":"contracts/validatorRegistry.algo.ts:196","pc":[434]},{"teal":437,"source":"contracts/validatorRegistry.algo.ts:196","pc":[435]},{"teal":438,"source":"contracts/validatorRegistry.algo.ts:196","pc":[436]},{"teal":447,"source":"contracts/validatorRegistry.algo.ts:196","pc":[437,438,439]},{"teal":450,"source":"contracts/validatorRegistry.algo.ts:196","pc":[440]},{"teal":451,"source":"contracts/validatorRegistry.algo.ts:196","pc":[441,442]},{"teal":455,"source":"contracts/validatorRegistry.algo.ts:198","pc":[443]},{"teal":456,"source":"contracts/validatorRegistry.algo.ts:198","pc":[444,445]},{"teal":460,"source":"contracts/validatorRegistry.algo.ts:199","pc":[446,447]},{"teal":461,"source":"contracts/validatorRegistry.algo.ts:199","pc":[448,449]},{"teal":462,"source":"contracts/validatorRegistry.algo.ts:199","pc":[450]},{"teal":463,"source":"contracts/validatorRegistry.algo.ts:199","pc":[451,452]},{"teal":464,"source":"contracts/validatorRegistry.algo.ts:199","pc":[453]},{"teal":465,"source":"contracts/validatorRegistry.algo.ts:199","pc":[454]},{"teal":466,"source":"contracts/validatorRegistry.algo.ts:199","pc":[455,456]},{"teal":467,"source":"contracts/validatorRegistry.algo.ts:199","pc":[457]},{"teal":468,"source":"contracts/validatorRegistry.algo.ts:199","pc":[458,459]},{"teal":472,"source":"contracts/validatorRegistry.algo.ts:200","pc":[460]},{"teal":473,"source":"contracts/validatorRegistry.algo.ts:200","pc":[461,462]},{"teal":478,"source":"contracts/validatorRegistry.algo.ts:200","pc":[463,464]},{"teal":479,"source":"contracts/validatorRegistry.algo.ts:200","pc":[465]},{"teal":480,"source":"contracts/validatorRegistry.algo.ts:200","pc":[466]},{"teal":481,"source":"contracts/validatorRegistry.algo.ts:200","pc":[467,468,469]},{"teal":486,"source":"contracts/validatorRegistry.algo.ts:201","pc":[470,471]},{"teal":487,"source":"contracts/validatorRegistry.algo.ts:201","pc":[472,473]},{"teal":488,"source":"contracts/validatorRegistry.algo.ts:201","pc":[474,475]},{"teal":489,"source":"contracts/validatorRegistry.algo.ts:201","pc":[476]},{"teal":490,"source":"contracts/validatorRegistry.algo.ts:201","pc":[477]},{"teal":491,"source":"contracts/validatorRegistry.algo.ts:201","pc":[478]},{"teal":492,"source":"contracts/validatorRegistry.algo.ts:201","pc":[479]},{"teal":493,"source":"contracts/validatorRegistry.algo.ts:201","pc":[480]},{"teal":494,"source":"contracts/validatorRegistry.algo.ts:201","pc":[481]},{"teal":495,"source":"contracts/validatorRegistry.algo.ts:201","pc":[482]},{"teal":496,"source":"contracts/validatorRegistry.algo.ts:201","pc":[483]},{"teal":497,"source":"contracts/validatorRegistry.algo.ts:201","pc":[484,485,486]},{"teal":500,"source":"contracts/validatorRegistry.algo.ts:203","pc":[487,488,489]},{"teal":505,"source":"contracts/validatorRegistry.algo.ts:205","pc":[490,491]},{"teal":506,"source":"contracts/validatorRegistry.algo.ts:205","pc":[492,493]},{"teal":507,"source":"contracts/validatorRegistry.algo.ts:205","pc":[494,495]},{"teal":508,"source":"contracts/validatorRegistry.algo.ts:205","pc":[496,497]},{"teal":509,"source":"contracts/validatorRegistry.algo.ts:205","pc":[498]},{"teal":510,"source":"contracts/validatorRegistry.algo.ts:205","pc":[499,500]},{"teal":511,"source":"contracts/validatorRegistry.algo.ts:205","pc":[501]},{"teal":512,"source":"contracts/validatorRegistry.algo.ts:205","pc":[502]},{"teal":513,"source":"contracts/validatorRegistry.algo.ts:205","pc":[503,504]},{"teal":518,"source":"contracts/validatorRegistry.algo.ts:200","pc":[505,506]},{"teal":519,"source":"contracts/validatorRegistry.algo.ts:200","pc":[507]},{"teal":520,"source":"contracts/validatorRegistry.algo.ts:200","pc":[508]},{"teal":521,"source":"contracts/validatorRegistry.algo.ts:200","pc":[509,510]},{"teal":522,"source":"contracts/validatorRegistry.algo.ts:200","pc":[511,512,513]},{"teal":527,"source":"contracts/validatorRegistry.algo.ts:207","pc":[514,515]},{"teal":530,"source":"contracts/validatorRegistry.algo.ts:196","pc":[516,517]},{"teal":533,"source":"contracts/validatorRegistry.algo.ts:196","pc":[518,519]},{"teal":534,"source":"contracts/validatorRegistry.algo.ts:196","pc":[520]},{"teal":539,"source":"contracts/validatorRegistry.algo.ts:215","pc":[521]},{"teal":542,"source":"contracts/validatorRegistry.algo.ts:216","pc":[522,523,524]},{"teal":543,"source":"contracts/validatorRegistry.algo.ts:216","pc":[525]},{"teal":546,"source":"contracts/validatorRegistry.algo.ts:216","pc":[526,527,528]},{"teal":547,"source":"contracts/validatorRegistry.algo.ts:216","pc":[529]},{"teal":550,"source":"contracts/validatorRegistry.algo.ts:215","pc":[530,531,532]},{"teal":551,"source":"contracts/validatorRegistry.algo.ts:215","pc":[533]},{"teal":552,"source":"contracts/validatorRegistry.algo.ts:215","pc":[534]},{"teal":553,"source":"contracts/validatorRegistry.algo.ts:215","pc":[535]},{"teal":554,"source":"contracts/validatorRegistry.algo.ts:215","pc":[536]},{"teal":555,"source":"contracts/validatorRegistry.algo.ts:215","pc":[537]},{"teal":563,"source":"contracts/validatorRegistry.algo.ts:215","pc":[538,539,540]},{"teal":570,"source":"contracts/validatorRegistry.algo.ts:218","pc":[541,542]},{"teal":571,"source":"contracts/validatorRegistry.algo.ts:218","pc":[543]},{"teal":572,"source":"contracts/validatorRegistry.algo.ts:218","pc":[544]},{"teal":573,"source":"contracts/validatorRegistry.algo.ts:218","pc":[545]},{"teal":574,"source":"contracts/validatorRegistry.algo.ts:218","pc":[546,547,548]},{"teal":575,"source":"contracts/validatorRegistry.algo.ts:218","pc":[549,550]},{"teal":576,"source":"contracts/validatorRegistry.algo.ts:218","pc":[551]},{"teal":577,"source":"contracts/validatorRegistry.algo.ts:218","pc":[552]},{"teal":578,"source":"contracts/validatorRegistry.algo.ts:218","pc":[553]},{"teal":582,"source":"contracts/validatorRegistry.algo.ts:217","errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[554]},{"teal":586,"source":"contracts/validatorRegistry.algo.ts:221","pc":[555,556]},{"teal":587,"source":"contracts/validatorRegistry.algo.ts:221","pc":[557,558]},{"teal":588,"source":"contracts/validatorRegistry.algo.ts:221","pc":[559]},{"teal":589,"source":"contracts/validatorRegistry.algo.ts:221","pc":[560]},{"teal":590,"source":"contracts/validatorRegistry.algo.ts:221","pc":[561,562]},{"teal":591,"source":"contracts/validatorRegistry.algo.ts:221","pc":[563]},{"teal":592,"source":"contracts/validatorRegistry.algo.ts:221","pc":[564]},{"teal":593,"source":"contracts/validatorRegistry.algo.ts:221","pc":[565]},{"teal":594,"source":"contracts/validatorRegistry.algo.ts:221","pc":[566]},{"teal":595,"source":"contracts/validatorRegistry.algo.ts:221","pc":[567]},{"teal":596,"source":"contracts/validatorRegistry.algo.ts:221","pc":[568]},{"teal":597,"source":"contracts/validatorRegistry.algo.ts:221","pc":[569,570]},{"teal":598,"source":"contracts/validatorRegistry.algo.ts:221","pc":[571]},{"teal":599,"source":"contracts/validatorRegistry.algo.ts:221","pc":[572]},{"teal":600,"source":"contracts/validatorRegistry.algo.ts:221","pc":[573,574]},{"teal":601,"source":"contracts/validatorRegistry.algo.ts:221","pc":[575]},{"teal":602,"source":"contracts/validatorRegistry.algo.ts:221","pc":[576]},{"teal":603,"source":"contracts/validatorRegistry.algo.ts:215","pc":[577]},{"teal":608,"source":"contracts/validatorRegistry.algo.ts:224","pc":[578]},{"teal":611,"source":"contracts/validatorRegistry.algo.ts:225","pc":[579,580,581]},{"teal":612,"source":"contracts/validatorRegistry.algo.ts:225","pc":[582]},{"teal":613,"source":"contracts/validatorRegistry.algo.ts:225","pc":[583]},{"teal":614,"source":"contracts/validatorRegistry.algo.ts:225","pc":[584]},{"teal":615,"source":"contracts/validatorRegistry.algo.ts:225","pc":[585]},{"teal":618,"source":"contracts/validatorRegistry.algo.ts:225","errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[586]},{"teal":621,"source":"contracts/validatorRegistry.algo.ts:224","pc":[587,588,589]},{"teal":622,"source":"contracts/validatorRegistry.algo.ts:224","pc":[590]},{"teal":623,"source":"contracts/validatorRegistry.algo.ts:224","pc":[591]},{"teal":624,"source":"contracts/validatorRegistry.algo.ts:224","pc":[592]},{"teal":625,"source":"contracts/validatorRegistry.algo.ts:224","pc":[593]},{"teal":629,"source":"contracts/validatorRegistry.algo.ts:224","pc":[594,595,596]},{"teal":633,"source":"contracts/validatorRegistry.algo.ts:226","pc":[597,598]},{"teal":634,"source":"contracts/validatorRegistry.algo.ts:226","pc":[599,600]},{"teal":635,"source":"contracts/validatorRegistry.algo.ts:226","pc":[601,602,603]},{"teal":636,"source":"contracts/validatorRegistry.algo.ts:226","pc":[604]},{"teal":637,"source":"contracts/validatorRegistry.algo.ts:226","pc":[605]},{"teal":638,"source":"contracts/validatorRegistry.algo.ts:226","pc":[606]},{"teal":639,"source":"contracts/validatorRegistry.algo.ts:226","pc":[607,608]},{"teal":640,"source":"contracts/validatorRegistry.algo.ts:226","pc":[609]},{"teal":641,"source":"contracts/validatorRegistry.algo.ts:226","pc":[610]},{"teal":642,"source":"contracts/validatorRegistry.algo.ts:226","pc":[611,612]},{"teal":643,"source":"contracts/validatorRegistry.algo.ts:226","pc":[613]},{"teal":644,"source":"contracts/validatorRegistry.algo.ts:226","pc":[614,615]},{"teal":645,"source":"contracts/validatorRegistry.algo.ts:226","pc":[616,617,618]},{"teal":646,"source":"contracts/validatorRegistry.algo.ts:226","pc":[619]},{"teal":647,"source":"contracts/validatorRegistry.algo.ts:226","pc":[620]},{"teal":648,"source":"contracts/validatorRegistry.algo.ts:226","pc":[621]},{"teal":649,"source":"contracts/validatorRegistry.algo.ts:226","pc":[622,623]},{"teal":650,"source":"contracts/validatorRegistry.algo.ts:226","pc":[624]},{"teal":651,"source":"contracts/validatorRegistry.algo.ts:224","pc":[625]},{"teal":656,"source":"contracts/validatorRegistry.algo.ts:236","pc":[626]},{"teal":659,"source":"contracts/validatorRegistry.algo.ts:237","pc":[627,628,629]},{"teal":660,"source":"contracts/validatorRegistry.algo.ts:237","pc":[630]},{"teal":663,"source":"contracts/validatorRegistry.algo.ts:236","pc":[631,632,633]},{"teal":664,"source":"contracts/validatorRegistry.algo.ts:236","pc":[634]},{"teal":665,"source":"contracts/validatorRegistry.algo.ts:236","pc":[635]},{"teal":666,"source":"contracts/validatorRegistry.algo.ts:236","pc":[636]},{"teal":667,"source":"contracts/validatorRegistry.algo.ts:236","pc":[637]},{"teal":668,"source":"contracts/validatorRegistry.algo.ts:236","pc":[638]},{"teal":678,"source":"contracts/validatorRegistry.algo.ts:236","pc":[639,640,641]},{"teal":681,"source":"contracts/validatorRegistry.algo.ts:236","pc":[642]},{"teal":682,"source":"contracts/validatorRegistry.algo.ts:236","pc":[643,644]},{"teal":686,"source":"contracts/validatorRegistry.algo.ts:238","pc":[645,646]},{"teal":687,"source":"contracts/validatorRegistry.algo.ts:238","pc":[647,648]},{"teal":688,"source":"contracts/validatorRegistry.algo.ts:238","pc":[649]},{"teal":689,"source":"contracts/validatorRegistry.algo.ts:238","pc":[650,651]},{"teal":690,"source":"contracts/validatorRegistry.algo.ts:238","pc":[652]},{"teal":691,"source":"contracts/validatorRegistry.algo.ts:238","pc":[653]},{"teal":692,"source":"contracts/validatorRegistry.algo.ts:238","pc":[654,655]},{"teal":693,"source":"contracts/validatorRegistry.algo.ts:238","pc":[656]},{"teal":694,"source":"contracts/validatorRegistry.algo.ts:238","pc":[657]},{"teal":695,"source":"contracts/validatorRegistry.algo.ts:238","pc":[658,659]},{"teal":699,"source":"contracts/validatorRegistry.algo.ts:239","pc":[660,661,662]},{"teal":700,"source":"contracts/validatorRegistry.algo.ts:239","pc":[663,664]},{"teal":701,"source":"contracts/validatorRegistry.algo.ts:239","pc":[665]},{"teal":702,"source":"contracts/validatorRegistry.algo.ts:239","pc":[666,667]},{"teal":706,"source":"contracts/validatorRegistry.algo.ts:240","pc":[668,669,670]},{"teal":707,"source":"contracts/validatorRegistry.algo.ts:240","pc":[671]},{"teal":708,"source":"contracts/validatorRegistry.algo.ts:240","pc":[672]},{"teal":709,"source":"contracts/validatorRegistry.algo.ts:240","pc":[673,674]},{"teal":710,"source":"contracts/validatorRegistry.algo.ts:240","pc":[675]},{"teal":711,"source":"contracts/validatorRegistry.algo.ts:240","pc":[676]},{"teal":712,"source":"contracts/validatorRegistry.algo.ts:240","pc":[677,678]},{"teal":713,"source":"contracts/validatorRegistry.algo.ts:240","pc":[679]},{"teal":714,"source":"contracts/validatorRegistry.algo.ts:240","pc":[680]},{"teal":715,"source":"contracts/validatorRegistry.algo.ts:240","pc":[681,682]},{"teal":720,"source":"contracts/validatorRegistry.algo.ts:241","pc":[683,684]},{"teal":721,"source":"contracts/validatorRegistry.algo.ts:241","pc":[685]},{"teal":722,"source":"contracts/validatorRegistry.algo.ts:241","pc":[686]},{"teal":723,"source":"contracts/validatorRegistry.algo.ts:241","pc":[687,688,689]},{"teal":728,"source":"contracts/validatorRegistry.algo.ts:242","pc":[690,691,692]},{"teal":729,"source":"contracts/validatorRegistry.algo.ts:242","pc":[693,694]},{"teal":735,"source":"contracts/validatorRegistry.algo.ts:244","pc":[695,696]},{"teal":736,"source":"contracts/validatorRegistry.algo.ts:244","pc":[697,698]},{"teal":737,"source":"contracts/validatorRegistry.algo.ts:244","pc":[699]},{"teal":738,"source":"contracts/validatorRegistry.algo.ts:244","pc":[700,701,702]},{"teal":743,"source":"contracts/validatorRegistry.algo.ts:245","pc":[703,704]},{"teal":744,"source":"contracts/validatorRegistry.algo.ts:245","pc":[705,706]},{"teal":749,"source":"contracts/validatorRegistry.algo.ts:247","pc":[707,708]},{"teal":752,"source":"contracts/validatorRegistry.algo.ts:236","pc":[709,710]},{"teal":755,"source":"contracts/validatorRegistry.algo.ts:236","pc":[711,712]},{"teal":756,"source":"contracts/validatorRegistry.algo.ts:236","pc":[713]},{"teal":761,"source":"contracts/validatorRegistry.algo.ts:254","pc":[714]},{"teal":764,"source":"contracts/validatorRegistry.algo.ts:255","pc":[715,716,717]},{"teal":765,"source":"contracts/validatorRegistry.algo.ts:255","pc":[718]},{"teal":766,"source":"contracts/validatorRegistry.algo.ts:255","pc":[719]},{"teal":767,"source":"contracts/validatorRegistry.algo.ts:255","pc":[720,721]},{"teal":768,"source":"contracts/validatorRegistry.algo.ts:255","pc":[722]},{"teal":771,"source":"contracts/validatorRegistry.algo.ts:255","errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[723]},{"teal":774,"source":"contracts/validatorRegistry.algo.ts:254","pc":[724,725,726]},{"teal":775,"source":"contracts/validatorRegistry.algo.ts:254","pc":[727,728]},{"teal":776,"source":"contracts/validatorRegistry.algo.ts:254","pc":[729]},{"teal":777,"source":"contracts/validatorRegistry.algo.ts:254","pc":[730,731]},{"teal":778,"source":"contracts/validatorRegistry.algo.ts:254","pc":[732]},{"teal":779,"source":"contracts/validatorRegistry.algo.ts:254","pc":[733]},{"teal":780,"source":"contracts/validatorRegistry.algo.ts:254","pc":[734]},{"teal":781,"source":"contracts/validatorRegistry.algo.ts:254","pc":[735]},{"teal":782,"source":"contracts/validatorRegistry.algo.ts:254","pc":[736]},{"teal":789,"source":"contracts/validatorRegistry.algo.ts:254","pc":[737,738,739]},{"teal":793,"source":"contracts/validatorRegistry.algo.ts:256","pc":[740]},{"teal":794,"source":"contracts/validatorRegistry.algo.ts:256","pc":[741,742]},{"teal":795,"source":"contracts/validatorRegistry.algo.ts:256","pc":[743]},{"teal":796,"source":"contracts/validatorRegistry.algo.ts:256","pc":[744]},{"teal":797,"source":"contracts/validatorRegistry.algo.ts:256","pc":[745]},{"teal":798,"source":"contracts/validatorRegistry.algo.ts:256","pc":[746]},{"teal":799,"source":"contracts/validatorRegistry.algo.ts:256","pc":[747]},{"teal":800,"source":"contracts/validatorRegistry.algo.ts:254","pc":[748]},{"teal":805,"source":"contracts/validatorRegistry.algo.ts:265","pc":[749]},{"teal":808,"source":"contracts/validatorRegistry.algo.ts:266","pc":[750,751,752]},{"teal":809,"source":"contracts/validatorRegistry.algo.ts:266","pc":[753]},{"teal":810,"source":"contracts/validatorRegistry.algo.ts:266","pc":[754]},{"teal":811,"source":"contracts/validatorRegistry.algo.ts:266","pc":[755,756]},{"teal":812,"source":"contracts/validatorRegistry.algo.ts:266","pc":[757]},{"teal":815,"source":"contracts/validatorRegistry.algo.ts:266","errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[758]},{"teal":818,"source":"contracts/validatorRegistry.algo.ts:265","pc":[759,760,761]},{"teal":819,"source":"contracts/validatorRegistry.algo.ts:265","pc":[762]},{"teal":820,"source":"contracts/validatorRegistry.algo.ts:265","pc":[763]},{"teal":821,"source":"contracts/validatorRegistry.algo.ts:265","pc":[764]},{"teal":822,"source":"contracts/validatorRegistry.algo.ts:265","pc":[765]},{"teal":823,"source":"contracts/validatorRegistry.algo.ts:265","pc":[766]},{"teal":824,"source":"contracts/validatorRegistry.algo.ts:265","pc":[767,768,769]},{"teal":825,"source":"contracts/validatorRegistry.algo.ts:265","pc":[770]},{"teal":826,"source":"contracts/validatorRegistry.algo.ts:265","pc":[771]},{"teal":827,"source":"contracts/validatorRegistry.algo.ts:265","pc":[772]},{"teal":828,"source":"contracts/validatorRegistry.algo.ts:265","pc":[773]},{"teal":829,"source":"contracts/validatorRegistry.algo.ts:265","pc":[774]},{"teal":830,"source":"contracts/validatorRegistry.algo.ts:265","pc":[775]},{"teal":839,"source":"contracts/validatorRegistry.algo.ts:265","pc":[776,777,778]},{"teal":842,"source":"contracts/validatorRegistry.algo.ts:265","pc":[779]},{"teal":843,"source":"contracts/validatorRegistry.algo.ts:265","pc":[780,781]},{"teal":848,"source":"contracts/validatorRegistry.algo.ts:267","pc":[782]},{"teal":849,"source":"contracts/validatorRegistry.algo.ts:267","pc":[783,784]},{"teal":850,"source":"contracts/validatorRegistry.algo.ts:267","pc":[785]},{"teal":851,"source":"contracts/validatorRegistry.algo.ts:267","pc":[786]},{"teal":852,"source":"contracts/validatorRegistry.algo.ts:267","pc":[787]},{"teal":853,"source":"contracts/validatorRegistry.algo.ts:267","pc":[788]},{"teal":854,"source":"contracts/validatorRegistry.algo.ts:267","pc":[789]},{"teal":855,"source":"contracts/validatorRegistry.algo.ts:267","pc":[790,791,792]},{"teal":860,"source":"contracts/validatorRegistry.algo.ts:268","pc":[793]},{"teal":861,"source":"contracts/validatorRegistry.algo.ts:268","pc":[794,795,796]},{"teal":866,"source":"contracts/validatorRegistry.algo.ts:270","pc":[797]},{"teal":867,"source":"contracts/validatorRegistry.algo.ts:270","pc":[798,799]},{"teal":871,"source":"contracts/validatorRegistry.algo.ts:271","pc":[800]},{"teal":872,"source":"contracts/validatorRegistry.algo.ts:271","pc":[801,802]},{"teal":873,"source":"contracts/validatorRegistry.algo.ts:271","pc":[803]},{"teal":874,"source":"contracts/validatorRegistry.algo.ts:271","pc":[804]},{"teal":877,"source":"contracts/validatorRegistry.algo.ts:271","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[805]},{"teal":878,"source":"contracts/validatorRegistry.algo.ts:271","pc":[806,807]},{"teal":882,"source":"contracts/validatorRegistry.algo.ts:272","pc":[808]},{"teal":883,"source":"contracts/validatorRegistry.algo.ts:272","pc":[809,810]},{"teal":888,"source":"contracts/validatorRegistry.algo.ts:272","pc":[811,812]},{"teal":889,"source":"contracts/validatorRegistry.algo.ts:272","pc":[813,814]},{"teal":890,"source":"contracts/validatorRegistry.algo.ts:272","pc":[815]},{"teal":891,"source":"contracts/validatorRegistry.algo.ts:272","pc":[816,817,818]},{"teal":896,"source":"contracts/validatorRegistry.algo.ts:273","pc":[819,820]},{"teal":897,"source":"contracts/validatorRegistry.algo.ts:273","pc":[821,822]},{"teal":898,"source":"contracts/validatorRegistry.algo.ts:273","pc":[823]},{"teal":899,"source":"contracts/validatorRegistry.algo.ts:273","pc":[824]},{"teal":900,"source":"contracts/validatorRegistry.algo.ts:273","pc":[825]},{"teal":901,"source":"contracts/validatorRegistry.algo.ts:273","pc":[826]},{"teal":902,"source":"contracts/validatorRegistry.algo.ts:273","pc":[827]},{"teal":903,"source":"contracts/validatorRegistry.algo.ts:273","pc":[828]},{"teal":904,"source":"contracts/validatorRegistry.algo.ts:273","pc":[829]},{"teal":905,"source":"contracts/validatorRegistry.algo.ts:273","pc":[830]},{"teal":906,"source":"contracts/validatorRegistry.algo.ts:273","pc":[831]},{"teal":907,"source":"contracts/validatorRegistry.algo.ts:273","pc":[832,833,834]},{"teal":912,"source":"contracts/validatorRegistry.algo.ts:274","pc":[835,836]},{"teal":913,"source":"contracts/validatorRegistry.algo.ts:274","pc":[837,838]},{"teal":914,"source":"contracts/validatorRegistry.algo.ts:274","pc":[839,840]},{"teal":915,"source":"contracts/validatorRegistry.algo.ts:274","pc":[841]},{"teal":916,"source":"contracts/validatorRegistry.algo.ts:274","pc":[842]},{"teal":917,"source":"contracts/validatorRegistry.algo.ts:274","pc":[843]},{"teal":918,"source":"contracts/validatorRegistry.algo.ts:274","pc":[844]},{"teal":919,"source":"contracts/validatorRegistry.algo.ts:274","pc":[845]},{"teal":920,"source":"contracts/validatorRegistry.algo.ts:274","pc":[846,847]},{"teal":927,"source":"contracts/validatorRegistry.algo.ts:272","pc":[848,849]},{"teal":928,"source":"contracts/validatorRegistry.algo.ts:272","pc":[850]},{"teal":929,"source":"contracts/validatorRegistry.algo.ts:272","pc":[851]},{"teal":930,"source":"contracts/validatorRegistry.algo.ts:272","pc":[852,853]},{"teal":931,"source":"contracts/validatorRegistry.algo.ts:272","pc":[854,855,856]},{"teal":936,"source":"contracts/validatorRegistry.algo.ts:277","pc":[857,858]},{"teal":940,"source":"contracts/validatorRegistry.algo.ts:265","pc":[859,860]},{"teal":943,"source":"contracts/validatorRegistry.algo.ts:265","pc":[861,862]},{"teal":944,"source":"contracts/validatorRegistry.algo.ts:265","pc":[863]},{"teal":949,"source":"contracts/validatorRegistry.algo.ts:287","pc":[864]},{"teal":952,"source":"contracts/validatorRegistry.algo.ts:288","pc":[865,866,867]},{"teal":953,"source":"contracts/validatorRegistry.algo.ts:288","pc":[868]},{"teal":956,"source":"contracts/validatorRegistry.algo.ts:287","pc":[869,870,871]},{"teal":957,"source":"contracts/validatorRegistry.algo.ts:287","pc":[872]},{"teal":958,"source":"contracts/validatorRegistry.algo.ts:287","pc":[873]},{"teal":959,"source":"contracts/validatorRegistry.algo.ts:287","pc":[874]},{"teal":960,"source":"contracts/validatorRegistry.algo.ts:287","pc":[875]},{"teal":970,"source":"contracts/validatorRegistry.algo.ts:287","pc":[876,877,878]},{"teal":974,"source":"contracts/validatorRegistry.algo.ts:289","pc":[879,880]},{"teal":975,"source":"contracts/validatorRegistry.algo.ts:289","pc":[881,882]},{"teal":976,"source":"contracts/validatorRegistry.algo.ts:289","pc":[883]},{"teal":977,"source":"contracts/validatorRegistry.algo.ts:289","pc":[884,885]},{"teal":978,"source":"contracts/validatorRegistry.algo.ts:289","pc":[886]},{"teal":979,"source":"contracts/validatorRegistry.algo.ts:289","pc":[887]},{"teal":980,"source":"contracts/validatorRegistry.algo.ts:289","pc":[888,889]},{"teal":981,"source":"contracts/validatorRegistry.algo.ts:289","pc":[890]},{"teal":982,"source":"contracts/validatorRegistry.algo.ts:287","pc":[891]},{"teal":987,"source":"contracts/validatorRegistry.algo.ts:292","pc":[892]},{"teal":990,"source":"contracts/validatorRegistry.algo.ts:293","pc":[893,894,895]},{"teal":991,"source":"contracts/validatorRegistry.algo.ts:293","pc":[896]},{"teal":994,"source":"contracts/validatorRegistry.algo.ts:292","pc":[897,898,899]},{"teal":995,"source":"contracts/validatorRegistry.algo.ts:292","pc":[900]},{"teal":996,"source":"contracts/validatorRegistry.algo.ts:292","pc":[901]},{"teal":997,"source":"contracts/validatorRegistry.algo.ts:292","pc":[902]},{"teal":998,"source":"contracts/validatorRegistry.algo.ts:292","pc":[903]},{"teal":1002,"source":"contracts/validatorRegistry.algo.ts:292","pc":[904,905,906]},{"teal":1006,"source":"contracts/validatorRegistry.algo.ts:294","pc":[907]},{"teal":1007,"source":"contracts/validatorRegistry.algo.ts:294","pc":[908,909]},{"teal":1008,"source":"contracts/validatorRegistry.algo.ts:294","pc":[910]},{"teal":1009,"source":"contracts/validatorRegistry.algo.ts:294","pc":[911]},{"teal":1010,"source":"contracts/validatorRegistry.algo.ts:294","pc":[912]},{"teal":1011,"source":"contracts/validatorRegistry.algo.ts:294","pc":[913]},{"teal":1012,"source":"contracts/validatorRegistry.algo.ts:294","pc":[914]},{"teal":1015,"source":"contracts/validatorRegistry.algo.ts:294","errorMessage":"the specified validator id doesn't exist","pc":[915]},{"teal":1019,"source":"contracts/validatorRegistry.algo.ts:296","pc":[916,917]},{"teal":1020,"source":"contracts/validatorRegistry.algo.ts:296","pc":[918,919]},{"teal":1021,"source":"contracts/validatorRegistry.algo.ts:296","pc":[920]},{"teal":1022,"source":"contracts/validatorRegistry.algo.ts:296","pc":[921,922]},{"teal":1023,"source":"contracts/validatorRegistry.algo.ts:296","pc":[923]},{"teal":1024,"source":"contracts/validatorRegistry.algo.ts:296","pc":[924]},{"teal":1025,"source":"contracts/validatorRegistry.algo.ts:296","pc":[925,926]},{"teal":1026,"source":"contracts/validatorRegistry.algo.ts:296","pc":[927]},{"teal":1027,"source":"contracts/validatorRegistry.algo.ts:292","pc":[928]},{"teal":1032,"source":"contracts/validatorRegistry.algo.ts:299","pc":[929]},{"teal":1035,"source":"contracts/validatorRegistry.algo.ts:299","pc":[930,931,932]},{"teal":1036,"source":"contracts/validatorRegistry.algo.ts:299","pc":[933]},{"teal":1037,"source":"contracts/validatorRegistry.algo.ts:299","pc":[934]},{"teal":1038,"source":"contracts/validatorRegistry.algo.ts:299","pc":[935]},{"teal":1039,"source":"contracts/validatorRegistry.algo.ts:299","pc":[936]},{"teal":1040,"source":"contracts/validatorRegistry.algo.ts:299","pc":[937]},{"teal":1044,"source":"contracts/validatorRegistry.algo.ts:299","pc":[938,939,940]},{"teal":1048,"source":"contracts/validatorRegistry.algo.ts:301","pc":[941,942]},{"teal":1049,"source":"contracts/validatorRegistry.algo.ts:299","pc":[943]},{"teal":1054,"source":"contracts/validatorRegistry.algo.ts:312","pc":[944]},{"teal":1057,"source":"contracts/validatorRegistry.algo.ts:312","pc":[945,946,947]},{"teal":1058,"source":"contracts/validatorRegistry.algo.ts:312","pc":[948]},{"teal":1059,"source":"contracts/validatorRegistry.algo.ts:312","pc":[949]},{"teal":1060,"source":"contracts/validatorRegistry.algo.ts:312","pc":[950,951]},{"teal":1061,"source":"contracts/validatorRegistry.algo.ts:312","pc":[952]},{"teal":1064,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[953]},{"teal":1067,"source":"contracts/validatorRegistry.algo.ts:312","pc":[954,955,956]},{"teal":1068,"source":"contracts/validatorRegistry.algo.ts:312","pc":[957,958,959]},{"teal":1071,"source":"contracts/validatorRegistry.algo.ts:312","pc":[960,961]},{"teal":1072,"source":"contracts/validatorRegistry.algo.ts:312","pc":[962]},{"teal":1073,"source":"contracts/validatorRegistry.algo.ts:312","pc":[963]},{"teal":1074,"source":"contracts/validatorRegistry.algo.ts:312","pc":[964]},{"teal":1075,"source":"contracts/validatorRegistry.algo.ts:312","pc":[965,966]},{"teal":1076,"source":"contracts/validatorRegistry.algo.ts:312","pc":[967]},{"teal":1077,"source":"contracts/validatorRegistry.algo.ts:312","pc":[968]},{"teal":1080,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[969]},{"teal":1083,"source":"contracts/validatorRegistry.algo.ts:312","pc":[970,971,972]},{"teal":1084,"source":"contracts/validatorRegistry.algo.ts:312","pc":[973]},{"teal":1085,"source":"contracts/validatorRegistry.algo.ts:312","pc":[974]},{"teal":1086,"source":"contracts/validatorRegistry.algo.ts:312","pc":[975]},{"teal":1087,"source":"contracts/validatorRegistry.algo.ts:312","pc":[976]},{"teal":1088,"source":"contracts/validatorRegistry.algo.ts:312","pc":[977]},{"teal":1100,"source":"contracts/validatorRegistry.algo.ts:312","pc":[978,979,980]},{"teal":1103,"source":"contracts/validatorRegistry.algo.ts:312","pc":[981]},{"teal":1107,"source":"contracts/validatorRegistry.algo.ts:313","pc":[982,983]},{"teal":1108,"source":"contracts/validatorRegistry.algo.ts:313","pc":[984,985,986]},{"teal":1113,"source":"contracts/validatorRegistry.algo.ts:315","pc":[987,988]},{"teal":1114,"source":"contracts/validatorRegistry.algo.ts:315","pc":[989,990]},{"teal":1115,"source":"contracts/validatorRegistry.algo.ts:315","pc":[991,992]},{"teal":1116,"source":"contracts/validatorRegistry.algo.ts:315","pc":[993]},{"teal":1119,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[994]},{"teal":1122,"source":"contracts/validatorRegistry.algo.ts:315","pc":[995,996]},{"teal":1123,"source":"contracts/validatorRegistry.algo.ts:315","pc":[997,998]},{"teal":1124,"source":"contracts/validatorRegistry.algo.ts:315","pc":[999,1000,1001]},{"teal":1125,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1002,1003,1004]},{"teal":1126,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1005]},{"teal":1127,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1006]},{"teal":1130,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1007]},{"teal":1134,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1008,1009]},{"teal":1135,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1010,1011]},{"teal":1136,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1012,1013,1014,1015,1016]},{"teal":1137,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1017]},{"teal":1140,"source":"contracts/validatorRegistry.algo.ts:317","errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1018]},{"teal":1144,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1019,1020]},{"teal":1145,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1021]},{"teal":1146,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1022]},{"teal":1147,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1023]},{"teal":1148,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1024,1025]},{"teal":1152,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1026,1027]},{"teal":1153,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1028,1029]},{"teal":1154,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1030]},{"teal":1158,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1031]},{"teal":1159,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1032,1033]},{"teal":1160,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1034]},{"teal":1161,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1035]},{"teal":1162,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1036,1037,1038]},{"teal":1163,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1039]},{"teal":1164,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1040]},{"teal":1168,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1041]},{"teal":1169,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1042,1043]},{"teal":1170,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1044]},{"teal":1171,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1045,1046]},{"teal":1172,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1047]},{"teal":1173,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1048]},{"teal":1174,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1049,1050]},{"teal":1175,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1051]},{"teal":1179,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1052]},{"teal":1180,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1053,1054]},{"teal":1181,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1055]},{"teal":1182,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1056]},{"teal":1183,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1057,1058]},{"teal":1184,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1059]},{"teal":1185,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1060]},{"teal":1186,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1061,1062]},{"teal":1187,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1063]},{"teal":1192,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1064,1065]},{"teal":1193,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1066,1067,1068]},{"teal":1194,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1069]},{"teal":1195,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1070]},{"teal":1196,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1071]},{"teal":1197,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1072,1073,1074]},{"teal":1202,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1075,1076]},{"teal":1203,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1077,1078,1079]},{"teal":1204,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1080]},{"teal":1205,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1081,1082,1083]},{"teal":1208,"source":"contracts/validatorRegistry.algo.ts:330","errorMessage":"provided NFD must be valid","pc":[1084]},{"teal":1215,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1085,1086]},{"teal":1216,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1087,1088]},{"teal":1217,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1089,1090,1091]},{"teal":1218,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1092]},{"teal":1219,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1093,1094]},{"teal":1220,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1095]},{"teal":1223,"source":"contracts/validatorRegistry.algo.ts:333","errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1096]},{"teal":1224,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1097]},{"teal":1227,"source":"contracts/validatorRegistry.algo.ts:332","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1098]},{"teal":1234,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1099,1100]},{"teal":1235,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1101,1102,1103]},{"teal":1236,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1104]},{"teal":1237,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1105,1106]},{"teal":1238,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1107]},{"teal":1239,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1108]},{"teal":1240,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1109,1110,1111]},{"teal":1241,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1112,1113]},{"teal":1242,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1114,1115,1116]},{"teal":1243,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1117]},{"teal":1244,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1118,1119]},{"teal":1245,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1120]},{"teal":1246,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1121]},{"teal":1249,"source":"contracts/validatorRegistry.algo.ts:337","pc":[1122,1123,1124]},{"teal":1257,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1125,1126]},{"teal":1258,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1127,1128,1129]},{"teal":1259,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1130]},{"teal":1260,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1131,1132,1133]},{"teal":1263,"source":"contracts/validatorRegistry.algo.ts:342","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1134]},{"teal":1268,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1135,1136,1137,1138,1139,1140]},{"teal":1269,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1141,1142]},{"teal":1270,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1143]},{"teal":1271,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1144,1145]},{"teal":1272,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1146,1147,1148]},{"teal":1273,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1149]},{"teal":1274,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1150,1151]},{"teal":1275,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1152,1153,1154]},{"teal":1276,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1155]},{"teal":1277,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1156]},{"teal":1278,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1157]},{"teal":1282,"source":"contracts/validatorRegistry.algo.ts:348","pc":[1158,1159]},{"teal":1285,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1160,1161]},{"teal":1286,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1162]},{"teal":1291,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1163,1164,1165]},{"teal":1292,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1166]},{"teal":1293,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1167]},{"teal":1294,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1168,1169]},{"teal":1295,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1170]},{"teal":1298,"source":"contracts/validatorRegistry.algo.ts:358","errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1171]},{"teal":1301,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1172,1173,1174]},{"teal":1302,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1175]},{"teal":1305,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1176,1177,1178]},{"teal":1306,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1179]},{"teal":1307,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1180]},{"teal":1317,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1181,1182,1183]},{"teal":1321,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1184,1185]},{"teal":1322,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1186,1187,1188]},{"teal":1326,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1189,1190]},{"teal":1327,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1191,1192]},{"teal":1328,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1193]},{"teal":1331,"source":"contracts/validatorRegistry.algo.ts:360","errorMessage":"needs to at least be valid address","pc":[1194]},{"teal":1335,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1195,1196]},{"teal":1336,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1197,1198]},{"teal":1337,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1199]},{"teal":1338,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1200,1201]},{"teal":1339,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1202]},{"teal":1340,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1203]},{"teal":1341,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1204,1205]},{"teal":1342,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1206]},{"teal":1343,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1207]},{"teal":1348,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1208,1209,1210]},{"teal":1349,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1211]},{"teal":1352,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1212,1213,1214]},{"teal":1353,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1215]},{"teal":1356,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1216,1217,1218]},{"teal":1357,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1219]},{"teal":1360,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1220,1221,1222]},{"teal":1361,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1223]},{"teal":1362,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1224]},{"teal":1373,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1225,1226,1227]},{"teal":1377,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1228,1229]},{"teal":1378,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1230,1231,1232]},{"teal":1382,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1233,1234]},{"teal":1383,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1235,1236]},{"teal":1384,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1237]},{"teal":1385,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1238]},{"teal":1386,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1239,1240]},{"teal":1387,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1241]},{"teal":1388,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1242]},{"teal":1389,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1243,1244]},{"teal":1390,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1245]},{"teal":1394,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1246,1247,1248]},{"teal":1395,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1249,1250]},{"teal":1396,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1251]},{"teal":1397,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1252]},{"teal":1398,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1253,1254]},{"teal":1399,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1255]},{"teal":1400,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1256]},{"teal":1401,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1257,1258]},{"teal":1402,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1259]},{"teal":1403,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1260]},{"teal":1408,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1261,1262,1263]},{"teal":1409,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1264,1265,1266]},{"teal":1412,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1267,1268,1269]},{"teal":1413,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1270]},{"teal":1416,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1271,1272,1273]},{"teal":1417,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1274]},{"teal":1420,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1275,1276,1277]},{"teal":1421,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1278]},{"teal":1422,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1279]},{"teal":1433,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1280,1281,1282]},{"teal":1437,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1283,1284]},{"teal":1438,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1285,1286,1287]},{"teal":1442,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1288,1289]},{"teal":1443,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1290,1291,1292]},{"teal":1446,"source":"contracts/validatorRegistry.algo.ts:389","errorMessage":"provided NFD must be valid","pc":[1293]},{"teal":1453,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1294,1295]},{"teal":1454,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1296,1297]},{"teal":1455,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1298,1299]},{"teal":1456,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1300]},{"teal":1459,"source":"contracts/validatorRegistry.algo.ts:392","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1301]},{"teal":1460,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1302]},{"teal":1463,"source":"contracts/validatorRegistry.algo.ts:391","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1303]},{"teal":1467,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1304,1305]},{"teal":1468,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1306,1307]},{"teal":1469,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1308]},{"teal":1470,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1309]},{"teal":1471,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1310,1311]},{"teal":1472,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1312]},{"teal":1473,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1313]},{"teal":1474,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1314,1315]},{"teal":1475,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1316]},{"teal":1476,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1317]},{"teal":1481,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1318,1319,1320]},{"teal":1482,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1321]},{"teal":1483,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1322]},{"teal":1484,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1323,1324]},{"teal":1485,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1325]},{"teal":1488,"source":"contracts/validatorRegistry.algo.ts:402","errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1326]},{"teal":1491,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1327,1328,1329]},{"teal":1492,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1330]},{"teal":1495,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1331,1332,1333]},{"teal":1496,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1334]},{"teal":1497,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1335]},{"teal":1504,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1336,1337,1338]},{"teal":1508,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1339,1340]},{"teal":1509,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1341,1342,1343]},{"teal":1513,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1344,1345]},{"teal":1514,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1346,1347]},{"teal":1515,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1348]},{"teal":1516,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1349]},{"teal":1520,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1350,1351,1352]},{"teal":1521,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1353,1354]},{"teal":1522,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1355]},{"teal":1523,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1356,1357]},{"teal":1524,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1358]},{"teal":1525,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1359]},{"teal":1526,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1360,1361]},{"teal":1527,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1362]},{"teal":1528,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1363]},{"teal":1533,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1364,1365,1366]},{"teal":1534,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1367]},{"teal":1537,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1368,1369,1370]},{"teal":1538,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1371]},{"teal":1541,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1372,1373,1374]},{"teal":1542,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1375]},{"teal":1543,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1376]},{"teal":1544,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1377,1378]},{"teal":1545,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1379]},{"teal":1548,"source":"contracts/validatorRegistry.algo.ts:416","errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1380]},{"teal":1551,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1381,1382,1383]},{"teal":1552,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1384]},{"teal":1553,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1385]},{"teal":1554,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1386,1387]},{"teal":1555,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1388]},{"teal":1558,"source":"contracts/validatorRegistry.algo.ts:415","errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1389]},{"teal":1561,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1390,1391,1392]},{"teal":1562,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1393]},{"teal":1563,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1394]},{"teal":1564,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1395]},{"teal":1565,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1396]},{"teal":1568,"source":"contracts/validatorRegistry.algo.ts:414","errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1397]},{"teal":1569,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1398]},{"teal":1572,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1399,1400,1401]},{"teal":1573,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1402]},{"teal":1576,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1403,1404,1405]},{"teal":1577,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1406]},{"teal":1578,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1407]},{"teal":1585,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1408,1409,1410]},{"teal":1589,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1411,1412]},{"teal":1590,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1413,1414,1415]},{"teal":1597,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1416,1417]},{"teal":1598,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1418]},{"teal":1599,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1419]},{"teal":1600,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1420]},{"teal":1601,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1421,1422,1423]},{"teal":1602,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1424,1425]},{"teal":1603,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1426,1427]},{"teal":1604,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1428]},{"teal":1605,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1429]},{"teal":1609,"source":"contracts/validatorRegistry.algo.ts:422","errorMessage":"invalid Entry gating type","pc":[1430]},{"teal":1614,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1431,1432]},{"teal":1615,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1433]},{"teal":1616,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1434]},{"teal":1617,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1435,1436,1437]},{"teal":1622,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1438,1439]},{"teal":1623,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1440,1441]},{"teal":1624,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1442]},{"teal":1625,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1443]},{"teal":1632,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1444,1445]},{"teal":1633,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1446,1447]},{"teal":1634,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1448]},{"teal":1635,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1449]},{"teal":1636,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1450,1451,1452]},{"teal":1637,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1453,1454]},{"teal":1638,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1455,1456]},{"teal":1639,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1457]},{"teal":1640,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1458]},{"teal":1643,"source":"contracts/validatorRegistry.algo.ts:429","pc":[1459,1460,1461]},{"teal":1648,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1462,1463]},{"teal":1649,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1464,1465,1466]},{"teal":1650,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1467]},{"teal":1651,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1468,1469,1470]},{"teal":1654,"source":"contracts/validatorRegistry.algo.ts:433","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1471]},{"teal":1659,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1472,1473]},{"teal":1660,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1474,1475]},{"teal":1661,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1476]},{"teal":1662,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1477,1478,1479]},{"teal":1663,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1480]},{"teal":1664,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1481,1482]},{"teal":1665,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1483]},{"teal":1666,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1484]},{"teal":1667,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1485,1486]},{"teal":1668,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1487]},{"teal":1672,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1488,1489]},{"teal":1673,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1490,1491]},{"teal":1674,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1492]},{"teal":1675,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1493,1494]},{"teal":1676,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1495]},{"teal":1677,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1496]},{"teal":1678,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1497,1498]},{"teal":1679,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1499]},{"teal":1683,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1500,1501]},{"teal":1684,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1502,1503]},{"teal":1685,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1504]},{"teal":1686,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1505,1506]},{"teal":1687,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1507]},{"teal":1688,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1508]},{"teal":1689,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1509,1510]},{"teal":1690,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1511]},{"teal":1694,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1512,1513]},{"teal":1695,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1514,1515]},{"teal":1696,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1516]},{"teal":1697,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1517]},{"teal":1698,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1518,1519]},{"teal":1699,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1520]},{"teal":1700,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1521]},{"teal":1701,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1522,1523]},{"teal":1702,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1524]},{"teal":1706,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1525,1526,1527]},{"teal":1707,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1528,1529]},{"teal":1708,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1530]},{"teal":1709,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1531]},{"teal":1710,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1532,1533]},{"teal":1711,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1534]},{"teal":1712,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1535]},{"teal":1713,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1536,1537]},{"teal":1714,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1538]},{"teal":1715,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1539]},{"teal":1720,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1540]},{"teal":1723,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1541,1542,1543]},{"teal":1724,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1544]},{"teal":1727,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1545,1546,1547]},{"teal":1728,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1548]},{"teal":1731,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1549,1550]},{"teal":1732,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1551]},{"teal":1733,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1552]},{"teal":1734,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1553]},{"teal":1735,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1554,1555]},{"teal":1736,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1556]},{"teal":1737,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1557]},{"teal":1740,"source":"contracts/validatorRegistry.algo.ts:453","errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1558]},{"teal":1743,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1559,1560,1561]},{"teal":1744,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1562]},{"teal":1745,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1563]},{"teal":1746,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1564]},{"teal":1747,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1565]},{"teal":1760,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1566,1567,1568]},{"teal":1763,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1569]},{"teal":1764,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1570]},{"teal":1768,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1571,1572]},{"teal":1769,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1573,1574,1575]},{"teal":1774,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1576,1577]},{"teal":1775,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1578,1579]},{"teal":1776,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1580,1581]},{"teal":1777,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1582]},{"teal":1780,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1583]},{"teal":1783,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1584,1585]},{"teal":1784,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1586,1587]},{"teal":1785,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1588,1589,1590]},{"teal":1786,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1591,1592,1593]},{"teal":1787,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1594]},{"teal":1788,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1595]},{"teal":1791,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1596]},{"teal":1795,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1597]},{"teal":1796,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1598,1599]},{"teal":1797,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1600]},{"teal":1798,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1601]},{"teal":1799,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1602]},{"teal":1800,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1603]},{"teal":1801,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1604]},{"teal":1804,"source":"contracts/validatorRegistry.algo.ts:459","errorMessage":"specified validator id isn't valid","pc":[1605]},{"teal":1808,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1606,1607]},{"teal":1809,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1608,1609]},{"teal":1810,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1610]},{"teal":1811,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1611,1612]},{"teal":1812,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1613]},{"teal":1813,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1614]},{"teal":1814,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1615,1616]},{"teal":1815,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1617]},{"teal":1816,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1618]},{"teal":1817,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1619,1620]},{"teal":1822,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1621,1622]},{"teal":1823,"source":"contracts/constants.algo.ts:30","pc":[1623]},{"teal":1824,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1624]},{"teal":1825,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1625,1626,1627]},{"teal":1829,"source":"contracts/validatorRegistry.algo.ts:463","errorMessage":"already at max pool size","pc":[1628]},{"teal":1834,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1629,1630]},{"teal":1835,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1631]},{"teal":1836,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1632]},{"teal":1837,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1633,1634]},{"teal":1859,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1635]},{"teal":1860,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1636,1637]},{"teal":1861,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1638,1639]},{"teal":1865,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1640]},{"teal":1866,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1641,1642]},{"teal":1873,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1643,1644]},{"teal":1874,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1645]},{"teal":1875,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1646,1647]},{"teal":1876,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1648]},{"teal":1877,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1649,1650]},{"teal":1878,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1651,1652]},{"teal":1879,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1653,1654]},{"teal":1880,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1655,1656]},{"teal":1881,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1657]},{"teal":1884,"source":"contracts/validatorRegistry.algo.ts:472","errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1658]},{"teal":1885,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1659,1660]},{"teal":1886,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1661]},{"teal":1887,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1662]},{"teal":1888,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1663,1664]},{"teal":1892,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1665,1666,1667]},{"teal":1893,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1668,1669]},{"teal":1897,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1670,1671]},{"teal":1898,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1672,1673]},{"teal":1902,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1674,1675]},{"teal":1903,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1676,1677]},{"teal":1907,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1678,1679]},{"teal":1908,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1680,1681]},{"teal":1919,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1682,1683,1684,1685,1686,1687]},{"teal":1920,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1688,1689]},{"teal":1921,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1690,1691,1692]},{"teal":1922,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1693]},{"teal":1923,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1694,1695]},{"teal":1924,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1696,1697]},{"teal":1925,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1698]},{"teal":1926,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1699,1700]},{"teal":1927,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1701,1702]},{"teal":1928,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1703]},{"teal":1929,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1704,1705]},{"teal":1930,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1706,1707]},{"teal":1931,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1708]},{"teal":1932,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1709]},{"teal":1933,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1710,1711]},{"teal":1934,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1712]},{"teal":1935,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1713]},{"teal":1936,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1714,1715]},{"teal":1937,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1716]},{"teal":1938,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1717]},{"teal":1939,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1718]},{"teal":1940,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1719,1720]},{"teal":1943,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1721]},{"teal":1944,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1722,1723]},{"teal":1947,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1724]},{"teal":1951,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1725,1726]},{"teal":1952,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1727,1728]},{"teal":1953,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1729]},{"teal":1954,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1730,1731,1732]},{"teal":1955,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1733]},{"teal":1956,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1734,1735]},{"teal":1957,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1736]},{"teal":1958,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1737]},{"teal":1959,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1738,1739]},{"teal":1960,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1740]},{"teal":1964,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1741,1742]},{"teal":1965,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1743,1744]},{"teal":1969,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1745,1746]},{"teal":1970,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1747,1748]},{"teal":1971,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1749]},{"teal":1972,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1750]},{"teal":1973,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1751,1752]},{"teal":1974,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1753]},{"teal":1975,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1754]},{"teal":1976,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1755]},{"teal":1977,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1756]},{"teal":1978,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1757,1758]},{"teal":1979,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1759]},{"teal":1980,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1760]},{"teal":1981,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1761,1762]},{"teal":1982,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1763]},{"teal":1983,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1764]},{"teal":1984,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1765,1766]},{"teal":1985,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1767]},{"teal":1989,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1768,1769]},{"teal":1990,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1770,1771]},{"teal":1991,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1772,1773]},{"teal":1992,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1774,1775,1776]},{"teal":2000,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1777,1778,1779,1780,1781,1782]},{"teal":2001,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1783,1784]},{"teal":2002,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1785]},{"teal":2003,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1786,1787]},{"teal":2004,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1788]},{"teal":2005,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1789]},{"teal":2006,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1790]},{"teal":2007,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1791,1792]},{"teal":2008,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1793]},{"teal":2011,"source":"contracts/validatorRegistry.algo.ts:497","errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1794]},{"teal":2012,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1795,1796,1797]},{"teal":2013,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1798]},{"teal":2014,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1799,1800]},{"teal":2015,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1801]},{"teal":2016,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1802]},{"teal":2017,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1803]},{"teal":2018,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1804]},{"teal":2022,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1805,1806]},{"teal":2023,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1807]},{"teal":2024,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1808,1809]},{"teal":2025,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1810]},{"teal":2026,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1811]},{"teal":2027,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1812,1813]},{"teal":2028,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1814]},{"teal":2029,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1815]},{"teal":2032,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1816,1817]},{"teal":2035,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1818,1819]},{"teal":2036,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1820]},{"teal":2041,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1821]},{"teal":2044,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1822,1823,1824]},{"teal":2045,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1825]},{"teal":2048,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1826,1827,1828]},{"teal":2049,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1829]},{"teal":2052,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1830,1831]},{"teal":2053,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1832]},{"teal":2054,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1833]},{"teal":2055,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1834]},{"teal":2056,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1835,1836]},{"teal":2057,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1837]},{"teal":2058,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1838]},{"teal":2061,"source":"contracts/validatorRegistry.algo.ts:513","errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[1839]},{"teal":2064,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1840,1841,1842]},{"teal":2065,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1843]},{"teal":2066,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1844]},{"teal":2067,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1845]},{"teal":2068,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1846]},{"teal":2080,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1847,1848,1849]},{"teal":2083,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1850]},{"teal":2084,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1851,1852]},{"teal":2088,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1853]},{"teal":2089,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1854,1855]},{"teal":2090,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1856]},{"teal":2091,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1857]},{"teal":2092,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1858]},{"teal":2093,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1859]},{"teal":2094,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1860]},{"teal":2097,"source":"contracts/validatorRegistry.algo.ts:514","errorMessage":"specified validator id isn't valid","pc":[1861]},{"teal":2102,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1862,1863]},{"teal":2103,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1864]},{"teal":2104,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1865]},{"teal":2105,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1866,1867]},{"teal":2106,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1868]},{"teal":2107,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1869]},{"teal":2108,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1870,1871]},{"teal":2109,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1872]},{"teal":2110,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1873]},{"teal":2111,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1874]},{"teal":2112,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1875]},{"teal":2113,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1876,1877,1878]},{"teal":2121,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1879,1880]},{"teal":2122,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1881]},{"teal":2123,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1882]},{"teal":2124,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1883,1884]},{"teal":2125,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1885]},{"teal":2126,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1886]},{"teal":2127,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1887,1888]},{"teal":2128,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1889]},{"teal":2129,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1890]},{"teal":2130,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1891,1892]},{"teal":2131,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1893]},{"teal":2134,"source":"contracts/validatorRegistry.algo.ts:519","errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[1894]},{"teal":2139,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1895,1896]},{"teal":2140,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1897,1898]},{"teal":2148,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1899,1900]},{"teal":2149,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1901,1902]},{"teal":2150,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1903,1904]},{"teal":2151,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1905]},{"teal":2154,"source":"contracts/validatorRegistry.algo.ts:530","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[1906]},{"teal":2157,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1907,1908]},{"teal":2158,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1909,1910]},{"teal":2159,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1911,1912]},{"teal":2160,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1913]},{"teal":2163,"source":"contracts/validatorRegistry.algo.ts:531","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1914]},{"teal":2167,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1915,1916]},{"teal":2168,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1917,1918]},{"teal":2169,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1919,1920,1921]},{"teal":2173,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1922,1923]},{"teal":2174,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1924,1925]},{"teal":2175,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1926,1927]},{"teal":2179,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1928]},{"teal":2180,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1929,1930]},{"teal":2185,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1931,1932]},{"teal":2186,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1933,1934,1935]},{"teal":2187,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1936,1937,1938]},{"teal":2192,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1939,1940,1941]},{"teal":2193,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1942,1943,1944]},{"teal":2194,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1945]},{"teal":2195,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1946,1947]},{"teal":2199,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1948,1949]},{"teal":2200,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1950,1951]},{"teal":2201,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1952]},{"teal":2202,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1953,1954]},{"teal":2206,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1955]},{"teal":2207,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1956,1957]},{"teal":2208,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1958]},{"teal":2209,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1959,1960,1961]},{"teal":2210,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1962]},{"teal":2211,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1963]},{"teal":2219,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1964,1965]},{"teal":2220,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1966]},{"teal":2221,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1967]},{"teal":2222,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1968,1969]},{"teal":2223,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1970]},{"teal":2224,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1971]},{"teal":2225,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1972,1973]},{"teal":2226,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1974]},{"teal":2227,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1975]},{"teal":2228,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1976,1977]},{"teal":2229,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1978]},{"teal":2230,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1979,1980,1981]},{"teal":2231,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1982]},{"teal":2234,"source":"contracts/validatorRegistry.algo.ts:551","errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[1983]},{"teal":2238,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1984,1985]},{"teal":2239,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1986,1987]},{"teal":2240,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1988,1989]},{"teal":2241,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1990,1991,1992]},{"teal":2242,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1993,1994]},{"teal":2248,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1995,1996]},{"teal":2249,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1997,1998]},{"teal":2250,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1999,2000]},{"teal":2251,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2001,2002]},{"teal":2252,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2003]},{"teal":2253,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2004,2005]},{"teal":2257,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2006,2007]},{"teal":2258,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2008,2009]},{"teal":2259,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2010,2011]},{"teal":2260,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2012,2013,2014]},{"teal":2261,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2015]},{"teal":2262,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2016,2017]},{"teal":2267,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2018,2019]},{"teal":2268,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2020,2021]},{"teal":2269,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2022,2023]},{"teal":2270,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2024,2025,2026]},{"teal":2271,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2027]},{"teal":2272,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2028]},{"teal":2273,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2029]},{"teal":2274,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2030,2031,2032]},{"teal":2278,"source":"contracts/validatorRegistry.algo.ts:563","errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2033]},{"teal":2283,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2034,2035]},{"teal":2284,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2036,2037]},{"teal":2285,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2038,2039]},{"teal":2286,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2040,2041,2042]},{"teal":2287,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2043,2044]},{"teal":2288,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2045,2046,2047]},{"teal":2298,"source":"contracts/validatorRegistry.algo.ts:575","pc":[2048,2049]},{"teal":2299,"source":"contracts/validatorRegistry.algo.ts:574","pc":[2050,2051]},{"teal":2300,"source":"contracts/validatorRegistry.algo.ts:573","pc":[2052,2053]},{"teal":2301,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2054,2055]},{"teal":2302,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2056,2057]},{"teal":2303,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2058,2059]},{"teal":2304,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2060,2061,2062]},{"teal":2305,"source":"contracts/validatorRegistry.algo.ts:571","pc":[2063,2064]},{"teal":2306,"source":"contracts/validatorRegistry.algo.ts:570","pc":[2065,2066,2067]},{"teal":2316,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2068,2069,2070,2071,2072,2073]},{"teal":2317,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2074,2075]},{"teal":2318,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2076]},{"teal":2319,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2077,2078]},{"teal":2320,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2079,2080]},{"teal":2321,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2081,2082]},{"teal":2322,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2083,2084,2085]},{"teal":2323,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2086]},{"teal":2324,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2087]},{"teal":2325,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2088]},{"teal":2326,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2089]},{"teal":2327,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2090,2091]},{"teal":2328,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2092]},{"teal":2331,"source":"contracts/validatorRegistry.algo.ts:579","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2093]},{"teal":2332,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2094,2095,2096]},{"teal":2333,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2097]},{"teal":2334,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2098,2099]},{"teal":2335,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2100,2101]},{"teal":2336,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2102,2103]},{"teal":2337,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2104,2105,2106]},{"teal":2338,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2107]},{"teal":2339,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2108]},{"teal":2340,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2109]},{"teal":2341,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2110,2111]},{"teal":2342,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2112]},{"teal":2343,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2113,2114]},{"teal":2344,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2115]},{"teal":2345,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2116]},{"teal":2346,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2117]},{"teal":2347,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2118]},{"teal":2351,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2119,2120]},{"teal":2352,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2121,2122]},{"teal":2353,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2123,2124]},{"teal":2354,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2125,2126,2127]},{"teal":2357,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2128,2129]},{"teal":2360,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2130,2131]},{"teal":2361,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2132]},{"teal":2366,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2133]},{"teal":2369,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2134,2135,2136]},{"teal":2370,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2137]},{"teal":2373,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2138,2139,2140]},{"teal":2374,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2141]},{"teal":2375,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2142]},{"teal":2376,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2143]},{"teal":2377,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2144]},{"teal":2395,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2145,2146,2147]},{"teal":2398,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2148]},{"teal":2399,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2149,2150]},{"teal":2403,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2151,2152]},{"teal":2404,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2153]},{"teal":2405,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2154]},{"teal":2406,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2155,2156]},{"teal":2407,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2157]},{"teal":2408,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2158]},{"teal":2409,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2159,2160]},{"teal":2410,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2161]},{"teal":2411,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2162]},{"teal":2412,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2163,2164]},{"teal":2416,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2165,2166]},{"teal":2417,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2167]},{"teal":2418,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2168]},{"teal":2419,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2169]},{"teal":2424,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2170,2171]},{"teal":2425,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2172,2173]},{"teal":2426,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2174,2175]},{"teal":2427,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2176]},{"teal":2428,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2177]},{"teal":2429,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2178,2179,2180]},{"teal":2434,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2181,2182]},{"teal":2435,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2183,2184]},{"teal":2436,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2185]},{"teal":2437,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2186,2187]},{"teal":2438,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2188]},{"teal":2439,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2189]},{"teal":2440,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2190,2191]},{"teal":2441,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2192]},{"teal":2442,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2193,2194,2195]},{"teal":2447,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2196,2197]},{"teal":2448,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2198,2199]},{"teal":2452,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2200,2201]},{"teal":2453,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2202]},{"teal":2454,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2203]},{"teal":2455,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2204,2205]},{"teal":2456,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2206]},{"teal":2457,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2207]},{"teal":2458,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2208,2209]},{"teal":2459,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2210]},{"teal":2460,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2211]},{"teal":2461,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2212,2213]},{"teal":2466,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2214,2215]},{"teal":2467,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2216]},{"teal":2468,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2217]},{"teal":2469,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2218,2219,2220]},{"teal":2475,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2221,2222]},{"teal":2476,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234]},{"teal":2477,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2235]},{"teal":2480,"source":"contracts/validatorRegistry.algo.ts:619","errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2236]},{"teal":2481,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2237,2238]},{"teal":2482,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2239]},{"teal":2483,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2240,2241,2242]},{"teal":2488,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2243,2244]},{"teal":2489,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2245,2246]},{"teal":2490,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2247]},{"teal":2491,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2248,2249]},{"teal":2492,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2250]},{"teal":2493,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2251]},{"teal":2494,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2252,2253]},{"teal":2495,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2254]},{"teal":2496,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2255,2256,2257]},{"teal":2501,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2258,2259,2260]},{"teal":2502,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2261,2262]},{"teal":2503,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2263]},{"teal":2504,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2264,2265]},{"teal":2505,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2266]},{"teal":2506,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2267]},{"teal":2507,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2268,2269]},{"teal":2508,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2270]},{"teal":2509,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2271]},{"teal":2510,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2272,2273]},{"teal":2514,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2274,2275]},{"teal":2515,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2276,2277]},{"teal":2516,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2278,2279]},{"teal":2517,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2280]},{"teal":2518,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2281]},{"teal":2519,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2282,2283]},{"teal":2524,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2284,2285]},{"teal":2525,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2286,2287]},{"teal":2526,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2288,2289]},{"teal":2527,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2290]},{"teal":2528,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2291]},{"teal":2529,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2292,2293]},{"teal":2530,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2294]},{"teal":2531,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2295,2296,2297]},{"teal":2536,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2298,2299]},{"teal":2537,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2300,2301]},{"teal":2538,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2302]},{"teal":2539,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2303,2304]},{"teal":2540,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2305]},{"teal":2541,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2306]},{"teal":2542,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2307,2308]},{"teal":2543,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2309]},{"teal":2544,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2310,2311,2312]},{"teal":2551,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2313,2314]},{"teal":2552,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2315,2316]},{"teal":2553,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2317]},{"teal":2554,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2318]},{"teal":2555,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2319,2320]},{"teal":2556,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2321]},{"teal":2557,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2322]},{"teal":2558,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2323,2324]},{"teal":2559,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2325]},{"teal":2563,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2326,2327]},{"teal":2564,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2328,2329]},{"teal":2565,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2330]},{"teal":2566,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2331,2332]},{"teal":2567,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2333]},{"teal":2568,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2334]},{"teal":2569,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2335,2336]},{"teal":2570,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2337]},{"teal":2571,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2338]},{"teal":2572,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2339,2340]},{"teal":2576,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2341,2342]},{"teal":2577,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2343]},{"teal":2578,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2344]},{"teal":2579,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2345,2346]},{"teal":2580,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2347]},{"teal":2581,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2348]},{"teal":2582,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2349,2350]},{"teal":2583,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2351]},{"teal":2584,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2352]},{"teal":2585,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2353,2354]},{"teal":2589,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2355]},{"teal":2590,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2356,2357]},{"teal":2595,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2358,2359]},{"teal":2596,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2360,2361]},{"teal":2597,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2362]},{"teal":2598,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2363,2364,2365]},{"teal":2605,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2366,2367]},{"teal":2606,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2368,2369]},{"teal":2607,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2370,2371]},{"teal":2608,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2372]},{"teal":2609,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2373]},{"teal":2610,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2374,2375]},{"teal":2611,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2376]},{"teal":2612,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2377]},{"teal":2613,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2378]},{"teal":2614,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2379,2380]},{"teal":2615,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2381]},{"teal":2616,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2382]},{"teal":2617,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2383,2384]},{"teal":2618,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2385]},{"teal":2619,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2386]},{"teal":2620,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2387,2388,2389,2390]},{"teal":2621,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2391]},{"teal":2622,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2392]},{"teal":2623,"source":"contracts/validatorRegistry.algo.ts:640","pc":[2393,2394]},{"teal":2624,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2395]},{"teal":2625,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2396]},{"teal":2626,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2397]},{"teal":2627,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2398]},{"teal":2628,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2399]},{"teal":2631,"source":"contracts/validatorRegistry.algo.ts:638","errorMessage":"wideRatio failed","pc":[2400]},{"teal":2632,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2401,2402]},{"teal":2636,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2403,2404]},{"teal":2637,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2405,2406]},{"teal":2638,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2407]},{"teal":2639,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2408]},{"teal":2640,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2409]},{"teal":2641,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2410,2411]},{"teal":2642,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2412]},{"teal":2643,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2413]},{"teal":2644,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2414,2415]},{"teal":2645,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2416]},{"teal":2646,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2417]},{"teal":2647,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2418,2419]},{"teal":2648,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2420]},{"teal":2653,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2421,2422]},{"teal":2654,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2423]},{"teal":2655,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2424]},{"teal":2656,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2425,2426]},{"teal":2657,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2427,2428,2429]},{"teal":2662,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2430,2431]},{"teal":2663,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2432,2433]},{"teal":2664,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2434]},{"teal":2665,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2435,2436]},{"teal":2666,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2437]},{"teal":2667,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2438]},{"teal":2668,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2439,2440]},{"teal":2669,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2441]},{"teal":2673,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2442,2443]},{"teal":2676,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2444,2445]},{"teal":2677,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2446]},{"teal":2682,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2447,2448,2449]},{"teal":2683,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2450]},{"teal":2686,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2451,2452,2453]},{"teal":2687,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2454]},{"teal":2690,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2455,2456,2457]},{"teal":2691,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2458]},{"teal":2694,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2459,2460,2461]},{"teal":2695,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2462]},{"teal":2698,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2463,2464,2465]},{"teal":2699,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2466]},{"teal":2700,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2467]},{"teal":2701,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2468]},{"teal":2702,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2469]},{"teal":2705,"source":"contracts/validatorRegistry.algo.ts:659","errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2470]},{"teal":2708,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2471,2472,2473]},{"teal":2709,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2474]},{"teal":2710,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2475]},{"teal":2724,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2476,2477,2478]},{"teal":2728,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2479,2480]},{"teal":2729,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2481,2482,2483]},{"teal":2733,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2484,2485]},{"teal":2734,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2486,2487]},{"teal":2735,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2488,2489,2490]},{"teal":2736,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2491]},{"teal":2737,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2492]},{"teal":2738,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2493]},{"teal":2739,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2494,2495]},{"teal":2740,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2496]},{"teal":2741,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2497]},{"teal":2742,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2498,2499]},{"teal":2743,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2500]},{"teal":2744,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2501,2502]},{"teal":2745,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2503,2504]},{"teal":2746,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2505,2506,2507]},{"teal":2747,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2508]},{"teal":2748,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2509]},{"teal":2749,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2510]},{"teal":2750,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2511,2512]},{"teal":2751,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2513]},{"teal":2752,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2514]},{"teal":2753,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2515,2516]},{"teal":2754,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2517]},{"teal":2755,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2518]},{"teal":2756,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2519]},{"teal":2757,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2520,2521]},{"teal":2758,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2522,2523,2524]},{"teal":2759,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2525]},{"teal":2760,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2526]},{"teal":2761,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2527]},{"teal":2762,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2528,2529]},{"teal":2763,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2530]},{"teal":2764,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2531]},{"teal":2765,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2532,2533]},{"teal":2766,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2534]},{"teal":2767,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2535]},{"teal":2768,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2536]},{"teal":2769,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2537,2538]},{"teal":2770,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2539,2540,2541]},{"teal":2771,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2542]},{"teal":2772,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2543]},{"teal":2773,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2544]},{"teal":2774,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2545,2546]},{"teal":2775,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2547]},{"teal":2779,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2548,2549]},{"teal":2780,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2550]},{"teal":2781,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2551]},{"teal":2782,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2552]},{"teal":2783,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2553,2554]},{"teal":2784,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2555,2556,2557]},{"teal":2785,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2558]},{"teal":2786,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2559]},{"teal":2787,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2560]},{"teal":2788,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2561,2562]},{"teal":2789,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2563]},{"teal":2790,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2564]},{"teal":2791,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2565,2566]},{"teal":2792,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2567]},{"teal":2793,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2568]},{"teal":2794,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2569]},{"teal":2795,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2570,2571]},{"teal":2796,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2572,2573,2574]},{"teal":2797,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2575]},{"teal":2798,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2576]},{"teal":2799,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2577]},{"teal":2800,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2578,2579]},{"teal":2801,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2580]},{"teal":2805,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2581,2582]},{"teal":2806,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2583]},{"teal":2807,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2584]},{"teal":2808,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2585]},{"teal":2809,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2586,2587]},{"teal":2810,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2588,2589,2590]},{"teal":2811,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2591]},{"teal":2812,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2592]},{"teal":2813,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2593]},{"teal":2814,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2594,2595]},{"teal":2815,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2596]},{"teal":2816,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2597]},{"teal":2817,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2598,2599]},{"teal":2818,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2600]},{"teal":2819,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2601]},{"teal":2820,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2602]},{"teal":2821,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2603,2604]},{"teal":2822,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2605,2606,2607]},{"teal":2823,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2608]},{"teal":2824,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2609]},{"teal":2825,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2610]},{"teal":2826,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2611,2612]},{"teal":2827,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2613]},{"teal":2831,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2614,2615]},{"teal":2832,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2616]},{"teal":2833,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2617,2618]},{"teal":2834,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2619]},{"teal":2835,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2620,2621]},{"teal":2836,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2622]},{"teal":2837,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2623]},{"teal":2841,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2624,2625]},{"teal":2842,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2626,2627,2628]},{"teal":2843,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2629]},{"teal":2844,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2630,2631,2632]},{"teal":2856,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2633,2634,2635,2636,2637,2638]},{"teal":2857,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2639,2640]},{"teal":2858,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2641,2642,2643]},{"teal":2859,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2644]},{"teal":2860,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2645]},{"teal":2861,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2646,2647]},{"teal":2862,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2648,2649,2650]},{"teal":2863,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2651]},{"teal":2864,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2652]},{"teal":2865,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2653]},{"teal":2866,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2654]},{"teal":2867,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2655,2656]},{"teal":2868,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2657]},{"teal":2871,"source":"contracts/validatorRegistry.algo.ts:679","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2658]},{"teal":2872,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2659,2660,2661]},{"teal":2873,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2662]},{"teal":2874,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2663,2664]},{"teal":2875,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2665,2666,2667]},{"teal":2876,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2668]},{"teal":2877,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2669]},{"teal":2878,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2670]},{"teal":2879,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2671,2672]},{"teal":2880,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2673]},{"teal":2881,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2674]},{"teal":2882,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2675,2676]},{"teal":2883,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2677]},{"teal":2884,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2678]},{"teal":2885,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2679,2680]},{"teal":2886,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2681]},{"teal":2887,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2682]},{"teal":2888,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2683,2684]},{"teal":2889,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2685]},{"teal":2890,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2686]},{"teal":2891,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2687]},{"teal":2892,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2688]},{"teal":2893,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2689]},{"teal":2898,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2690,2691,2692]},{"teal":2899,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2693]},{"teal":2900,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2694]},{"teal":2901,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2695]},{"teal":2902,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2696]},{"teal":2905,"source":"contracts/validatorRegistry.algo.ts:705","errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2697]},{"teal":2906,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2698]},{"teal":2907,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2699]},{"teal":2910,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2700,2701,2702]},{"teal":2911,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2703]},{"teal":2914,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2704,2705,2706]},{"teal":2915,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2707]},{"teal":2918,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2708,2709,2710]},{"teal":2919,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2711]},{"teal":2920,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2712]},{"teal":2921,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2713,2714]},{"teal":2922,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2715]},{"teal":2925,"source":"contracts/validatorRegistry.algo.ts:702","errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2716]},{"teal":2928,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2717,2718,2719]},{"teal":2929,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2720]},{"teal":2930,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2721]},{"teal":2931,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2722]},{"teal":2932,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2723]},{"teal":2935,"source":"contracts/validatorRegistry.algo.ts:701","errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2724]},{"teal":2938,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2725,2726,2727]},{"teal":2939,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2728]},{"teal":2940,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2729]},{"teal":2955,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2730,2731,2732]},{"teal":2958,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2733]},{"teal":2959,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2734,2735]},{"teal":2964,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2736,2737]},{"teal":2965,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2738,2739]},{"teal":2966,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2740]},{"teal":2967,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2741,2742,2743]},{"teal":2972,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2744]},{"teal":2973,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2745,2746]},{"teal":2974,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2747,2748]},{"teal":2975,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2749]},{"teal":2976,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2750,2751]},{"teal":2977,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2752,2753]},{"teal":2978,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2754]},{"teal":2979,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2755,2756]},{"teal":2980,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2757,2758]},{"teal":2981,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2759,2760]},{"teal":2982,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2761,2762]},{"teal":2983,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2763]},{"teal":2988,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2764,2765]},{"teal":2989,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2766,2767,2768]},{"teal":2993,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2769,2770]},{"teal":2994,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2771]},{"teal":2995,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2772]},{"teal":2996,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2773]},{"teal":2997,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2774,2775,2776]},{"teal":2998,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2777,2778]},{"teal":2999,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2779]},{"teal":3000,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2780]},{"teal":3001,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2781]},{"teal":3005,"source":"contracts/validatorRegistry.algo.ts:714","errorMessage":"should only be called if algo or reward was removed","pc":[2782]},{"teal":3009,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2783,2784]},{"teal":3010,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2785,2786]},{"teal":3011,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2787,2788,2789]},{"teal":3012,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2790]},{"teal":3013,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2791]},{"teal":3014,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2792]},{"teal":3015,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2793,2794]},{"teal":3016,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2795]},{"teal":3017,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2796]},{"teal":3018,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2797,2798]},{"teal":3019,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2799]},{"teal":3020,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2800,2801]},{"teal":3021,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2802,2803]},{"teal":3022,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2804,2805,2806]},{"teal":3023,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2807]},{"teal":3024,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2808]},{"teal":3025,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2809]},{"teal":3026,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2810,2811]},{"teal":3027,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2812]},{"teal":3028,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2813]},{"teal":3029,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2814,2815]},{"teal":3030,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2816]},{"teal":3031,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2817]},{"teal":3032,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2818]},{"teal":3033,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2819,2820]},{"teal":3034,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2821,2822,2823]},{"teal":3035,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2824]},{"teal":3036,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2825]},{"teal":3037,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2826]},{"teal":3038,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2827,2828]},{"teal":3039,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2829]},{"teal":3040,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2830]},{"teal":3041,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2831,2832]},{"teal":3042,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2833]},{"teal":3043,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2834]},{"teal":3044,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2835]},{"teal":3045,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2836,2837]},{"teal":3046,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2838,2839,2840]},{"teal":3047,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2841]},{"teal":3048,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2842]},{"teal":3049,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2843]},{"teal":3050,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2844,2845]},{"teal":3051,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2846]},{"teal":3055,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2847,2848]},{"teal":3056,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2849]},{"teal":3057,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2850]},{"teal":3058,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2851]},{"teal":3059,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2852,2853]},{"teal":3060,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2854,2855,2856]},{"teal":3061,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2857]},{"teal":3062,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2858]},{"teal":3063,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2859]},{"teal":3064,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2860,2861]},{"teal":3065,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2862]},{"teal":3066,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2863]},{"teal":3067,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2864,2865]},{"teal":3068,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2866]},{"teal":3069,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2867]},{"teal":3070,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2868]},{"teal":3071,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2869,2870]},{"teal":3072,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2871,2872,2873]},{"teal":3073,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2874]},{"teal":3074,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2875]},{"teal":3075,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2876]},{"teal":3076,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2877,2878]},{"teal":3077,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2879]},{"teal":3081,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2880,2881]},{"teal":3082,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2882]},{"teal":3083,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2883,2884]},{"teal":3084,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2885]},{"teal":3085,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2886,2887]},{"teal":3086,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2888]},{"teal":3087,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2889]},{"teal":3092,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2890,2891]},{"teal":3093,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2892]},{"teal":3094,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2893]},{"teal":3095,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2894,2895,2896]},{"teal":3100,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2897,2898]},{"teal":3101,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2899]},{"teal":3102,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2900]},{"teal":3103,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2901,2902]},{"teal":3104,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2903,2904,2905]},{"teal":3105,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2906]},{"teal":3106,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2907]},{"teal":3107,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2908]},{"teal":3108,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2909,2910]},{"teal":3109,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2911]},{"teal":3110,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2912]},{"teal":3111,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2913,2914]},{"teal":3115,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2915,2916]},{"teal":3116,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2917]},{"teal":3117,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2918]},{"teal":3120,"source":"contracts/validatorRegistry.algo.ts:723","errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[2919]},{"teal":3127,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2920,2921]},{"teal":3128,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2922]},{"teal":3129,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2923]},{"teal":3130,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2924,2925]},{"teal":3131,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2926,2927,2928]},{"teal":3132,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2929]},{"teal":3133,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2930]},{"teal":3134,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2931]},{"teal":3135,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2932,2933]},{"teal":3136,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2934]},{"teal":3137,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2935]},{"teal":3138,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2936,2937]},{"teal":3139,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2938]},{"teal":3142,"source":"contracts/validatorRegistry.algo.ts:724","errorMessage":"reward being removed must be covered by hold back amount","pc":[2939]},{"teal":3146,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2940,2941]},{"teal":3147,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2942]},{"teal":3148,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2943]},{"teal":3149,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2944]},{"teal":3150,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2945,2946]},{"teal":3151,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2947,2948,2949]},{"teal":3152,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2950]},{"teal":3153,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2951]},{"teal":3154,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2952]},{"teal":3155,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2953,2954]},{"teal":3156,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2955]},{"teal":3157,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2956]},{"teal":3158,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2957,2958]},{"teal":3159,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2959]},{"teal":3160,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2960]},{"teal":3161,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2961]},{"teal":3162,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2962,2963]},{"teal":3163,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2964,2965,2966]},{"teal":3164,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2967]},{"teal":3165,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2968]},{"teal":3166,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2969]},{"teal":3167,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2970,2971]},{"teal":3168,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2972]},{"teal":3173,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2973,2974]},{"teal":3174,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2975,2976,2977]},{"teal":3175,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2978]},{"teal":3176,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2979]},{"teal":3177,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2980]},{"teal":3178,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2981,2982,2983]},{"teal":3186,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2984]},{"teal":3187,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2985,2986]},{"teal":3188,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2987,2988]},{"teal":3189,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2989,2990]},{"teal":3190,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2991,2992]},{"teal":3194,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2993,2994]},{"teal":3195,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2995]},{"teal":3196,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2996]},{"teal":3197,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2997,2998]},{"teal":3198,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2999,3000,3001]},{"teal":3199,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3002]},{"teal":3200,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3003]},{"teal":3201,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3004]},{"teal":3202,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3005,3006]},{"teal":3203,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3007]},{"teal":3204,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3008]},{"teal":3205,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3009,3010]},{"teal":3209,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3011,3012]},{"teal":3210,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3013,3014]},{"teal":3211,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3015,3016]},{"teal":3212,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3017]},{"teal":3213,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3018,3019]},{"teal":3214,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3020,3021]},{"teal":3215,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3022]},{"teal":3216,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3023,3024]},{"teal":3219,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3025]},{"teal":3220,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3026,3027]},{"teal":3223,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3028]},{"teal":3236,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3029,3030]},{"teal":3237,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3031,3032]},{"teal":3238,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3033,3034,3035]},{"teal":3239,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3036]},{"teal":3240,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3037]},{"teal":3241,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3038,3039]},{"teal":3242,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3040,3041,3042]},{"teal":3243,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3043]},{"teal":3244,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3044]},{"teal":3245,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3045]},{"teal":3246,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3046]},{"teal":3247,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3047,3048]},{"teal":3248,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3049]},{"teal":3251,"source":"contracts/validatorRegistry.algo.ts:743","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3050]},{"teal":3252,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3051,3052,3053]},{"teal":3253,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3054]},{"teal":3254,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3055,3056]},{"teal":3255,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3057,3058,3059]},{"teal":3256,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3060]},{"teal":3257,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3061]},{"teal":3258,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3062]},{"teal":3259,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3063,3064]},{"teal":3260,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3065]},{"teal":3261,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3066,3067]},{"teal":3262,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3068]},{"teal":3263,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3069]},{"teal":3264,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3070,3071]},{"teal":3265,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3072]},{"teal":3266,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3073]},{"teal":3267,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3074,3075]},{"teal":3268,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3076]},{"teal":3269,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3077]},{"teal":3270,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3078]},{"teal":3271,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3079]},{"teal":3272,"source":"contracts/validatorRegistry.algo.ts:721","pc":[3080,3081,3082]},{"teal":3286,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3083,3084]},{"teal":3287,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3085,3086]},{"teal":3288,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3087,3088,3089]},{"teal":3289,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3090]},{"teal":3290,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3091]},{"teal":3291,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3092,3093]},{"teal":3292,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3094,3095,3096]},{"teal":3293,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3097]},{"teal":3294,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3098]},{"teal":3295,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3099]},{"teal":3296,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3100]},{"teal":3297,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3101,3102]},{"teal":3298,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3103]},{"teal":3301,"source":"contracts/validatorRegistry.algo.ts:753","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3104]},{"teal":3302,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3105,3106,3107]},{"teal":3303,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3108]},{"teal":3304,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3109,3110]},{"teal":3305,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3111,3112,3113]},{"teal":3306,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3114]},{"teal":3307,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3115]},{"teal":3308,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3116]},{"teal":3309,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3117,3118]},{"teal":3310,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3119]},{"teal":3311,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3120,3121]},{"teal":3312,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3122]},{"teal":3313,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3123]},{"teal":3314,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3124,3125]},{"teal":3315,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3126]},{"teal":3316,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3127,3128]},{"teal":3317,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3129]},{"teal":3318,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3130]},{"teal":3319,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3131]},{"teal":3325,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3132,3133]},{"teal":3326,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3134,3135,3136]},{"teal":3331,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3137,3138]},{"teal":3332,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3139,3140]},{"teal":3333,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3141,3142,3143]},{"teal":3334,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3144]},{"teal":3335,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3145]},{"teal":3336,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3146]},{"teal":3337,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3147,3148]},{"teal":3338,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3149]},{"teal":3339,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3150]},{"teal":3340,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3151]},{"teal":3341,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3152]},{"teal":3342,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3153,3154]},{"teal":3343,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3155,3156]},{"teal":3344,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3157,3158,3159]},{"teal":3345,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3160]},{"teal":3346,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3161]},{"teal":3347,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3162]},{"teal":3348,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3163,3164]},{"teal":3349,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3165]},{"teal":3350,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3166]},{"teal":3351,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3167]},{"teal":3352,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3168]},{"teal":3353,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3169,3170]},{"teal":3354,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3171]},{"teal":3355,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3172,3173]},{"teal":3356,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3174,3175,3176]},{"teal":3357,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3177]},{"teal":3358,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3178]},{"teal":3359,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3179]},{"teal":3360,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3180,3181]},{"teal":3361,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3182]},{"teal":3362,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3183]},{"teal":3363,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3184]},{"teal":3364,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3185]},{"teal":3365,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3186]},{"teal":3366,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3187,3188,3189]},{"teal":3367,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3190]},{"teal":3368,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3191,3192]},{"teal":3369,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3193,3194,3195]},{"teal":3370,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3196]},{"teal":3371,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3197]},{"teal":3372,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3198]},{"teal":3373,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3199,3200]},{"teal":3374,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3201]},{"teal":3382,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3202,3203]},{"teal":3383,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3204,3205,3206]},{"teal":3384,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3207]},{"teal":3385,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3208]},{"teal":3386,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3209,3210]},{"teal":3387,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3211,3212,3213]},{"teal":3388,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3214]},{"teal":3389,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3215]},{"teal":3390,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3216]},{"teal":3391,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3217,3218]},{"teal":3392,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3219,3220,3221]},{"teal":3393,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3222]},{"teal":3394,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3223]},{"teal":3395,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3224]},{"teal":3396,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3225,3226]},{"teal":3397,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3227,3228,3229]},{"teal":3398,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3230,3231]},{"teal":3402,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3232,3233]},{"teal":3403,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3234,3235]},{"teal":3404,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3236,3237]},{"teal":3405,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3238]},{"teal":3406,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3239]},{"teal":3407,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3240,3241]},{"teal":3411,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3242,3243]},{"teal":3412,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3244,3245]},{"teal":3413,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3246,3247]},{"teal":3414,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3248]},{"teal":3415,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3249]},{"teal":3416,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3250,3251]},{"teal":3421,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3252,3253]},{"teal":3422,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3254,3255,3256]},{"teal":3427,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3257,3258]},{"teal":3428,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3259]},{"teal":3429,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3260]},{"teal":3430,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3261]},{"teal":3431,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3262,3263]},{"teal":3432,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3264,3265,3266]},{"teal":3433,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3267]},{"teal":3434,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3268]},{"teal":3435,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3269]},{"teal":3436,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3270,3271]},{"teal":3437,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3272]},{"teal":3438,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3273]},{"teal":3439,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3274]},{"teal":3440,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3275]},{"teal":3441,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3276]},{"teal":3442,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3277]},{"teal":3443,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3278,3279]},{"teal":3444,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3280,3281,3282]},{"teal":3445,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3283]},{"teal":3446,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3284]},{"teal":3447,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3285]},{"teal":3448,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3286,3287]},{"teal":3449,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3288]},{"teal":3455,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3289,3290]},{"teal":3456,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3291,3292,3293]},{"teal":3461,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3294,3295]},{"teal":3462,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3296]},{"teal":3463,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3297]},{"teal":3464,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3298]},{"teal":3465,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3299,3300]},{"teal":3466,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3301]},{"teal":3467,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3302]},{"teal":3472,"source":"contracts/validatorRegistry.algo.ts:700","pc":[3303]},{"teal":3477,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3304]},{"teal":3480,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3305,3306,3307]},{"teal":3481,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3308]},{"teal":3484,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3309,3310,3311]},{"teal":3485,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3312]},{"teal":3486,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3313]},{"teal":3487,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3314,3315]},{"teal":3488,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3316]},{"teal":3491,"source":"contracts/validatorRegistry.algo.ts:799","errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3317]},{"teal":3494,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3318,3319,3320]},{"teal":3495,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3321]},{"teal":3498,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3322,3323,3324]},{"teal":3499,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3325]},{"teal":3500,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3326]},{"teal":3501,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3327]},{"teal":3502,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3328]},{"teal":3516,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3329,3330,3331]},{"teal":3519,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3332]},{"teal":3520,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3333,3334]},{"teal":3524,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3335]},{"teal":3525,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3336,3337]},{"teal":3529,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3338]},{"teal":3530,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3339,3340]},{"teal":3534,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3341,3342]},{"teal":3535,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3343,3344,3345]},{"teal":3536,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3346,3347]},{"teal":3541,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3348]},{"teal":3542,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3349,3350]},{"teal":3543,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3351]},{"teal":3544,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3352]},{"teal":3545,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3353]},{"teal":3546,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3354]},{"teal":3547,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3355,3356,3357]},{"teal":3552,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3358]},{"teal":3553,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3359,3360]},{"teal":3554,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3361]},{"teal":3555,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3362]},{"teal":3558,"source":"contracts/validatorRegistry.algo.ts:815","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3363]},{"teal":3559,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3364,3365]},{"teal":3563,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3366,3367]},{"teal":3564,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3368]},{"teal":3565,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3369]},{"teal":3566,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3370]},{"teal":3570,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3371]},{"teal":3571,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3372,3373]},{"teal":3576,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3374,3375]},{"teal":3577,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3376,3377]},{"teal":3578,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3378]},{"teal":3579,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3379,3380,3381]},{"teal":3584,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3382,3383]},{"teal":3585,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3384,3385]},{"teal":3586,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3386]},{"teal":3587,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3387,3388,3389]},{"teal":3592,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3390]},{"teal":3593,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3391,3392]},{"teal":3594,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3393,3394]},{"teal":3595,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3395]},{"teal":3596,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3396,3397]},{"teal":3597,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3398,3399]},{"teal":3598,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3400]},{"teal":3599,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3401,3402]},{"teal":3600,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3403,3404]},{"teal":3601,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3405,3406]},{"teal":3602,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3407,3408]},{"teal":3603,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3409]},{"teal":3609,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3410,3411]},{"teal":3610,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3412,3413]},{"teal":3611,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3414]},{"teal":3612,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3415]},{"teal":3613,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3416]},{"teal":3614,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3417]},{"teal":3615,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3418]},{"teal":3616,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3419]},{"teal":3617,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3420]},{"teal":3618,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3421]},{"teal":3619,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3422]},{"teal":3620,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3423,3424,3425]},{"teal":3623,"source":"contracts/validatorRegistry.algo.ts:822","pc":[3426,3427,3428]},{"teal":3628,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3429]},{"teal":3629,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3430,3431]},{"teal":3634,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3432,3433]},{"teal":3635,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3434,3435]},{"teal":3636,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3436]},{"teal":3637,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3437]},{"teal":3638,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3438]},{"teal":3639,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3439]},{"teal":3640,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3440]},{"teal":3641,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3441]},{"teal":3642,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3442]},{"teal":3643,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3443,3444]},{"teal":3644,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3445]},{"teal":3645,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3446,3447,3448]},{"teal":3650,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3449]},{"teal":3651,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3450,3451]},{"teal":3658,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3452,3453]},{"teal":3659,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3454,3455]},{"teal":3660,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3456,3457]},{"teal":3661,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3458]},{"teal":3662,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3459]},{"teal":3663,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3460]},{"teal":3664,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3461]},{"teal":3665,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3462]},{"teal":3666,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3463]},{"teal":3667,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3464]},{"teal":3668,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3465]},{"teal":3669,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3466]},{"teal":3670,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3467,3468]},{"teal":3671,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3469]},{"teal":3672,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3470]},{"teal":3673,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3471,3472]},{"teal":3674,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3473]},{"teal":3675,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3474]},{"teal":3676,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3475]},{"teal":3677,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3476,3477]},{"teal":3678,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3478]},{"teal":3679,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3479]},{"teal":3680,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3480,3481]},{"teal":3681,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3482]},{"teal":3682,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3483]},{"teal":3683,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3484,3485]},{"teal":3684,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3486]},{"teal":3685,"source":"contracts/validatorRegistry.algo.ts:831","pc":[3487,3488]},{"teal":3686,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3489]},{"teal":3687,"source":"contracts/validatorRegistry.algo.ts:828","pc":[3490,3491,3492]},{"teal":3692,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3493,3494]},{"teal":3693,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3495,3496]},{"teal":3694,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3497]},{"teal":3695,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3498]},{"teal":3696,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3499]},{"teal":3697,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3500]},{"teal":3698,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3501,3502]},{"teal":3699,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3503]},{"teal":3700,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3504,3505]},{"teal":3701,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3506]},{"teal":3702,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3507]},{"teal":3703,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3508,3509]},{"teal":3704,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3510]},{"teal":3705,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3511]},{"teal":3706,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3512,3513,3514]},{"teal":3715,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3515,3516]},{"teal":3716,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3517]},{"teal":3717,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3518]},{"teal":3718,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3519,3520]},{"teal":3719,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3521,3522,3523]},{"teal":3729,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3524,3525]},{"teal":3730,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3526,3527]},{"teal":3731,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3528]},{"teal":3732,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3529]},{"teal":3733,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3530,3531]},{"teal":3734,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3532]},{"teal":3735,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3533]},{"teal":3736,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3534,3535]},{"teal":3737,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3536]},{"teal":3738,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3537]},{"teal":3739,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3538]},{"teal":3742,"source":"contracts/validatorRegistry.algo.ts:840","errorMessage":"must stake at least the minimum for this pool","pc":[3539]},{"teal":3746,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3540,3541]},{"teal":3747,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3542,3543]},{"teal":3748,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3544]},{"teal":3749,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3545,3546]},{"teal":3750,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3547]},{"teal":3751,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3548]},{"teal":3752,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3549,3550]},{"teal":3753,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3551]},{"teal":3754,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3552,3553]},{"teal":3758,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3554,3555]},{"teal":3759,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3556,3557]},{"teal":3760,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3558]},{"teal":3761,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3559,3560]},{"teal":3762,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3561]},{"teal":3763,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3562]},{"teal":3764,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3563,3564]},{"teal":3765,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3565]},{"teal":3766,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3566]},{"teal":3767,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3567,3568]},{"teal":3771,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3569]},{"teal":3772,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3570,3571]},{"teal":3777,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3572,3573]},{"teal":3778,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3574,3575]},{"teal":3779,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3576]},{"teal":3780,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3577,3578,3579]},{"teal":3785,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3580,3581]},{"teal":3786,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3582,3583]},{"teal":3787,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3584,3585]},{"teal":3788,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3586]},{"teal":3789,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3587,3588]},{"teal":3790,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3589]},{"teal":3791,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3590]},{"teal":3792,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3591]},{"teal":3793,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3592]},{"teal":3794,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3593,3594]},{"teal":3795,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3595]},{"teal":3796,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3596,3597]},{"teal":3797,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3598]},{"teal":3798,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3599,3600,3601]},{"teal":3807,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3602,3603]},{"teal":3808,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3604]},{"teal":3809,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3605,3606]},{"teal":3810,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3607]},{"teal":3811,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3608]},{"teal":3812,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3609]},{"teal":3813,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3610]},{"teal":3814,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3611,3612]},{"teal":3815,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3613,3614]},{"teal":3816,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3615,3616]},{"teal":3817,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3617]},{"teal":3818,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3618]},{"teal":3819,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3619]},{"teal":3820,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3620]},{"teal":3821,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3621]},{"teal":3822,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3622]},{"teal":3823,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3623]},{"teal":3824,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3624]},{"teal":3825,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3625,3626]},{"teal":3826,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3627]},{"teal":3827,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3628,3629]},{"teal":3828,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3630]},{"teal":3829,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3631]},{"teal":3830,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3632,3633]},{"teal":3831,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3634]},{"teal":3832,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3635]},{"teal":3833,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3636,3637,3638]},{"teal":3840,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3639,3640]},{"teal":3841,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3641]},{"teal":3842,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3642]},{"teal":3843,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3643,3644]},{"teal":3844,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3645,3646,3647]},{"teal":3849,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3648,3649]},{"teal":3850,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3650]},{"teal":3851,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3651,3652]},{"teal":3852,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3653]},{"teal":3853,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3654,3655]},{"teal":3854,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3656]},{"teal":3855,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3657,3658]},{"teal":3856,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3659]},{"teal":3857,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3660,3661]},{"teal":3858,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3662]},{"teal":3859,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3663]},{"teal":3860,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3664,3665]},{"teal":3861,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3666]},{"teal":3862,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3667]},{"teal":3866,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3668,3669]},{"teal":3869,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3670,3671]},{"teal":3870,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3672]},{"teal":3875,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3673,3674,3675]},{"teal":3876,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3676]},{"teal":3879,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3677,3678,3679]},{"teal":3880,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3680]},{"teal":3883,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3681,3682,3683]},{"teal":3884,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3684]},{"teal":3887,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3685,3686,3687]},{"teal":3888,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3688]},{"teal":3889,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3689]},{"teal":3903,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3690,3691,3692]},{"teal":3906,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3693]},{"teal":3907,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3694,3695]},{"teal":3911,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3696,3697]},{"teal":3912,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3698,3699,3700]},{"teal":3916,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3701,3702]},{"teal":3917,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3703,3704]},{"teal":3918,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3705]},{"teal":3919,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3706,3707]},{"teal":3920,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3708]},{"teal":3921,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3709]},{"teal":3922,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3710,3711]},{"teal":3923,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3712]},{"teal":3924,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3713,3714]},{"teal":3928,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3715,3716]},{"teal":3929,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3717]},{"teal":3930,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3718]},{"teal":3931,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3719]},{"teal":3932,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3720,3721,3722]},{"teal":3933,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3723,3724]},{"teal":3934,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3725]},{"teal":3935,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3726]},{"teal":3936,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3727]},{"teal":3940,"source":"contracts/validatorRegistry.algo.ts:876","errorMessage":"node number out of allowable range","pc":[3728]},{"teal":3944,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3729]},{"teal":3945,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3730,3731]},{"teal":3950,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3732,3733]},{"teal":3951,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3734]},{"teal":3952,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3735]},{"teal":3953,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3736,3737,3738]},{"teal":3957,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3739]},{"teal":3958,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3740,3741]},{"teal":3963,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3742,3743]},{"teal":3964,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3744,3745]},{"teal":3965,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3746]},{"teal":3966,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3747,3748,3749]},{"teal":3971,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3750,3751]},{"teal":3972,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3752]},{"teal":3973,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3753,3754]},{"teal":3974,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3755]},{"teal":3975,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3756]},{"teal":3976,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3757]},{"teal":3977,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3758]},{"teal":3978,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3759]},{"teal":3979,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3760,3761]},{"teal":3980,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3762]},{"teal":3981,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3763]},{"teal":3982,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3764]},{"teal":3983,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3765]},{"teal":3984,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3766]},{"teal":3985,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3767]},{"teal":3986,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3768,3769]},{"teal":3987,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3770]},{"teal":3988,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3771,3772,3773]},{"teal":3993,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3774,3775]},{"teal":3994,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3776]},{"teal":3995,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3777]},{"teal":3996,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3778,3779]},{"teal":3997,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3780]},{"teal":4000,"source":"contracts/validatorRegistry.algo.ts:881","errorMessage":"can't move to same node","pc":[3781]},{"teal":4004,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3782,3783]},{"teal":4005,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3784,3785]},{"teal":4006,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3786]},{"teal":4007,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3787]},{"teal":4008,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3788]},{"teal":4009,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3789]},{"teal":4010,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3790]},{"teal":4011,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3791,3792]},{"teal":4012,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3793]},{"teal":4013,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3794]},{"teal":4014,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3795]},{"teal":4015,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3796,3797]},{"teal":4016,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3798]},{"teal":4017,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3799,3800]},{"teal":4018,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3801]},{"teal":4019,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3802]},{"teal":4020,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3803,3804]},{"teal":4021,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3805]},{"teal":4027,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3806]},{"teal":4028,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3807,3808]},{"teal":4029,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3809,3810]},{"teal":4030,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3811,3812,3813,3814,3815,3816]},{"teal":4031,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3817,3818]},{"teal":4035,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3819,3820]},{"teal":4036,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3821,3822]},{"teal":4039,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3823]},{"teal":4040,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3824,3825]},{"teal":4043,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3826]},{"teal":4047,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3827,3828]},{"teal":4048,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3829,3830]},{"teal":4049,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3831,3832]},{"teal":4050,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3833,3834,3835]},{"teal":4054,"source":"contracts/validatorRegistry.algo.ts:892","pc":[3836]},{"teal":4061,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3837,3838]},{"teal":4062,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3839]},{"teal":4063,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3840]},{"teal":4064,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3841,3842]},{"teal":4065,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3843,3844,3845]},{"teal":4072,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3846,3847]},{"teal":4073,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3848]},{"teal":4074,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3849]},{"teal":4075,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3850,3851]},{"teal":4076,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3852,3853,3854]},{"teal":4080,"source":"contracts/validatorRegistry.algo.ts:896","errorMessage":"couldn't find pool app id in nodes to move","pc":[3855]},{"teal":4081,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3856]},{"teal":4086,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3857]},{"teal":4089,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3858,3859,3860]},{"teal":4090,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3861]},{"teal":4091,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3862]},{"teal":4092,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3863,3864]},{"teal":4093,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3865]},{"teal":4096,"source":"contracts/validatorRegistry.algo.ts:910","errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[3866]},{"teal":4099,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3867,3868,3869]},{"teal":4100,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3870]},{"teal":4103,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3871,3872,3873]},{"teal":4104,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3874]},{"teal":4105,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3875]},{"teal":4106,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3876]},{"teal":4107,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3877]},{"teal":4108,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3878]},{"teal":4122,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3879,3880,3881]},{"teal":4125,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3882]},{"teal":4126,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3883,3884]},{"teal":4130,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3885,3886]},{"teal":4131,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3887,3888,3889]},{"teal":4135,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3890,3891]},{"teal":4136,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3892]},{"teal":4137,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3893]},{"teal":4138,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3894,3895]},{"teal":4139,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3896]},{"teal":4140,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3897]},{"teal":4141,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3898,3899]},{"teal":4142,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3900]},{"teal":4143,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3901]},{"teal":4144,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3902,3903]},{"teal":4148,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3904,3905]},{"teal":4149,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3906]},{"teal":4150,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3907]},{"teal":4151,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3908,3909]},{"teal":4152,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3910]},{"teal":4153,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3911]},{"teal":4154,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3912,3913]},{"teal":4155,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3914]},{"teal":4156,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3915]},{"teal":4157,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3916,3917]},{"teal":4161,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3918,3919]},{"teal":4162,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3920]},{"teal":4163,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3921]},{"teal":4166,"source":"contracts/validatorRegistry.algo.ts:914","errorMessage":"this validator doesn't have a reward token defined","pc":[3922]},{"teal":4170,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3923,3924]},{"teal":4171,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3925]},{"teal":4172,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3926]},{"teal":4173,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3927,3928]},{"teal":4174,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3929]},{"teal":4175,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3930]},{"teal":4176,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3931,3932]},{"teal":4177,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3933]},{"teal":4178,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3934]},{"teal":4179,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3935,3936]},{"teal":4184,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3937,3938]},{"teal":4185,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3939,3940]},{"teal":4186,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3941]},{"teal":4187,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3942,3943]},{"teal":4188,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3944,3945]},{"teal":4189,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3946]},{"teal":4190,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3947,3948]},{"teal":4191,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3949]},{"teal":4192,"source":"contracts/validatorRegistry.algo.ts:917","pc":[3950,3951]},{"teal":4199,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3952]},{"teal":4200,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3953,3954]},{"teal":4201,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3955,3956]},{"teal":4202,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3957,3958]},{"teal":4203,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3959,3960]},{"teal":4207,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3961,3962]},{"teal":4208,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3963,3964]},{"teal":4212,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3965,3966]},{"teal":4213,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3967,3968]},{"teal":4214,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3969,3970]},{"teal":4215,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3971]},{"teal":4216,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3972,3973]},{"teal":4217,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3974,3975]},{"teal":4218,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3976]},{"teal":4219,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3977,3978]},{"teal":4222,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3979]},{"teal":4223,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3980,3981]},{"teal":4226,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3982]},{"teal":4233,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3983,3984]},{"teal":4234,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3985,3986]},{"teal":4235,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3987]},{"teal":4236,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3988,3989]},{"teal":4237,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3990,3991]},{"teal":4238,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3992]},{"teal":4239,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3993,3994]},{"teal":4240,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3995]},{"teal":4243,"source":"contracts/validatorRegistry.algo.ts:925","errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[3996]},{"teal":4247,"source":"contracts/validatorRegistry.algo.ts:929","pc":[3997,3998]},{"teal":4250,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3999,4000]},{"teal":4253,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4001,4002]},{"teal":4254,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4003]},{"teal":4258,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4004,4005,4006]},{"teal":4265,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4007,4008]},{"teal":4266,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4009]},{"teal":4267,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4010,4011]},{"teal":4268,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4012]},{"teal":4269,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4013,4014]},{"teal":4270,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4015]},{"teal":4271,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4016]},{"teal":4272,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4017,4018]},{"teal":4273,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4019]},{"teal":4274,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4020]},{"teal":4277,"source":"contracts/validatorRegistry.algo.ts:1022","errorMessage":"can only be called by validator owner","pc":[4021]},{"teal":4278,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4022]},{"teal":4282,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4023,4024,4025]},{"teal":4290,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4026,4027]},{"teal":4291,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4028]},{"teal":4292,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4029,4030]},{"teal":4293,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4031]},{"teal":4294,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4032,4033]},{"teal":4295,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4034]},{"teal":4296,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4035]},{"teal":4297,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4036,4037]},{"teal":4298,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4038]},{"teal":4299,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4039]},{"teal":4300,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4040]},{"teal":4301,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4041,4042,4043]},{"teal":4302,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4044,4045]},{"teal":4303,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4046,4047]},{"teal":4304,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4048,4049]},{"teal":4305,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4050]},{"teal":4306,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4051,4052]},{"teal":4307,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4053]},{"teal":4308,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4054]},{"teal":4309,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4055,4056]},{"teal":4310,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4057]},{"teal":4311,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4058]},{"teal":4312,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4059]},{"teal":4316,"source":"contracts/validatorRegistry.algo.ts:1029","errorMessage":"can only be called by owner or manager of validator","pc":[4060]},{"teal":4317,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4061]},{"teal":4325,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4062,4063,4064]},{"teal":4329,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4065]},{"teal":4330,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4066,4067]},{"teal":4331,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4068,4069,4070]},{"teal":4332,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4071]},{"teal":4333,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4072]},{"teal":4334,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4073]},{"teal":4335,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4074]},{"teal":4336,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4075]},{"teal":4337,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4076]},{"teal":4340,"source":"contracts/validatorRegistry.algo.ts:1042","errorMessage":"the specified validator id isn't valid","pc":[4077]},{"teal":4344,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4078,4079]},{"teal":4345,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4080,4081,4082]},{"teal":4346,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4083]},{"teal":4347,"source":"contracts/constants.algo.ts:30","pc":[4084]},{"teal":4348,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4085]},{"teal":4351,"source":"contracts/validatorRegistry.algo.ts:1043","errorMessage":"pool id not in valid range","pc":[4086]},{"teal":4358,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4087,4088]},{"teal":4359,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4089,4090,4091]},{"teal":4360,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4092]},{"teal":4361,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4093]},{"teal":4362,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4094]},{"teal":4363,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4095]},{"teal":4364,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4096,4097,4098]},{"teal":4365,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4099,4100]},{"teal":4366,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4101,4102,4103]},{"teal":4367,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4104]},{"teal":4368,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4105,4106]},{"teal":4369,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4107,4108]},{"teal":4370,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4109]},{"teal":4371,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4110,4111]},{"teal":4372,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4112,4113,4114]},{"teal":4373,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4115]},{"teal":4374,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4116]},{"teal":4375,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4117]},{"teal":4376,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4118,4119]},{"teal":4377,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4120]},{"teal":4378,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4121]},{"teal":4379,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4122]},{"teal":4380,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4123]},{"teal":4384,"source":"contracts/validatorRegistry.algo.ts:1044","errorMessage":"pool id outside of range of pools created for this validator","pc":[4124]},{"teal":4391,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4125,4126]},{"teal":4392,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4127,4128,4129]},{"teal":4393,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4130]},{"teal":4394,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4131,4132]},{"teal":4395,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4133,4134]},{"teal":4396,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4135,4136,4137]},{"teal":4397,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4138]},{"teal":4398,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4139]},{"teal":4399,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4140]},{"teal":4400,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4141,4142]},{"teal":4401,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4143]},{"teal":4402,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4144]},{"teal":4403,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4145]},{"teal":4404,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4146]},{"teal":4405,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4147]},{"teal":4406,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4148]},{"teal":4407,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4149,4150]},{"teal":4408,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4151,4152,4153]},{"teal":4409,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4154]},{"teal":4410,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4155]},{"teal":4411,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4156]},{"teal":4412,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4157,4158]},{"teal":4413,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4159]},{"teal":4414,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4160]},{"teal":4415,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4161]},{"teal":4418,"source":"contracts/validatorRegistry.algo.ts:1050","errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4162]},{"teal":4422,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4163,4164]},{"teal":4423,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4165,4166]},{"teal":4424,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4167,4168,4169]},{"teal":4425,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4170]},{"teal":4426,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4171,4172]},{"teal":4427,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4173]},{"teal":4428,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4174]},{"teal":4429,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4175]},{"teal":4433,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4176,4177]},{"teal":4434,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4178,4179,4180]},{"teal":4435,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4181]},{"teal":4436,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4182,4183]},{"teal":4437,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4184,4185,4186]},{"teal":4438,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4187]},{"teal":4439,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200]},{"teal":4440,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4201]},{"teal":4443,"source":"contracts/validatorRegistry.algo.ts:1057","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4202]},{"teal":4444,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4203]},{"teal":4445,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4204]},{"teal":4449,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4205,4206]},{"teal":4450,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4207,4208,4209]},{"teal":4451,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4210]},{"teal":4452,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4211,4212]},{"teal":4453,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4213,4214,4215]},{"teal":4454,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4216]},{"teal":4455,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4217,4218,4219,4220,4221,4222,4223,4224]},{"teal":4456,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4225]},{"teal":4459,"source":"contracts/validatorRegistry.algo.ts:1058","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4226]},{"teal":4460,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4227]},{"teal":4461,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4228]},{"teal":4462,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4229]},{"teal":4471,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4230,4231,4232]},{"teal":4474,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4233]},{"teal":4475,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4234]},{"teal":4479,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4235]},{"teal":4480,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4236,4237]},{"teal":4481,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4238]},{"teal":4482,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4239]},{"teal":4483,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4240,4241]},{"teal":4488,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4242,4243]},{"teal":4489,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4244]},{"teal":4490,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4245]},{"teal":4491,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4246,4247]},{"teal":4492,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4248]},{"teal":4493,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4249]},{"teal":4494,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4250,4251]},{"teal":4495,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4252]},{"teal":4496,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4253]},{"teal":4497,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4254]},{"teal":4498,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4255]},{"teal":4499,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4256,4257,4258]},{"teal":4504,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4259,4260]},{"teal":4505,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4261]},{"teal":4506,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4262]},{"teal":4507,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4263,4264]},{"teal":4508,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4265]},{"teal":4509,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4266]},{"teal":4510,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4267,4268]},{"teal":4511,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4269]},{"teal":4512,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4270]},{"teal":4513,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4271,4272]},{"teal":4514,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4273]},{"teal":4517,"source":"contracts/validatorRegistry.algo.ts:1072","errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4274]},{"teal":4518,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4275,4276]},{"teal":4523,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4277]},{"teal":4524,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4278,4279]},{"teal":4525,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4280]},{"teal":4526,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4281,4282]},{"teal":4527,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4283]},{"teal":4528,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4284]},{"teal":4529,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4285,4286]},{"teal":4530,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4287]},{"teal":4531,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4288,4289]},{"teal":4532,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4290]},{"teal":4533,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4291]},{"teal":4534,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4292,4293,4294]},{"teal":4535,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4295,4296]},{"teal":4536,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4297,4298]},{"teal":4537,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4299]},{"teal":4538,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4300,4301]},{"teal":4539,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4302]},{"teal":4540,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4303]},{"teal":4541,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4304,4305]},{"teal":4542,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4306]},{"teal":4543,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4307,4308]},{"teal":4544,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4309]},{"teal":4545,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4310]},{"teal":4548,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4311,4312,4313]},{"teal":4553,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4314,4315]},{"teal":4554,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4316,4317]},{"teal":4555,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4318]},{"teal":4556,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4319,4320]},{"teal":4557,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4321]},{"teal":4558,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4322]},{"teal":4559,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4323,4324]},{"teal":4560,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4325]},{"teal":4565,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4326]},{"teal":4569,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4327,4328,4329]},{"teal":4573,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4330,4331]},{"teal":4574,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4332,4333,4334]},{"teal":4575,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4335,4336]},{"teal":4576,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4337]},{"teal":4577,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4338]},{"teal":4581,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4339,4340]},{"teal":4582,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4341,4342,4343]},{"teal":4583,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4344,4345]},{"teal":4584,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4346]},{"teal":4585,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4347]},{"teal":4589,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4348,4349]},{"teal":4590,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4350,4351]},{"teal":4591,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4352,4353,4354]},{"teal":4592,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4355]},{"teal":4595,"source":"contracts/validatorRegistry.algo.ts:1085","errorMessage":"sender must be owner to add new validator","pc":[4356]},{"teal":4602,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4357,4358]},{"teal":4603,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4359,4360,4361]},{"teal":4604,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4362]},{"teal":4605,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4363]},{"teal":4606,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4364]},{"teal":4607,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4365]},{"teal":4608,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4366,4367,4368]},{"teal":4609,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4369,4370]},{"teal":4610,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4371,4372,4373]},{"teal":4611,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4374]},{"teal":4612,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4375,4376]},{"teal":4613,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4377]},{"teal":4614,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4378]},{"teal":4618,"source":"contracts/validatorRegistry.algo.ts:1087","errorMessage":"gating type not valid","pc":[4379]},{"teal":4625,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4380,4381]},{"teal":4626,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4382,4383,4384]},{"teal":4627,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4385]},{"teal":4628,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4386]},{"teal":4629,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4387]},{"teal":4630,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4388]},{"teal":4631,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4389,4390,4391]},{"teal":4632,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4392,4393]},{"teal":4633,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4394,4395,4396]},{"teal":4634,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4397]},{"teal":4635,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4398,4399]},{"teal":4636,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4400]},{"teal":4637,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4401]},{"teal":4641,"source":"contracts/validatorRegistry.algo.ts:1091","errorMessage":"epoch length not in allowable range","pc":[4402]},{"teal":4648,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4403,4404]},{"teal":4649,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4405,4406,4407]},{"teal":4650,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4408]},{"teal":4651,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4409]},{"teal":4652,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4410]},{"teal":4653,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4411]},{"teal":4654,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4412,4413,4414]},{"teal":4655,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4415,4416]},{"teal":4656,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4417,4418,4419]},{"teal":4657,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4420]},{"teal":4658,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4421,4422]},{"teal":4659,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4423]},{"teal":4660,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4424]},{"teal":4664,"source":"contracts/validatorRegistry.algo.ts:1095","errorMessage":"commission percentage not valid","pc":[4425]},{"teal":4669,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4426,4427]},{"teal":4670,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4428,4429,4430]},{"teal":4671,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4431]},{"teal":4672,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4432]},{"teal":4673,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4433]},{"teal":4674,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4434,4435,4436]},{"teal":4682,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4437,4438]},{"teal":4683,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4439,4440,4441]},{"teal":4684,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4442,4443]},{"teal":4685,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4444]},{"teal":4688,"source":"contracts/validatorRegistry.algo.ts:1100","errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4445]},{"teal":4693,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4446,4447]},{"teal":4694,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4448,4449,4450]},{"teal":4695,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4451]},{"teal":4696,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4452,4453]},{"teal":4697,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4454]},{"teal":4700,"source":"contracts/validatorRegistry.algo.ts:1105","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4455]},{"teal":4707,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4456,4457]},{"teal":4708,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4458,4459,4460]},{"teal":4709,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4461]},{"teal":4710,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4462]},{"teal":4711,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4463]},{"teal":4712,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4464]},{"teal":4713,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4465,4466,4467]},{"teal":4714,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4468,4469]},{"teal":4715,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4470,4471,4472]},{"teal":4716,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4473]},{"teal":4717,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4474,4475]},{"teal":4718,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4476]},{"teal":4719,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4477]},{"teal":4723,"source":"contracts/validatorRegistry.algo.ts:1107","errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4478]},{"teal":4728,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4479,4480]},{"teal":4729,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4481,4482,4483]},{"teal":4730,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4484]},{"teal":4731,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4485]},{"teal":4732,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4486]},{"teal":4733,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4487,4488,4489]},{"teal":4738,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4490,4491]},{"teal":4739,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4492,4493,4494]},{"teal":4740,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4495]},{"teal":4741,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4496,4497]},{"teal":4742,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4498]},{"teal":4745,"source":"contracts/validatorRegistry.algo.ts:1112","errorMessage":"sunsettingOn must be later than now if set","pc":[4499]},{"teal":4748,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4500]},{"teal":4762,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4501,4502,4503]},{"teal":4765,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4504]},{"teal":4766,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4505,4506]},{"teal":4770,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4507,4508]},{"teal":4771,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4509,4510]},{"teal":4772,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4511,4512,4513]},{"teal":4773,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4514]},{"teal":4774,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4515]},{"teal":4775,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4516]},{"teal":4776,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4517,4518]},{"teal":4777,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4519]},{"teal":4778,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4520]},{"teal":4779,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4521]},{"teal":4780,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4522]},{"teal":4781,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4523]},{"teal":4782,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4524]},{"teal":4783,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4525,4526]},{"teal":4784,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4527,4528,4529]},{"teal":4785,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4530]},{"teal":4786,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4531]},{"teal":4787,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4532]},{"teal":4788,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4533,4534]},{"teal":4789,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4535]},{"teal":4790,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4536]},{"teal":4791,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4537,4538]},{"teal":4804,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4539]},{"teal":4805,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4540]},{"teal":4806,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4541,4542]},{"teal":4810,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4543,4544]},{"teal":4811,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4545,4546]},{"teal":4812,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4547,4548]},{"teal":4813,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4549]},{"teal":4814,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4550,4551]},{"teal":4818,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4552,4553]},{"teal":4819,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4554,4555]},{"teal":4820,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4556]},{"teal":4821,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4557,4558]},{"teal":4824,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4559]},{"teal":4825,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4560,4561]},{"teal":4826,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4562]},{"teal":4827,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4563,4564]},{"teal":4828,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4565,4566]},{"teal":4829,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4567,4568,4569,4570,4571,4572]},{"teal":4830,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4573,4574]},{"teal":4834,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4575,4576]},{"teal":4835,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4577,4578]},{"teal":4845,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4579,4580]},{"teal":4846,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4581,4582]},{"teal":4847,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4583,4584]},{"teal":4850,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4585]},{"teal":4851,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4586,4587]},{"teal":4854,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4588]},{"teal":4855,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4589,4590]},{"teal":4856,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4591]},{"teal":4857,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4592]},{"teal":4858,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4593,4594]},{"teal":4859,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4595,4596,4597]},{"teal":4860,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4598]},{"teal":4865,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4599,4600]},{"teal":4866,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4601,4602,4603]},{"teal":4867,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4604]},{"teal":4868,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4605,4606,4607]},{"teal":4873,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4608]},{"teal":4874,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4609,4610]},{"teal":4875,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4611,4612]},{"teal":4876,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4613]},{"teal":4877,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4614,4615]},{"teal":4878,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4616,4617]},{"teal":4879,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4618]},{"teal":4880,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4619,4620]},{"teal":4881,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4621,4622]},{"teal":4882,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4623,4624]},{"teal":4883,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4625,4626]},{"teal":4884,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4627]},{"teal":4889,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4628,4629]},{"teal":4890,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4630,4631]},{"teal":4891,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4632]},{"teal":4894,"source":"contracts/validatorRegistry.algo.ts:1153","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4633]},{"teal":4895,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4634,4635]},{"teal":4899,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4636,4637]},{"teal":4900,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4638,4639]},{"teal":4901,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4640]},{"teal":4904,"source":"contracts/validatorRegistry.algo.ts:1154","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4641]},{"teal":4905,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4642,4643]},{"teal":4909,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4644,4645]},{"teal":4910,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4646,4647]},{"teal":4911,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4648,4649,4650]},{"teal":4912,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4651]},{"teal":4913,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4652]},{"teal":4914,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4653]},{"teal":4915,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4654,4655]},{"teal":4916,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4656]},{"teal":4917,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4657]},{"teal":4918,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4658]},{"teal":4919,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4659]},{"teal":4920,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4660,4661]},{"teal":4921,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4662]},{"teal":4922,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4663,4664,4665]},{"teal":4923,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4666]},{"teal":4924,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4667,4668]},{"teal":4925,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4669,4670,4671]},{"teal":4926,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4672]},{"teal":4927,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4673]},{"teal":4928,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4674]},{"teal":4929,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4675,4676]},{"teal":4930,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4677]},{"teal":4934,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4678,4679]},{"teal":4935,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4680,4681]},{"teal":4936,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4682,4683,4684]},{"teal":4937,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4685]},{"teal":4938,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4686]},{"teal":4939,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4687]},{"teal":4940,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4688,4689]},{"teal":4941,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4690]},{"teal":4942,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4691]},{"teal":4943,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4692,4693]},{"teal":4944,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4694]},{"teal":4945,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4695,4696]},{"teal":4946,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4697]},{"teal":4947,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4698]},{"teal":4948,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4699,4700]},{"teal":4949,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4701,4702,4703]},{"teal":4950,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4704]},{"teal":4951,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4705]},{"teal":4952,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4706]},{"teal":4953,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4707,4708]},{"teal":4954,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4709]},{"teal":4959,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4710,4711]},{"teal":4960,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4712,4713,4714]},{"teal":4965,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4715,4716]},{"teal":4966,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4717]},{"teal":4967,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4718]},{"teal":4968,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4719]},{"teal":4969,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4720,4721]},{"teal":4970,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4722,4723,4724]},{"teal":4971,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4725]},{"teal":4972,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4726]},{"teal":4973,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4727]},{"teal":4974,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4728,4729]},{"teal":4975,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4730]},{"teal":4976,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4731]},{"teal":4977,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4732]},{"teal":4978,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4733]},{"teal":4979,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4734]},{"teal":4980,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4735]},{"teal":4981,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4736,4737]},{"teal":4982,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4738,4739,4740]},{"teal":4983,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4741]},{"teal":4984,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4742]},{"teal":4985,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4743]},{"teal":4986,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4744,4745]},{"teal":4987,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4746]},{"teal":4993,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4747,4748]},{"teal":4994,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4749,4750,4751]},{"teal":4999,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4752,4753]},{"teal":5000,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4754]},{"teal":5001,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4755]},{"teal":5002,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4756]},{"teal":5003,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4757,4758]},{"teal":5004,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4759]},{"teal":5005,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4760]},{"teal":5010,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4761,4762]},{"teal":5011,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4763]},{"teal":5012,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4764]},{"teal":5013,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4765]},{"teal":5014,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4766,4767]},{"teal":5015,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4768,4769,4770]},{"teal":5016,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4771]},{"teal":5017,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4772]},{"teal":5018,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4773]},{"teal":5019,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4774,4775]},{"teal":5020,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4776]},{"teal":5021,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4777]},{"teal":5022,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4778,4779]},{"teal":5023,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4780,4781]},{"teal":5024,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4782,4783]},{"teal":5025,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4784]},{"teal":5026,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4785]},{"teal":5027,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4786]},{"teal":5028,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4787]},{"teal":5029,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4788,4789]},{"teal":5030,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4790,4791,4792]},{"teal":5031,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4793]},{"teal":5032,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4794]},{"teal":5033,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4795]},{"teal":5034,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4796,4797]},{"teal":5035,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4798]},{"teal":5039,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4799,4800]},{"teal":5040,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4801]},{"teal":5041,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4802,4803]},{"teal":5042,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4804,4805]},{"teal":5043,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4806,4807]},{"teal":5044,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4808]},{"teal":5045,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4809]},{"teal":5046,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4810,4811]},{"teal":5047,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4812]},{"teal":5048,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4813]},{"teal":5049,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4814]},{"teal":5053,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4815,4816,4817]},{"teal":5056,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4818]},{"teal":5057,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4819,4820]},{"teal":5061,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4821]},{"teal":5062,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4822,4823]},{"teal":5063,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4824]},{"teal":5064,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4825]},{"teal":5065,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4826]},{"teal":5066,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4827]},{"teal":5067,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4828]},{"teal":5071,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4829]},{"teal":5072,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4830,4831]},{"teal":5073,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4832]},{"teal":5074,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4833]},{"teal":5077,"source":"contracts/validatorRegistry.algo.ts:1172","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4834]},{"teal":5078,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4835,4836]},{"teal":5082,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4837]},{"teal":5083,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4838,4839]},{"teal":5087,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4840]},{"teal":5088,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4841,4842]},{"teal":5093,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4843,4844]},{"teal":5094,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4845,4846]},{"teal":5095,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4847]},{"teal":5096,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4848,4849,4850]},{"teal":5101,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4851,4852]},{"teal":5102,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4853,4854]},{"teal":5103,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4855]},{"teal":5104,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4856]},{"teal":5105,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4857]},{"teal":5106,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4858]},{"teal":5107,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4859,4860]},{"teal":5108,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4861]},{"teal":5109,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4862,4863,4864]},{"teal":5114,"source":"contracts/validatorRegistry.algo.ts:1177","pc":[4865]},{"teal":5120,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4866,4867]},{"teal":5121,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4868]},{"teal":5122,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4869]},{"teal":5123,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4870]},{"teal":5124,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4871,4872,4873]},{"teal":5125,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4874,4875]},{"teal":5126,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4876,4877]},{"teal":5127,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4878]},{"teal":5128,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4879]},{"teal":5129,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4880]},{"teal":5130,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4881]},{"teal":5131,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4882]},{"teal":5132,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4883]},{"teal":5133,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4884]},{"teal":5134,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4885]},{"teal":5135,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4886]},{"teal":5136,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4887]},{"teal":5139,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4888,4889,4890]},{"teal":5144,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4891,4892]},{"teal":5145,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4893]},{"teal":5146,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4894]},{"teal":5147,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4895,4896]},{"teal":5154,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4897,4898]},{"teal":5155,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4899]},{"teal":5156,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4900]},{"teal":5157,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4901,4902]},{"teal":5158,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4903,4904,4905]},{"teal":5164,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4906,4907]},{"teal":5165,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4908]},{"teal":5166,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4909]},{"teal":5167,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4910,4911,4912]},{"teal":5171,"source":"contracts/validatorRegistry.algo.ts:1184","errorMessage":"No empty slot available in the staker pool set","pc":[4913]},{"teal":5176,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4914,4915]},{"teal":5177,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4916]},{"teal":5178,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4917]},{"teal":5179,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4918]},{"teal":5180,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4919]},{"teal":5181,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4920,4921]},{"teal":5182,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4922]},{"teal":5183,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4923,4924]},{"teal":5184,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4925]},{"teal":5185,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4926,4927]},{"teal":5186,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4928]},{"teal":5187,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4929]},{"teal":5198,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4930,4931,4932]},{"teal":5201,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4933]},{"teal":5202,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4934,4935]},{"teal":5206,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4936]},{"teal":5207,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4937,4938]},{"teal":5211,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4939]},{"teal":5212,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4940,4941]},{"teal":5216,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4942]},{"teal":5217,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4943,4944]},{"teal":5221,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4945]},{"teal":5222,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4946,4947]},{"teal":5223,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4948]},{"teal":5224,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4949]},{"teal":5227,"source":"contracts/validatorRegistry.algo.ts:1203","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4950]},{"teal":5228,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4951,4952]},{"teal":5232,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4953]},{"teal":5233,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4954,4955]},{"teal":5238,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4956,4957]},{"teal":5239,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4958,4959]},{"teal":5240,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4960]},{"teal":5241,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4961,4962,4963]},{"teal":5246,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4964,4965]},{"teal":5247,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4966,4967]},{"teal":5248,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4968]},{"teal":5249,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4969]},{"teal":5250,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4970]},{"teal":5251,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4971]},{"teal":5252,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4972]},{"teal":5253,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4973]},{"teal":5254,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4974]},{"teal":5255,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4975]},{"teal":5256,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4976]},{"teal":5257,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4977,4978,4979]},{"teal":5260,"source":"contracts/validatorRegistry.algo.ts:1206","pc":[4980,4981,4982]},{"teal":5265,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4983,4984]},{"teal":5266,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4985]},{"teal":5267,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4986]},{"teal":5268,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4987,4988]},{"teal":5273,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4989,4990]},{"teal":5274,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4991,4992]},{"teal":5275,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4993]},{"teal":5276,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4994]},{"teal":5277,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4995]},{"teal":5278,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4996]},{"teal":5279,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4997]},{"teal":5280,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4998]},{"teal":5281,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4999]},{"teal":5282,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5000,5001]},{"teal":5283,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5002,5003,5004]},{"teal":5284,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5005]},{"teal":5285,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5006]},{"teal":5286,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5007,5008,5009]},{"teal":5292,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5010,5011]},{"teal":5293,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5012,5013]},{"teal":5294,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5014]},{"teal":5295,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5015]},{"teal":5296,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5016]},{"teal":5297,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5017]},{"teal":5298,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5018,5019]},{"teal":5299,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5020]},{"teal":5300,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5021,5022,5023]},{"teal":5305,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5024]},{"teal":5306,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5025,5026]},{"teal":5310,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5027,5028]},{"teal":5311,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5029]},{"teal":5312,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5030]},{"teal":5313,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056]},{"teal":5314,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5057]},{"teal":5315,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5058,5059]},{"teal":5316,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5060]},{"teal":5317,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5061,5062]},{"teal":5318,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5063]},{"teal":5319,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5064,5065,5066]},{"teal":5324,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5067,5068]},{"teal":5325,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5069]},{"teal":5326,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5070]},{"teal":5327,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5071,5072]},{"teal":5336,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5073,5074]},{"teal":5337,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5075]},{"teal":5338,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5076]},{"teal":5339,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5077,5078]},{"teal":5340,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5079,5080,5081]},{"teal":5346,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5082,5083]},{"teal":5347,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5084]},{"teal":5348,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5085,5086,5087]},{"teal":5352,"source":"contracts/validatorRegistry.algo.ts:1220","errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5088]},{"teal":5357,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5089,5090]},{"teal":5358,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5091]},{"teal":5359,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5092,5093]},{"teal":5360,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5094]},{"teal":5361,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5095]},{"teal":5362,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5096]},{"teal":5363,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5097]},{"teal":5364,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5098,5099]},{"teal":5365,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5100]},{"teal":5366,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5101]},{"teal":5367,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5102]},{"teal":5370,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5103,5104]},{"teal":5373,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5105,5106]},{"teal":5374,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5107]},{"teal":5378,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5108,5109,5110]},{"teal":5381,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5111]},{"teal":5382,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5112,5113]},{"teal":5386,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5114,5115]},{"teal":5387,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5116,5117]},{"teal":5388,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5118]},{"teal":5389,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5119,5120]},{"teal":5390,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5121]},{"teal":5391,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5122]},{"teal":5392,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5123,5124]},{"teal":5393,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5125]},{"teal":5394,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5126,5127]},{"teal":5398,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5128,5129,5130]},{"teal":5399,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5131]},{"teal":5400,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5132]},{"teal":5401,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5133,5134]},{"teal":5402,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5135]},{"teal":5403,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5136]},{"teal":5404,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5137,5138]},{"teal":5405,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5139]},{"teal":5406,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5140]},{"teal":5407,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5141,5142]},{"teal":5411,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5143,5144]},{"teal":5412,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5145]},{"teal":5413,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5146]},{"teal":5414,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5147]},{"teal":5415,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5148,5149,5150]},{"teal":5416,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5151,5152]},{"teal":5417,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5153]},{"teal":5418,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5154]},{"teal":5419,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5155]},{"teal":5423,"source":"contracts/validatorRegistry.algo.ts:1230","errorMessage":"node number not in valid range","pc":[5156]},{"teal":5427,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5157]},{"teal":5428,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5158,5159]},{"teal":5433,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5160,5161]},{"teal":5434,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5162,5163]},{"teal":5435,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5164]},{"teal":5436,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5165,5166,5167]},{"teal":5441,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5168,5169]},{"teal":5442,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5170]},{"teal":5443,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5171,5172]},{"teal":5444,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5173]},{"teal":5445,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5174]},{"teal":5446,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5175]},{"teal":5447,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5176]},{"teal":5448,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5177]},{"teal":5449,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5178]},{"teal":5450,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5179]},{"teal":5451,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5180,5181]},{"teal":5452,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5182]},{"teal":5453,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5183]},{"teal":5454,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5184]},{"teal":5455,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5185]},{"teal":5456,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5186]},{"teal":5457,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5187]},{"teal":5458,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5188]},{"teal":5459,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5189]},{"teal":5460,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5190,5191,5192]},{"teal":5465,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5193,5194]},{"teal":5466,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5195,5196]},{"teal":5467,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5197]},{"teal":5468,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5198]},{"teal":5469,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5199]},{"teal":5470,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5200]},{"teal":5471,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5201]},{"teal":5472,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5202]},{"teal":5473,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5203]},{"teal":5474,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5204,5205]},{"teal":5475,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5206]},{"teal":5476,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5207]},{"teal":5477,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5208]},{"teal":5478,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5209,5210]},{"teal":5479,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5211]},{"teal":5480,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5212]},{"teal":5481,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5213,5214]},{"teal":5482,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5215]},{"teal":5483,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5216]},{"teal":5484,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5217,5218]},{"teal":5485,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5219]},{"teal":5489,"source":"contracts/validatorRegistry.algo.ts:1236","pc":[5220]},{"teal":5496,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5221,5222]},{"teal":5497,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5223]},{"teal":5498,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5224]},{"teal":5499,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5225,5226]},{"teal":5500,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5227,5228,5229]},{"teal":5504,"source":"contracts/validatorRegistry.algo.ts:1239","errorMessage":"no available space in specified node for this pool","pc":[5230]},{"teal":5505,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5231]},{"teal":5515,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5232,5233,5234]},{"teal":5518,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5235]},{"teal":5519,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5236,5237]},{"teal":5523,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5238,5239]},{"teal":5524,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5240]},{"teal":5525,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5241]},{"teal":5526,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5242,5243]},{"teal":5527,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5244]},{"teal":5528,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5245]},{"teal":5529,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5246,5247]},{"teal":5530,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5248]},{"teal":5531,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5249]},{"teal":5532,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5250,5251]},{"teal":5537,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5252,5253]},{"teal":5538,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5254]},{"teal":5539,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5255]},{"teal":5540,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5256,5257,5258]},{"teal":5545,"source":"contracts/validatorRegistry.algo.ts:1252","pc":[5259]},{"teal":5550,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5260,5261]},{"teal":5551,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5262,5263]},{"teal":5555,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5264]},{"teal":5556,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5265,5266]},{"teal":5557,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5267]},{"teal":5558,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5268,5269]},{"teal":5559,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5270]},{"teal":5560,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5271]},{"teal":5561,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5272,5273]},{"teal":5562,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5274]},{"teal":5563,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5275,5276]},{"teal":5570,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5277,5278]},{"teal":5571,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5279]},{"teal":5572,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5280]},{"teal":5573,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5281]},{"teal":5574,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5282,5283,5284]},{"teal":5575,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5285,5286]},{"teal":5576,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5287,5288]},{"teal":5577,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5289]},{"teal":5578,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5290]},{"teal":5581,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5291]},{"teal":5582,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5292,5293,5294]},{"teal":5583,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5295,5296]},{"teal":5584,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5297,5298]},{"teal":5585,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5299]},{"teal":5586,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5300]},{"teal":5589,"source":"contracts/validatorRegistry.algo.ts:1258","pc":[5301,5302,5303]},{"teal":5594,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5304,5305]},{"teal":5595,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5306]},{"teal":5596,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5307]},{"teal":5597,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5308]},{"teal":5601,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5309,5310]},{"teal":5602,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5311]},{"teal":5603,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5312]},{"teal":5604,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5313,5314]},{"teal":5605,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5315]},{"teal":5606,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5316]},{"teal":5607,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5317,5318]},{"teal":5608,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5319]},{"teal":5609,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5320]},{"teal":5610,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5321,5322]},{"teal":5615,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5323,5324]},{"teal":5616,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5325]},{"teal":5617,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5326]},{"teal":5618,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5327,5328,5329]},{"teal":5623,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5330]},{"teal":5624,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5331,5332]},{"teal":5632,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5333,5334]},{"teal":5633,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5335,5336]},{"teal":5634,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5337,5338]},{"teal":5635,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5339]},{"teal":5636,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5340,5341]},{"teal":5637,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5342]},{"teal":5640,"source":"contracts/validatorRegistry.algo.ts:1268","errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5343]},{"teal":5646,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5344,5345]},{"teal":5647,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5346]},{"teal":5648,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5347]},{"teal":5649,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5348,5349,5350]},{"teal":5657,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5351,5352]},{"teal":5658,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5353,5354]},{"teal":5659,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5355]},{"teal":5660,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5356,5357]},{"teal":5661,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5358,5359,5360]},{"teal":5662,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5361]},{"teal":5665,"source":"contracts/validatorRegistry.algo.ts:1274","errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5362]},{"teal":5671,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5363,5364]},{"teal":5672,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5365,5366]},{"teal":5673,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5367]},{"teal":5674,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5368,5369,5370]},{"teal":5679,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5371]},{"teal":5680,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5372,5373]},{"teal":5684,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5374,5375]},{"teal":5685,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5376,5377,5378]},{"teal":5686,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5379]},{"teal":5687,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5380,5381]},{"teal":5688,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5382,5383,5384]},{"teal":5689,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5385]},{"teal":5690,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5386,5387]},{"teal":5691,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5388]},{"teal":5692,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5389,5390]},{"teal":5698,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5391,5392]},{"teal":5699,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5393,5394]},{"teal":5700,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5395]},{"teal":5701,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5396,5397,5398]},{"teal":5706,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5399]},{"teal":5707,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5400,5401]},{"teal":5708,"source":"contracts/validatorRegistry.algo.ts:1284","pc":[5402,5403,5404]},{"teal":5714,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5405,5406]},{"teal":5715,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5407]},{"teal":5716,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5408]},{"teal":5717,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5409]},{"teal":5718,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5410,5411]},{"teal":5719,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5412]},{"teal":5720,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5413,5414,5415]},{"teal":5721,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5416,5417]},{"teal":5722,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5418,5419]},{"teal":5723,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5420,5421]},{"teal":5724,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5422]},{"teal":5725,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5423]},{"teal":5726,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5424]},{"teal":5727,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5425,5426]},{"teal":5728,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5427,5428,5429]},{"teal":5733,"source":"contracts/validatorRegistry.algo.ts:1287","pc":[5430,5431]},{"teal":5736,"source":"contracts/validatorRegistry.algo.ts:1287","errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5432]},{"teal":5742,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5433,5434]},{"teal":5743,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5435,5436]},{"teal":5744,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5437]},{"teal":5745,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5438,5439,5440]},{"teal":5753,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5441,5442]},{"teal":5754,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5443,5444]},{"teal":5755,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5445]},{"teal":5756,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5446,5447]},{"teal":5757,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5448,5449,5450]},{"teal":5758,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5451]},{"teal":5759,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5452,5453,5454]},{"teal":5762,"source":"contracts/validatorRegistry.algo.ts:1292","errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5455]},{"teal":5768,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5456,5457]},{"teal":5769,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5458,5459]},{"teal":5770,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5460]},{"teal":5771,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5461,5462,5463]},{"teal":5776,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5464,5465]},{"teal":5777,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5466,5467]},{"teal":5781,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5468,5469]},{"teal":5782,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5470,5471,5472]},{"teal":5785,"source":"contracts/validatorRegistry.algo.ts:1300","errorMessage":"provided NFD must be valid","pc":[5473]},{"teal":5793,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5474,5475]},{"teal":5794,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5476,5477]},{"teal":5795,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5478]},{"teal":5798,"source":"contracts/validatorRegistry.algo.ts:1304","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5479]},{"teal":5799,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5480,5481]},{"teal":5800,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5482]},{"teal":5801,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5483]},{"teal":5802,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5484,5485,5486]},{"teal":5803,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5487,5488]},{"teal":5804,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5489,5490]},{"teal":5805,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5491,5492,5493]},{"teal":5806,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5494]},{"teal":5810,"source":"contracts/validatorRegistry.algo.ts:1303","errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5495]},{"teal":5818,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5496,5497]},{"teal":5819,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512]},{"teal":5820,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5513]},{"teal":5823,"source":"contracts/validatorRegistry.algo.ts:1311","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5514]},{"teal":5824,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5515]},{"teal":5825,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5516,5517]},{"teal":5826,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5518,5519,5520]},{"teal":5827,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5521]},{"teal":5828,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5522]},{"teal":5831,"source":"contracts/validatorRegistry.algo.ts:1310","errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5523]},{"teal":5834,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5524]},{"teal":5846,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5525,5526,5527]},{"teal":5849,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5528]},{"teal":5853,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5529,5530]},{"teal":5854,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5531,5532,5533,5534,5535,5536,5537,5538]},{"teal":5855,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5539]},{"teal":5858,"source":"contracts/validatorRegistry.algo.ts:1329","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5540]},{"teal":5859,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5541,5542]},{"teal":5867,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5543]},{"teal":5868,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5544,5545]},{"teal":5869,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5546,5547]},{"teal":5870,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5548,5549,5550,5551,5552,5553]},{"teal":5871,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5554,5555]},{"teal":5875,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5556,5557]},{"teal":5876,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5558,5559]},{"teal":5880,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5560,5561]},{"teal":5881,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5562]},{"teal":5882,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5563]},{"teal":5883,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5564]},{"teal":5884,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5565,5566,5567]},{"teal":5885,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5568]},{"teal":5886,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5569]},{"teal":5887,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5570,5571]},{"teal":5888,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5572,5573]},{"teal":5889,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5574]},{"teal":5890,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5575,5576]},{"teal":5893,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5577]},{"teal":5894,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5578,5579]},{"teal":5897,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5580]},{"teal":5898,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5581,5582]},{"teal":5899,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5583]},{"teal":5900,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5584]},{"teal":5901,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5585,5586]},{"teal":5902,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5587,5588,5589]},{"teal":5903,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5590]},{"teal":5904,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5591]},{"teal":5907,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5592,5593]},{"teal":5908,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5594]},{"teal":5919,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5595,5596,5597]},{"teal":5922,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5598]},{"teal":5923,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5599,5600]},{"teal":5930,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5601]},{"teal":5931,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5602,5603]},{"teal":5932,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5604,5605]},{"teal":5936,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5606,5607]},{"teal":5937,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5608,5609]},{"teal":5941,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624]},{"teal":5942,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5625,5626]},{"teal":5943,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641]},{"teal":5944,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5642,5643]},{"teal":5947,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5644]},{"teal":5948,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5645,5646]},{"teal":5951,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5647]},{"teal":5955,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5648,5649]},{"teal":5956,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5650,5651]},{"teal":5960,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5652]},{"teal":5961,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5653,5654]},{"teal":5966,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5655,5656]},{"teal":5967,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5657,5658]},{"teal":5968,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5659]},{"teal":5969,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5660]},{"teal":5970,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5661,5662,5663]},{"teal":5974,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5664,5665]},{"teal":5975,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5666,5667]},{"teal":5976,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5668,5669]},{"teal":5977,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5670]},{"teal":5978,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5671,5672]},{"teal":5983,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5673,5674]},{"teal":5984,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5675,5676]},{"teal":5985,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5677]},{"teal":5986,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5678]},{"teal":5987,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5679,5680,5681]},{"teal":5988,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5682,5683]},{"teal":5989,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5684,5685]},{"teal":5990,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5686]},{"teal":5991,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5687]},{"teal":5994,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5688,5689,5690]},{"teal":5999,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5691]},{"teal":6000,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5692,5693,5694]},{"teal":6007,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5695,5696]},{"teal":6008,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5697,5698]},{"teal":6009,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5699]},{"teal":6010,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5700,5701]},{"teal":6011,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5702,5703,5704]},{"teal":6016,"source":"contracts/validatorRegistry.algo.ts:1358","pc":[5705]},{"teal":6020,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5706,5707]},{"teal":6023,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5708,5709]},{"teal":6024,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5710]},{"teal":6032,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5711,5712,5713]},{"teal":6035,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5714]},{"teal":6039,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5715,5716,5717]},{"teal":6040,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5718,5719]},{"teal":6044,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5720,5721]},{"teal":6045,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5722,5723]},{"teal":6046,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5724]},{"teal":6047,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5725]},{"teal":6048,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5726,5727]},{"teal":6049,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5728]},{"teal":6050,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5729]},{"teal":6051,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5730]},{"teal":6052,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5731]},{"teal":6053,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5732]},{"teal":6056,"source":"contracts/validatorRegistry.algo.ts:1369","errorMessage":"wideRatio failed","pc":[5733]},{"teal":6059,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5734,5735]},{"teal":6060,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5736]},{"teal":6067,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5737,5738,5739]},{"teal":6070,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5740]},{"teal":6074,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5741,5742,5743]},{"teal":6075,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5744,5745]},{"teal":6079,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5746,5747]},{"teal":6080,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5748,5749,5750]},{"teal":6081,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5751]},{"teal":6082,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5752]},{"teal":6083,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5753,5754]},{"teal":6084,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5755]},{"teal":6085,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5756]},{"teal":6086,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5757]},{"teal":6087,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5758]},{"teal":6088,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5759]},{"teal":6091,"source":"contracts/validatorRegistry.algo.ts:1379","errorMessage":"wideRatio failed","pc":[5760]},{"teal":6094,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5761,5762]},{"teal":6095,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5763]},{"teal":6101,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5764,5765,5766]},{"teal":6105,"source":"contracts/validatorRegistry.algo.ts:1386","pc":[5767,5768]},{"teal":6106,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5769]},{"teal":6110,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5770,5771,5772]},{"teal":6114,"source":"contracts/validatorRegistry.algo.ts:1390","pc":[5773]},{"teal":6115,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5774]},{"teal":6119,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5775,5776,5777]},{"teal":6122,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5778]},{"teal":6126,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5779,5780]},{"teal":6127,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5781,5782]},{"teal":6131,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5783,5784]},{"teal":6132,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5785,5786]},{"teal":6133,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5787,5788]},{"teal":6134,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5789]},{"teal":6135,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5790]},{"teal":6136,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5791,5792]},{"teal":6140,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5793,5794]},{"teal":6141,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5795,5796]},{"teal":6142,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5797,5798]},{"teal":6143,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5799]},{"teal":6144,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5800]},{"teal":6145,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5801,5802]},{"teal":6149,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5803,5804]},{"teal":6150,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5805,5806]},{"teal":6151,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5807,5808]},{"teal":6152,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5809]},{"teal":6153,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5810]},{"teal":6154,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5811,5812]},{"teal":6158,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5813,5814]},{"teal":6159,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5815,5816]},{"teal":6160,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5817,5818]},{"teal":6161,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5819]},{"teal":6162,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5820]},{"teal":6163,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5821,5822]},{"teal":6167,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5823,5824]},{"teal":6168,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5825,5826]},{"teal":6169,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5827,5828]},{"teal":6170,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5829]},{"teal":6171,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5830]},{"teal":6172,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5831,5832]},{"teal":6176,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5833,5834]},{"teal":6177,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5835,5836]},{"teal":6178,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5837,5838]},{"teal":6179,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5839]},{"teal":6180,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5840]},{"teal":6181,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5841,5842]},{"teal":6185,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5843,5844]},{"teal":6186,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5845,5846]},{"teal":6187,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5847,5848]},{"teal":6188,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5849]},{"teal":6189,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5850]},{"teal":6190,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5851,5852]},{"teal":6194,"source":"contracts/validatorRegistry.algo.ts:1410","pc":[5853,5854]},{"teal":6197,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5855,5856]},{"teal":6198,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5857]},{"teal":6202,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5858,5859,5860]},{"teal":6206,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5861,5862,5863]},{"teal":6207,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5864,5865]},{"teal":6208,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5866,5867,5868]},{"teal":6209,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5869]},{"teal":6210,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5870]},{"teal":6211,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5871]},{"teal":6214,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5872,5873,5874,5875,5876,5877]},{"teal":6215,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5878,5879,5880]},{"teal":6216,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5881,5882,5883,5884]},{"teal":6219,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[5885]},{"teal":6222,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5886,5887,5888,5889,5890,5891]},{"teal":6223,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5892,5893,5894,5895,5896,5897]},{"teal":6224,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5898,5899,5900,5901,5902,5903]},{"teal":6225,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5904,5905,5906,5907,5908,5909]},{"teal":6226,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5910,5911,5912,5913,5914,5915]},{"teal":6227,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5916,5917,5918,5919,5920,5921]},{"teal":6228,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5922,5923,5924,5925,5926,5927]},{"teal":6229,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5928,5929,5930,5931,5932,5933]},{"teal":6230,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5934,5935,5936,5937,5938,5939]},{"teal":6231,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5940,5941,5942,5943,5944,5945]},{"teal":6232,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5946,5947,5948,5949,5950,5951]},{"teal":6233,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5952,5953,5954,5955,5956,5957]},{"teal":6234,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5958,5959,5960,5961,5962,5963]},{"teal":6235,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5964,5965,5966,5967,5968,5969]},{"teal":6236,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5970,5971,5972,5973,5974,5975]},{"teal":6237,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5976,5977,5978,5979,5980,5981]},{"teal":6238,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5982,5983,5984,5985,5986,5987]},{"teal":6239,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5988,5989,5990,5991,5992,5993]},{"teal":6240,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5994,5995,5996,5997,5998,5999]},{"teal":6241,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6000,6001,6002,6003,6004,6005]},{"teal":6242,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6006,6007,6008,6009,6010,6011]},{"teal":6243,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6012,6013,6014,6015,6016,6017]},{"teal":6244,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6018,6019,6020,6021,6022,6023]},{"teal":6245,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6024,6025,6026,6027,6028,6029]},{"teal":6246,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6030,6031,6032,6033,6034,6035]},{"teal":6247,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6036,6037,6038,6039,6040,6041]},{"teal":6248,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6042,6043,6044,6045,6046,6047]},{"teal":6249,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6048,6049,6050,6051,6052,6053]},{"teal":6250,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6054,6055,6056,6057,6058,6059]},{"teal":6251,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6060,6061,6062,6063,6064,6065]},{"teal":6252,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6066,6067,6068,6069,6070,6071]},{"teal":6253,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6072,6073,6074,6075,6076,6077]},{"teal":6254,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6078,6079,6080,6081,6082,6083]},{"teal":6255,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6084,6085,6086]},{"teal":6256,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154]},{"teal":6259,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6155]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":26,"patch":229321,"commitHash":"43cb5632"}}} as unknown as Arc56Contract /** * A state record containing binary data @@ -62,54 +63,42 @@ export type Expand = T extends (...args: infer A) => infer R : never -// Aliases for non-encoded ABI values - -type uint64 = bigint; -type byte = number; -type address = string; -type uint8 = number; -type uint32 = number; -type uint16 = number; -type bool = boolean; -type pay = AppMethodCallTransactionArgument; -type AVMBytes = Uint8Array; - // Type definitions for ARC-56 structs export type ValidatorInfo = { config: { - id: uint64, - owner: address, - manager: address, - nfdForInfo: uint64, - entryGatingType: uint8, - entryGatingAddress: address, - entryGatingAssets: uint64[], - gatingAssetMinBalance: uint64, - rewardTokenId: uint64, - rewardPerPayout: uint64, - epochRoundLength: uint32, - percentToValidator: uint32, - validatorCommissionAddress: address, - minEntryStake: uint64, - maxAlgoPerPool: uint64, - poolsPerNode: uint8, - sunsettingOn: uint64, - sunsettingTo: uint64 + id: bigint, + owner: string, + manager: string, + nfdForInfo: bigint, + entryGatingType: number, + entryGatingAddress: string, + entryGatingAssets: [bigint, bigint, bigint, bigint], + gatingAssetMinBalance: bigint, + rewardTokenId: bigint, + rewardPerPayout: bigint, + epochRoundLength: number, + percentToValidator: number, + validatorCommissionAddress: string, + minEntryStake: bigint, + maxAlgoPerPool: bigint, + poolsPerNode: number, + sunsettingOn: bigint, + sunsettingTo: bigint }, state: { - numPools: uint16, - totalStakers: uint64, - totalAlgoStaked: uint64, - rewardTokenHeldBack: uint64 + numPools: number, + totalStakers: bigint, + totalAlgoStaked: bigint, + rewardTokenHeldBack: bigint }, - pools: [uint64,uint16,uint64][], + pools: [[bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint], [bigint, number, bigint]], tokenPayoutRatio: { - poolPctOfWhole: uint64[], - updatedForPayout: uint64 + poolPctOfWhole: [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint], + updatedForPayout: bigint }, nodePoolAssignments: { - nodes: [uint64[]][] + nodes: [[[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]]] } } @@ -122,10 +111,10 @@ export function ValidatorInfoFromTuple(abiTuple: [[bigint, string, string, bigin } export type MbrAmounts = { - addValidatorMbr: uint64, - addPoolMbr: uint64, - poolInitMbr: uint64, - addStakerMbr: uint64 + addValidatorMbr: bigint, + addPoolMbr: bigint, + poolInitMbr: bigint, + addStakerMbr: bigint } @@ -137,17 +126,17 @@ export function MbrAmountsFromTuple(abiTuple: [bigint, bigint, bigint, bigint]) } export type Constraints = { - epochPayoutRoundsMin: uint64, - epochPayoutRoundsMax: uint64, - minPctToValidatorWFourDecimals: uint64, - maxPctToValidatorWFourDecimals: uint64, - minEntryStake: uint64, - maxAlgoPerPool: uint64, - maxAlgoPerValidator: uint64, - amtConsideredSaturated: uint64, - maxNodes: uint64, - maxPoolsPerNode: uint64, - maxStakersPerPool: uint64 + epochPayoutRoundsMin: bigint, + epochPayoutRoundsMax: bigint, + minPctToValidatorWFourDecimals: bigint, + maxPctToValidatorWFourDecimals: bigint, + minEntryStake: bigint, + maxAlgoPerPool: bigint, + maxAlgoPerValidator: bigint, + amtConsideredSaturated: bigint, + maxNodes: bigint, + maxPoolsPerNode: bigint, + maxStakersPerPool: bigint } @@ -159,24 +148,24 @@ export function ConstraintsFromTuple(abiTuple: [bigint, bigint, bigint, bigint, } export type ValidatorConfig = { - id: uint64, - owner: address, - manager: address, - nfdForInfo: uint64, - entryGatingType: uint8, - entryGatingAddress: address, - entryGatingAssets: [uint64,uint64,uint64,uint64], - gatingAssetMinBalance: uint64, - rewardTokenId: uint64, - rewardPerPayout: uint64, - epochRoundLength: uint32, - percentToValidator: uint32, - validatorCommissionAddress: address, - minEntryStake: uint64, - maxAlgoPerPool: uint64, - poolsPerNode: uint8, - sunsettingOn: uint64, - sunsettingTo: uint64 + id: bigint, + owner: string, + manager: string, + nfdForInfo: bigint, + entryGatingType: number, + entryGatingAddress: string, + entryGatingAssets: [bigint, bigint, bigint, bigint], + gatingAssetMinBalance: bigint, + rewardTokenId: bigint, + rewardPerPayout: bigint, + epochRoundLength: number, + percentToValidator: number, + validatorCommissionAddress: string, + minEntryStake: bigint, + maxAlgoPerPool: bigint, + poolsPerNode: number, + sunsettingOn: bigint, + sunsettingTo: bigint } @@ -188,10 +177,10 @@ export function ValidatorConfigFromTuple(abiTuple: [bigint, string, string, bigi } export type ValidatorCurState = { - numPools: uint16, - totalStakers: uint64, - totalAlgoStaked: uint64, - rewardTokenHeldBack: uint64 + numPools: number, + totalStakers: bigint, + totalAlgoStaked: bigint, + rewardTokenHeldBack: bigint } @@ -203,9 +192,9 @@ export function ValidatorCurStateFromTuple(abiTuple: [number, bigint, bigint, bi } export type PoolInfo = { - poolAppId: uint64, - totalStakers: uint16, - totalAlgoStaked: uint64 + poolAppId: bigint, + totalStakers: number, + totalAlgoStaked: bigint } @@ -217,9 +206,9 @@ export function PoolInfoFromTuple(abiTuple: [bigint, number, bigint]) { } export type ValidatorPoolKey = { - id: uint64, - poolId: uint64, - poolAppId: uint64 + id: bigint, + poolId: bigint, + poolAppId: bigint } @@ -231,8 +220,8 @@ export function ValidatorPoolKeyFromTuple(abiTuple: [bigint, bigint, bigint]) { } export type PoolTokenPayoutRatio = { - poolPctOfWhole: uint64[], - updatedForPayout: uint64 + poolPctOfWhole: [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint], + updatedForPayout: bigint } @@ -244,7 +233,7 @@ export function PoolTokenPayoutRatioFromTuple(abiTuple: [[bigint, bigint, bigint } export type NodePoolAssignmentConfig = { - nodes: [uint64[]][] + nodes: [[[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]], [[bigint, bigint, bigint]]] } @@ -259,7 +248,7 @@ export function NodePoolAssignmentConfigFromTuple(abiTuple: [[[[bigint, bigint, * Deploy-time template variables */ export type TemplateVariables = { - nfdRegistryAppId: uint64, + nfdRegistryAppId: bigint, } /** @@ -1291,8 +1280,8 @@ export abstract class ValidatorRegistryParamsFactory { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -1331,8 +1320,8 @@ export abstract class ValidatorRegistryParamsFactory { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -1464,22 +1453,22 @@ export class ValidatorRegistryFactory { appSpec: APP_SPEC, }) } - + /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */ public get appName() { return this.appFactory.appName } - + /** The ARC-56 app spec being used */ get appSpec() { return APP_SPEC } - + /** A reference to the underlying `AlgorandClient` this app factory is using. */ public get algorand(): AlgorandClientInterface { return this.appFactory.algorand } - + /** * Returns a new `AppClient` client for an app instance of the given ID. * @@ -1491,7 +1480,7 @@ export class ValidatorRegistryFactory { public getAppClientById(params: AppFactoryAppClientParams) { return new ValidatorRegistryClient(this.appFactory.getAppClientById(params)) } - + /** * Returns a new `AppClient` client, resolving the app by creator address and name * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note). @@ -1613,7 +1602,7 @@ export class ValidatorRegistryClient { appSpec: APP_SPEC, }) } - + /** * Checks for decode errors on the given return value and maps the return value to the return type for the given method * @returns The typed return value or undefined if there was no value @@ -1621,7 +1610,7 @@ export class ValidatorRegistryClient { decodeReturnValue(method: TSignature, returnValue: ABIReturn | undefined) { return returnValue !== undefined ? getArc56ReturnValue>(returnValue, this.appClient.getABIMethod(method), APP_SPEC.structs) : undefined } - + /** * Returns a new `ValidatorRegistryClient` client, resolving the app by creator address and name * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note). @@ -1630,7 +1619,7 @@ export class ValidatorRegistryClient { public static async fromCreatorAndName(params: Omit): Promise { return new ValidatorRegistryClient(await AppClient.fromCreatorAndName({...params, appSpec: APP_SPEC})) } - + /** * Returns an `ValidatorRegistryClient` instance for the current network based on * pre-determined network-specific app IDs specified in the ARC-56 app spec. @@ -1643,27 +1632,27 @@ export class ValidatorRegistryClient { ): Promise { return new ValidatorRegistryClient(await AppClient.fromNetwork({...params, appSpec: APP_SPEC})) } - + /** The ID of the app instance this client is linked to. */ public get appId() { return this.appClient.appId } - + /** The app address of the app instance this client is linked to. */ public get appAddress() { return this.appClient.appAddress } - + /** The name of the app. */ public get appName() { return this.appClient.appName } - + /** The ARC-56 app spec being used */ public get appSpec() { return this.appClient.appSpec } - + /** A reference to the underlying `AlgorandClient` this app client is using. */ public get algorand(): AlgorandClientInterface { return this.appClient.algorand @@ -1727,7 +1716,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -1748,7 +1737,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -1762,7 +1751,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -1776,7 +1765,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1788,7 +1777,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1800,7 +1789,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1812,7 +1801,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -1826,7 +1815,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -1843,7 +1832,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1855,7 +1844,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -1872,7 +1861,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -1886,7 +1875,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -1900,7 +1889,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -1916,7 +1905,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -1928,7 +1917,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2027,8 +2016,8 @@ export class ValidatorRegistryClient { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -2061,8 +2050,8 @@ export class ValidatorRegistryClient { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -2107,7 +2096,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -2218,7 +2207,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -2239,7 +2228,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -2253,7 +2242,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -2267,7 +2256,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2279,7 +2268,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2291,7 +2280,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2303,7 +2292,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -2317,7 +2306,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -2334,7 +2323,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2346,7 +2335,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -2363,7 +2352,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -2377,7 +2366,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -2391,7 +2380,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -2407,7 +2396,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2419,7 +2408,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2518,8 +2507,8 @@ export class ValidatorRegistryClient { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -2552,8 +2541,8 @@ export class ValidatorRegistryClient { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -2598,7 +2587,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -2713,7 +2702,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -2735,7 +2724,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -2750,7 +2739,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -2765,7 +2754,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2778,7 +2767,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2791,7 +2780,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2804,7 +2793,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -2819,7 +2808,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -2837,7 +2826,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2850,7 +2839,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -2868,7 +2857,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -2883,7 +2872,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -2898,7 +2887,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -2915,7 +2904,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -2928,7 +2917,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3034,8 +3023,8 @@ export class ValidatorRegistryClient { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -3070,8 +3059,8 @@ export class ValidatorRegistryClient { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. @@ -3119,7 +3108,7 @@ export class ValidatorRegistryClient { /** * Makes a call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -3176,8 +3165,18 @@ export class ValidatorRegistryClient { } /** - * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. + * Clone this app client with different params * + * @param params The params to use for the the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value. + * @returns A new app client with the altered params + */ + public clone(params: CloneAppClientParams) { + return new ValidatorRegistryClient(this.appClient.clone(params)) + } + + /** + * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getMbrAmounts()(uint64,uint64,uint64,uint64)` ABI method. + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the MBR amounts needed for various actions: @@ -3199,7 +3198,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getProtocolConstraints()(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters. @@ -3214,7 +3213,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getNumValidators()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Returns the current number of validators @@ -3229,7 +3228,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getValidatorConfig(uint64)(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3242,7 +3241,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getValidatorState(uint64)(uint16,uint64,uint64,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3255,7 +3254,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getValidatorOwnerAndManager(uint64)(address,address)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3268,7 +3267,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getPools(uint64)(uint64,uint16,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Return list of all pools for this validator. @@ -3283,7 +3282,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getPoolAppId(uint64,uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or @@ -3301,7 +3300,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getPoolInfo((uint64,uint64,uint64))(uint64,uint16,uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3314,7 +3313,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getCurMaxStakePerPool(uint64)uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Calculate the maximum stake per pool for a given validator. @@ -3332,7 +3331,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `doesStakerNeedToPayMBR(address)bool` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount @@ -3347,7 +3346,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getStakedPoolsForAccount(address)(uint64,uint64,uint64)[]` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the staked pools for an account. @@ -3362,7 +3361,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getTokenPayoutRatio(uint64)(uint64[24],uint64)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token @@ -3379,7 +3378,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getNodePoolAssignments(uint64)((uint64[3])[8])` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3392,7 +3391,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `getNFDRegistryID()uint64` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * @param params The params for the smart contract call @@ -3405,7 +3404,7 @@ export class ValidatorRegistryClient { /** * Makes a readonly (simulated) call to the ValidatorRegistry smart contract using the `findPoolForStaker(uint64,address,uint64)((uint64,uint64,uint64),bool,bool)` ABI method. - * + * * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction. * * Finds the pool for a staker based on the provided validator id, staker address, and amount to stake. @@ -4100,8 +4099,8 @@ export type ValidatorRegistryComposer = { * * Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc. The caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself. - - + + [ ONLY OWNER OR MANAGER CAN call ] * @@ -4132,8 +4131,8 @@ export type ValidatorRegistryComposer = { It would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of their 'current' stake which changes as part of the payouts themselves (and people could be changing stake during the epoch updates across pools) - - + + Multiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple times in same epoch. Just return. diff --git a/ui/src/utils/tests/fixtures/validators.ts b/ui/src/utils/tests/fixtures/validators.ts index 1e0c7738..bb1b35a9 100644 --- a/ui/src/utils/tests/fixtures/validators.ts +++ b/ui/src/utils/tests/fixtures/validators.ts @@ -62,7 +62,16 @@ export const MOCK_VALIDATOR_1_POOLS: LocalPoolInfo[] = [ ] export const MOCK_VALIDATOR_1_POOL_ASSIGNMENT: NodePoolAssignmentConfig = { - nodes: [[[70000000000000n, 0n, 0n]], [[2000000000000n, 0n, 0n]], [[0n, 0n, 0n]]], + nodes: [ + [[70000000000000n, 0n, 0n]], + [[2000000000000n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + ], } export const MOCK_VALIDATOR_2_CONFIG: ValidatorConfig = { @@ -105,7 +114,16 @@ export const MOCK_VALIDATOR_2_POOLS: LocalPoolInfo[] = [ ] export const MOCK_VALIDATOR_2_POOL_ASSIGNMENT: NodePoolAssignmentConfig = { - nodes: [[[1000n, 0n, 0n]], [[0n, 0n, 0n]]], + nodes: [ + [[1000n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + [[0n, 0n, 0n]], + ], } const { id: validator1Id, ...validator1Config } = MOCK_VALIDATOR_1_CONFIG